kpartx:マッピングを削除した後にディスクをマウント解除できません。

kpartx:マッピングを削除した後にディスクをマウント解除できません。

マッピングを作成して削除したパーティションをマウント解除できませんkpartx

# mount /dev/sdb1 usb/
# cd usb/

# kpartx -a -p sda -r -s -v sda.img
add map loop0sda1 (254:5): 0 16777216 linear 7:0 2048
add map loop0sda2 (254:6): 0 16777216 linear 7:0 16779264
add map loop0sda3 (254:7): 0 440401920 linear 7:0 33556480
add map loop0sda4 (254:8): 0 26159792 linear 7:0 473958400

# kpartx -dv /dev/loop0
del devmap : loop0sda4
del devmap : loop0sda3
del devmap : loop0sda2
del devmap : loop0sda1

# cd ..
    
#umount usb/
target is busy.

私が知っている限り、このコマンドはkpartx -dv /dev/loop0マッピングを正しく削除してから削除されたものを見ることができます/dev/mapper/。ただし、次のレポートのため、ディスクをマウント解除できません。target is busy.

lsofこのディスクには開いているファイルがないと表示されます。

# lsof +D 

すべてのマッピングを解除した後にディスクをマウント解除できないのはなぜですか?

答え1

2番目のコマンドは、引数として提供されたループデバイスが元々このループデバイスの作成をトリガーしたブロックイメージファイルではないという点で、最初のコマンドとまったく逆ではありません。

その後、次のように実行します。

losetup -l /dev/loop0

おそらく、次のような結果が出ます。

NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE            DIO LOG-SEC
/dev/loop0         0      0         0  1 /path/to/usb/sda.img   0     512

これにより、リソースがsda.imgファイルとそれを提供するファイルシステムにバインドされ、マウント解除が防止されます。

この状態で残りのリソースを解放するには、次のようにします。

losetup -d /dev/loop0

何をすべきですか?

 kpartx -dv /path/to/usb/sda.img

今回は以下を提供する必要があります。

del devmap : loop0sda4
del devmap : loop0sda3
del devmap : loop0sda2
del devmap : loop0sda1
loop deleted : /dev/loop0

関連情報