どの画像がどの/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

もう1つの移植可能なオプションは、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 ディレクトリにマップされます。

関連情報