파티션된 전체 디스크를 다른 디스크의 파티션에 복사했습니다. 데이터에 어떻게 접근하나요?

파티션된 전체 디스크를 다른 디스크의 파티션에 복사했습니다. 데이터에 어떻게 접근하나요?

여러 파티션이 있는 하드 드라이브가 dd두 번째 하드 드라이브의 파티션에 추가됩니다(파티션은 첫 번째 하드 드라이브를 완전히 포함할 만큼 충분히 큽니다). 두 번째 드라이브의 데이터에 액세스할 수 있습니까? 그렇다면 어떻게 해야 합니까?

편집: 명확히 하기 위해 - 이 문제에 대한 더 나은 용어는 "중첩 파티셔닝"이라고 생각합니다. 여기에 이미지 설명을 입력하세요. 나는 또한 다음과 같은 대답을 얻었습니다.중첩된 파티션 테이블을 허용하는 방법이 있나요?- 내 사용 사례는 이전 단락과 유사합니다. 가능한 해결책은 장치 매퍼를 사용하는 것입니다. 그러나 데이터에 접근하는 "더 쉬운" 방법은 없는 것 같습니다.

답변1

아직 언급되지 않았다는 사실에 조금 놀랐지만 Linux에서 기본적으로 이 작업을 수행할 수 있는 두 가지 도구가 있습니다.

첫 번째 것은 이라고 불리며 partx, util-linux존재하는 (거의) 모든 Linux 설치의 일부인 소프트웨어 패키지의 일부입니다. partx -s - /path/to/disk커널이 인식하는 디스크의 모든 파티션이 나열됩니다. 옵션 이 포함된 유사한 구문은 -a커널에 이러한 파티션에 대한 장치 노드를 생성하도록 지시하는 반면, 해당 구문은 해당 -d장치 노드가 있는 경우 해당 장치 노드를 삭제합니다. -경로를 파티션이 아닌 디스크로 처리하도록 하려면 lone을 사용해야 합니다 .

영감을 받은 또 다른 도구 partxkpartx. 이는 Linux에서 사용할 수 있는 블록 장치 다중 경로 지정 도구의 일부입니다(일반적으로아니요기본적으로 설치되지만 multipath-tools)와 같은 패키지 이름을 가진 모든 주요 배포판에 의해 패키지됩니다. 대신 partx커널이 파티션 테이블을 처리하고 kpartx파티션 테이블 자체를 읽은 다음 각 파티션에 대한 장치 매퍼 대상을 생성하는 방법을 탐색합니다. 이를 통해 partx평소보다 더 많은 상황에서 작동할 수 있습니다. 여기서 구문은 파티션을 추가하거나 삭제 하는 것이 아니라 파티션을 kpartx -l /path/to/device나열하는 것입니다 .-a-l-d

이는 이미지 파일 및/또는 루핑 장치를 사용하는 것보다 더 효율적인 경우가 많습니다.

답변2

중첩된 파티션을 본 적이 없는데 이미지 파일을 사용하여 마운트하면 어떨까요?

dd if=/dev/disk of=/big/disk/disk.img 

그런 다음 루프백을 사용하여 설치할 수 있습니다.

losetup /dev/loop0 /big/disk/disk.img
mount /dev/loop0p1 /mnt/disk_partition1
mount /dev/loop0p2 /mnt/disk_partition2

그림과 같이 디스크 이미지의 개별 파티션을 마운트할 수 있습니다.

답변3

먼저 losetup -f자유 루프 장치를 식별하는 데 사용됩니다(다음과 같이 출력됩니다 /dev/loop0). 그것을 이라고 부르자 /dev/loopN.

그런 다음 losetup -P /dev/loopN /dev/<partition_1_device>.

이제 중첩된 파티션 테이블에 지정된 파티션은 /dev/loopNp1등을 통해 액세스할 수 있습니다. /dev/loopNp2이러한 장치 이름을 사용하여 마운트할 수 있습니다.

설정을 취소하려면(재부팅 필요 없음) 중첩 파티션을 마운트 해제하고 를 실행합니다 losetup -d /dev/loopN.

답변4

내 경험상 답은 이렇다:

저는 dd를 사용하여 한 컴퓨터에서 다른 컴퓨터로 디스크를 여러 번 마이그레이션했으며 파티션/볼륨이 Windows를 실행하든 Linux를 실행하든 동일하게 작동합니다.

전체 디스크가 복사되면(파일 할당 테이블 포함) 디스크를 부팅하고 볼륨에 액세스할 수 있습니다.

또한 clonezilla를 사용하여 dd 직접 프로세스보다 이식성과 속도를 높였으므로 가상 머신이 아닌 물리적 머신을 다루는 경우 이를 확인해 보는 것이 좋습니다.

이것은 디스크 교체 시나리오에서 나에게 효과적이었지만(BIOS가 새 디스크에서 부팅하도록 구성된 경우) 디스크를 다른 컴퓨터/VM에 연결하고 다른 컴퓨터와 마찬가지로 볼륨 디스크를 마운트할 수 없는 이유는 없습니다. 컴퓨터.

시스템을 재부팅하고 싶지 않고 시스템이 일반적으로 변경 사항을 확인할 수 있는 경우 디스크를 변경할 때마다 이 명령을 사용합니다. 그렇지 않은 경우 다시 시작하면 항상 작동합니다.

for disk in /sys/class/scsi_disk/*; 
 do echo '1' > $disk/device/rescan; 
done

새 디스크와 볼륨이 작동 가능해지면(예: 운영 체제에서 확인) 다른 유틸리티를 사용하여 기본 파티션을 확장하여 나머지 디스크 공간을 채우거나 필요에 따라 추가 파티션/볼륨을 생성할 수 있습니다.

LVM 볼륨을 사용하는 경우 해당 볼륨을 시스템으로 가져와야 합니다. 다음 링크는 기타 유용한 정보를 제공할 수 있습니다.

관련 정보