web-dev-qa-db-ja.com

使用中のデバイスをマウント解除する方法

私は毎日複数のユーザーによってアクセスされているいくつかのsambaドライブを持っています。共有ドライブを(SQLテーブルから)認識し、それらをすべてのユーザーがアクセスできる特別なディレクトリにマウントするコードをすでに持っています。

SQLテーブルからドライブを削除した場合(事実上オフラインにした場合)、ビジー状態のデバイスをマウント解除する方法はありますか。これまでのところ、umountのどの形式でもうまくいかないことがわかりました。

データを破壊する可能性を無視する - 現在読み込まれているデバイスをマウント解除することは可能ですか?

174
Max

はい!!ビジー状態のデバイスをすぐに切り離す方法があります(ビジー状態で強制的にマウント解除できない場合でも)。後ですべてクリーンアップできます。

umount -l /PATH/OF/BUSY-DEVICE
umount -f /PATH/OF/BUSY-NFS(NETWORK-FILE-SYSTEM)

注:

  1. これらのコマンドは実行中のプロセスを中断させ、データの損失を招く可能性がありますOR破損しているオープンファイル。ターゲットのDEVICE/NFSファイルにアクセスするプログラムは、エラー[ORをスローする可能性があります。
  2. マウントされているフォルダ/ドライブ/デバイス内にない場合は、これらのコマンドを実行してください。
347
Amit Verma

可能であれば、プロセスをビジー状態にして識別し、プロセスを強制終了してから、samba共有をアンマウントして損傷を最小限に抑えます。

  • lsof | grep '<mountpoint of /dev/sda1>'(またはマウントされているデバイスがなんであれ)

  • pkill target_process(名前による忙しい手順を強制終了| kill PID | killall target_process

  • umount /dev/sda1(またはマウントされているデバイスがなんであれ)

79
Frank Tudor

マウント解除しようとしているときに、まだマウントされていないデバイスにいることを確認してください。

49
Luci

次のことを試してみてください、しかしそれを実行する前に-kフラグは実行中のプロセスをすべて終了させ、デバイスをビジー状態にします。

-iフラグは、殺す前にfuserに尋ねます。

fuser -kim /address  # kill any processes accessing file
unmount /address
39
user3751769

Exportfs -vを使用して、エクスポートされたNFSファイルシステムを確認してください。見つかった場合は、exportfs -d share:/ディレクトリで削除してください。これらはfuser/lsofリストには表示されず、umountが成功するのを妨げる可能性があります。

6
numberer6

umount2 をチェックしてください。

Linux 2.1.116では、umount2()システムコールが追加されました。これは、umount()と同様に、ターゲットをマウント解除しますが、操作の動作を制御する追加のフラグを許可します。

MNT_FORCE(Linux 2.1.116以降)ビジー状態でもアンマウントする。 (NFSマウントの場合のみ)MNT_DETACH(Linux 2.4.11以降)遅延マウント解除を実行します。マウントポイントを新しいアクセスに使用できないようにし、実際にマウントポイントがビジー状態にならなくなったらマウント解除を実行します。 MNT_EXPIRE(Linux 2.6.8以降)マウントポイントを期限切れとしてマークする。マウントポイントが現在使用されていない場合、このフラグを指定したumount2()への最初の呼び出しはエラーEAGAINで失敗しますが、マウントポイントは期限切れとしてマークされます。マウントポイントは、どのプロセスからもアクセスされない限り、期限切れのままです。 MNT_EXPIREを指定した2番目のumount2()呼び出しは、期限切れのマウントポイントをマウント解除します。このフラグは、MNT_FORCEまたはMNT_DETACHと一緒に指定することはできません。戻り値

成功すると、ゼロが返されます。エラーが発生した場合は-1が返され、errnoが適切に設定されます。

6
chown

何かうまくいったときのもう一つの選択肢は、/etc/fstabを編集し、noautoフラグを追加してマシンをリブートすることです。デバイスはマウントされず、何でもやり終わったら、フラグを外して再度リブートしてください。

0
jesjimher