NAS 領域の CIFS をアンマウントした時の動作
NAS 側から強制的に切り離す(共有解除)すると、
- 所有者情報やら size が全部 ? になって ls しても「そのようなデバイスやアドレスはありません」になる(即座にエラーが返される)。
- マウントしっぱだからタイムアウトまで待つとかじゃなくてアクセス即時エラー返してくれる、意外と親切。
なんらかの理由でハングアップして、CIFS VFS のエラーとしてカーネルに通知されると
- echo 0 > /proc/sys/kernel/hung_task_timeout_secs” disables this message.
- /proc/sys/kernel/hung_task_timeout_secs に記述された数値秒だけ待ってくれる、超過するとタイムアウト(デフォルト 120 秒)。
- マウントポイントを(再帰的に)含む位置から ls とか発行すると、hung_task_timeout_secs 秒数分待たされ地獄。
- dmesg にエラーが出る。
普通に umount コマンドを発行すると、
- マウント先が動作しているかどうかにかかわらずマウント解除されて、ただのマウントポイント跡地になる。
というわけで、ファイル名変換を考えなくてよかったので CIFS 使ってましたが、サーバと NAS でエンコード合わせてなるべく NFS 使うようにします。
追記
そもそも CIFS VFS がカーネルに通知されるレベルでぶっ壊れるのがおかしいので、普通に CIFS 使えばいいだろってレベルだった。
マウントポイント以下にマルチバイト文字が
- 含まれる可能性があるなら CIFS
- 含まれる可能性がないなら NFS
と使いわけよう。