여러 파티션이 있는 하드 드라이브가 dd
두 번째 하드 드라이브의 파티션에 추가됩니다(파티션은 첫 번째 하드 드라이브를 완전히 포함할 만큼 충분히 큽니다). 두 번째 드라이브의 데이터에 액세스할 수 있습니까? 그렇다면 어떻게 해야 합니까?
편집: 명확히 하기 위해 - 이 문제에 대한 더 나은 용어는 "중첩 파티셔닝"이라고 생각합니다. 나는 또한 다음과 같은 대답을 얻었습니다.중첩된 파티션 테이블을 허용하는 방법이 있나요?- 내 사용 사례는 이전 단락과 유사합니다. 가능한 해결책은 장치 매퍼를 사용하는 것입니다. 그러나 데이터에 접근하는 "더 쉬운" 방법은 없는 것 같습니다.
답변1
아직 언급되지 않았다는 사실에 조금 놀랐지만 Linux에서 기본적으로 이 작업을 수행할 수 있는 두 가지 도구가 있습니다.
첫 번째 것은 이라고 불리며 partx
, util-linux
존재하는 (거의) 모든 Linux 설치의 일부인 소프트웨어 패키지의 일부입니다. partx -s - /path/to/disk
커널이 인식하는 디스크의 모든 파티션이 나열됩니다. 옵션 이 포함된 유사한 구문은 -a
커널에 이러한 파티션에 대한 장치 노드를 생성하도록 지시하는 반면, 해당 구문은 해당 -d
장치 노드가 있는 경우 해당 장치 노드를 삭제합니다. -
경로를 파티션이 아닌 디스크로 처리하도록 하려면 lone을 사용해야 합니다 .
영감을 받은 또 다른 도구 partx
는 kpartx
. 이는 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 볼륨을 사용하는 경우 해당 볼륨을 시스템으로 가져와야 합니다. 다음 링크는 기타 유용한 정보를 제공할 수 있습니다.