バンドルマウントの取り外しを妨げる要因は何ですか?

バンドルマウントの取り外しを妨げる要因は何ですか?

私が経験している問題は、マウントポイントが忙しくて削除できないことです。通常、lsofまたはFuserはどのプロセスがそれを使用しているかを示しますが、これはバインドマウントであるため、lsofとFuserはどのプロセスが元のマウントポイントとバインドマウントポイントを使用しているかを示します。

前任者:

ファイルシステムをマウントします。

$ sudo mkdir /mnt/mount /mnt/bind
$ sudo mount /dev/sdb1 /mnt/mount
$ sudo mount -o bind /mnt/mount /mnt/bind

/mnt/mountが忙しくてマウント解除できないようにするプロセスを開始します。

$ sudo dd if=/dev/zero of=/mnt/mount/testfile bs=1 oflag=dsync

フューザの内容を確認してください。

$ sudo fuser -m /mnt/mount
/mnt/mount:           4022
$ sudo fuser -m /mnt/bind
/mnt/bind:            4022

lsofが何を言っているのかを確認してください。

$ sudo lsof +D /mnt/mount
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dd      4022 root    1w   REG   8,17    28545   12 /mnt/mount/testfile

$ sudo lsof +D /mnt/bind
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
dd      4022 root    1w   REG   8,17    40682   12 /mnt/bind/testfile

両方を削除してみてください。

$ sudo umount -v *
umount: /mnt/bind (/mnt/mount) unmounted
umount: /mnt/mount: target is busy

同じ手順に従いますが、ddにファイルを/mnt/bind/testfileに書き込むように指示すると、/mnt/mountのアンマウントは成功しますが、/mnt/bindのアンマウントは失敗します。

明らかに、プロセスが使用するマウントポイント(この場合はdd)は異なりますが、lsofとfusionrに違いはありません。これができることはありますか?

答え1

wurtelのおかげで、これは明らかになりました。

私の質問で使用されているfusionrとlsofは、両方のマウントポイントを使用するのと同じプロセスを示していますが、これらのコマンドの1つがPIDを通知した後、次のコマンドを実行します。

lsof -p $PID

どのマウントポイントが使用されているかを示します。 grepを少しだけすれば終わりです。

関連情報