어떤 이미지가 어떤/dev/loop에 속하는지 찾는 방법은 무엇입니까?

어떤 이미지가 어떤/dev/loop에 속하는지 찾는 방법은 무엇입니까?

나는 종종 드라이브 이미지를 생성하는데, 이는 문제의 드라이브에 대한 추가 복사본을 만든 다음 드라이브 자체가 아닌 이미지 작업을 의미합니다.

대부분의 작업에서는 kpartx를 사용하여 드라이브의 파티션을 /dev/mapper/ 아래의 장치에 매핑합니다. 어떤 매핑이 어떤 이미지에 속하는지 찾을 수 있는 방법이 있는지 궁금합니다.

생각해 보세요:

root@vyvyan:/tmp# kpartx -a -v Image1 
add map loop1p1 (254:4): 0 10240 linear /dev/loop1 2048
add map loop1p2 (254:5): 0 10240 linear /dev/loop1 12288
add map loop1p3 (254:6): 0 52848 linear /dev/loop1 22528
root@vyvyan:/tmp# kpartx -a -v Image2
add map loop2p1 (254:7): 0 33508 linear /dev/loop2 2048
add map loop2p2 (254:8): 0 39820 linear /dev/loop2 35556

이제 어떤 이미지가 어떤 지도로 가는지 잊어버렸다고 가정해 보겠습니다. 어떤 이미지가 어디로 가는지 알려주기 위해 kpartx나 커널 등을 얻을 수 있는 방법이 있나요?

편집하다그리고 kpartx에서 매핑을 추가할 때 실수로 이미지 파일을 rm한 경우 어떻게 매핑을 삭제할 수 있나요? kpartx는 실제 이미지를 표시하려고 합니다.

답변1

losetup(일반적으로 설정하는 데 사용되는 명령)은 다음을 알려줍니다.

$ /sbin/losetup --list
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         0  0 /var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso

-a이전 버전에서는 대신 use 를 사용해야 할 수도 있으며 --list, 이는 더 이상 사용되지 않는 다른 형식으로 출력됩니다.

정보 출처 /sys:

$ cat /sys/class/block/loop0/loop/backing_file 
/var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso

또 다른 이식 가능한 옵션은 udisk에서 가져오는 것입니다.

$ udisksctl info -b /dev/loop0
/org/freedesktop/UDisks2/block_devices/loop0:
  org.freedesktop.UDisks2.Loop:
    Autoclear:          false
    BackingFile:        /var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso
    SetupByUID:         1000

losetup-d또한 이 옵션을 사용하여 해당 항목을 기꺼이 제거해 드리겠습니다 . 여기에는 루프 장치만 인수로 필요하며 파일/장치 지원에는 관심이 없습니다.

답변2

나는 또한 다음을 추가할 것이다. kpartx를 사용하여 장치 맵의 위치를 ​​검색할 수 있습니다. 예를 들어:

%> sudo kpartx -lv /dev/loop0
loop0p1 : 0 122880 /dev/loop0 8192
loop0p2 : 0 8257536 /dev/loop0 131072

이는 파일이 매핑된 위치를 잊었을 때 유용합니다. 물론 loop0p1과 loop0p2는 /dev/mapper 디렉토리에 매핑됩니다.

관련 정보