hdd.img
하드 드라이브의 원시 이미지인 파일이 있습니다 . 하드 드라이브에는 BIOS/DOS 파티션 테이블이 있고 두 번째 파티션은 논리 볼륨을 생성하기 위한 LVM용 단일 물리 볼륨으로 설정됩니다.
내 목표는 이러한 논리 볼륨으로 표시되는 파티션/파일 시스템에 액세스하는 것입니다.
hdd.img
다음 명령을 사용하여 루프백 블록 장치 매핑을 설정했습니다.
$ sudo losetup --partscan -f hdd.img
이로 인해 루프백 장치에서 이미지에 포함된 두 개의 파티션이 표시되었습니다 loop17
.
$ lsblk | grep 'loop17'
loop17 7:17 0 30G 0 loop
├─loop17p1 259:4 0 1G 0 loop
└─loop17p2 259:5 0 29G 0 loop
이제 질문은입니다. 실제로 액세스하려는 논리 볼륨을 찾기 위해 /dev/loop17p2를 검색하도록 시스템에 어떻게 지시합니까?
고쳐 쓰다
패키지를 설치 kpartx
하고 다음을 수행하십시오.
$ sudo losetup -f hdd.img
$ sudo kpartx -a /dev/loop17
위에 포함된 볼륨에 대한 lvm 매핑이 실제로 생성되었습니다 /dev/loop17p2
. 이것이 즉각적인 요구 사항을 해결하지만 vgscan
논리 볼륨이 포함된 블록 장치를 이미 생성한 후에 왜 작동하지 않는지 아는 것이 좋을 것입니까 ?losetup --partscan -f hdd.img
/dev/loop17p2
답변1
사용 lvscan
. vgscan
볼륨 그룹을 검색 중입니다...
답변2
이 명령에는 스캔 결과를 캐시에 저장하는 데 사용해야 하는 vgscan
명령줄 옵션이 있어 후속 호출에서 맵을 생성할 수 있습니다.--cache
vgchange -ay <vg>
간단히 말해서 이것은 작동합니다:
$ sudo losetup --partscan -f hdd.img
$ sudo vgscan --scan
$ sudo vgchange -ay <vg>
이는 vg
볼륨 그룹(vgscan)에서 보고하는 볼륨 그룹 중 하나입니다.
그러나 이것은아니요일하다:
$ sudo losetup --partscan -f hdd.img
$ sudo vgscan
$ sudo vgchange -ay <vg>
두 번째 명령은 스캔 결과 를 --cache
.--cache
캐시됨실제 스캔을 수행하는 대신 값을 사용합니다.