再起動の順序は重要です。クライアントがこの状況になった後、サーバーを再起動することができます。古いNFSハンドルは、クライアントが開いているファイルを持っているが、サーバーがファイルハンドルを認識しなくなったことを示します。場合によっては、NFSはタイムアウト後にデータ構造をクリーンアップします。それ以外の場合は、NFSデータ構造を自分で消去し、その後NFSを再起動する必要があります。これらの構造が配置される場所は、多少O / Sに依存します。
最初にサーバーでNFSを再起動してから、クライアントで再起動してください。これにより、ファイルハンドルがクリアされる場合があります。
他のサーバーからファイルを開いてNFSサーバーを再起動することはお勧めしません。サーバーで開いているファイルが削除されている場合、これは特に問題です。サーバーは再起動するまでファイルを開いたままにすることができますが、再起動するとサーバー側のメモリ内ファイルハンドルが削除されます。その後、クライアントはファイルを開くことができなくなります。
サーバーからどのマウントが使用されたかを判断することは難しく、信頼性がありません。このshowmount -a
オプションはいくつかのアクティブなマウントを表示する場合がありますが、それらすべてを報告しない場合があります。ロックされたファイルは簡単に識別できますが、ロックを有効にする必要があり、クライアントソフトウェアに依存してファイルをロックします。
lsof
クライアントで使用して、マウント上でファイルを開いているプロセスを識別できます。
NFSマウントでhard
とintr
マウントオプションを使用します。このhard
オプションにより、IOが無期限に再試行されます。このintr
オプションを使用すると、NFS IOの完了を待機しているプロセスを強制終了できます。
hard, intr
は良いアドバイスです。ただし、NFSでは試行ごとにタイムアウトが2倍になることに注意してください。だから、あなたはベストセットtimeo=1
などretrans=5
。これにより、NFSの再起動後にNFSサーバーに大きな負荷がかかることに注意してください。NFSサービスを頻繁に再起動しないようにしてください;)