Loop-Device
如何找到哪些圖像屬於哪個 /dev/loop?
我經常使用映像驅動器,這意味著對有問題的驅動器進行 dd-copy,然後處理映像而不是驅動器本身。
對於大多數工作,我使用 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 希望出現實際圖像。
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
請注意,對於舊版本,您可能不願意使用 use
-a
而不是--list
,並且此輸出以不同且現已棄用的格式。資料來自
/sys
:$ cat /sys/class/block/loop0/loop/backing_file /var/tmp/jigdo/debian-7.6.0-amd64-CD-1.iso
另一個可能更便攜的選項是從 udisks 獲取它:
$ 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
選項為您刪除它們。那隻需要循環設備作為參數;它不關心支持文件/設備。