web-dev-qa-db-ja.com

nfsサーバーがダウンしたときにLinuxに文句を言わないようにするにはどうすればよいですか?

Linuxにnfs共有の再接続をあきらめる方法はありますか?私は現在fstabにそれらを持っています。起動時にマウントを試み、その後は手動でのみ再接続してもらいたいのですが。以下で不満を言っている共有は、常にオンになっていないマシン上にあります。

$ tail /var/log/syslog
Mar 17 10:13:26 Inspiron kernel: [429184.924089] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:30 Inspiron kernel: [429189.132255] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:37 Inspiron kernel: [429196.156051] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:37 Inspiron kernel: [429196.156072] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:42 Inspiron kernel: [429200.364084] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:46 Inspiron kernel: [429204.572092] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:53 Inspiron kernel: [429211.596078] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:53 Inspiron kernel: [429211.596122] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:13:57 Inspiron kernel: [429215.804094] nfs: server 192.168.1.200 not responding, timed out
Mar 17 10:14:01 Inspiron kernel: [429220.012094] nfs: server 192.168.1.200 not responding, timed out



$ cat /etc/fstab 
192.168.1.200:/mnt/Raid/TV_SHOWS /home/Shares/TV_SHOWS nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user
192.168.1.200:/mnt/Raid/MOVIES /home/Shares/Movies nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user
192.168.1.200:/mnt/Raid/DocuTV /home/Shares/DocuTV nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user

更新:

追加のフラグを使用してfstabを変更しましたが、何らかの理由で問題が引き続き発生しています。共有がマウントされてnfsサーバーがダウンすると、マウントを解除するだけでなく、接続の再確立を試み続けます。 この問題は、共有がマウントされているときにnfsサーバーがダウンした場合にのみ発生すると思います。

192.168.1.200:/mnt/Raid/TV_SHOWS /home/Shares/TV_SHOWS nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user,retry=0,nofail
192.168.1.200:/mnt/Raid/MOVIES /home/Shares/Movies nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user,retry=0,nofail
192.168.1.200:/mnt/Raid/DocuTV /home/Shares/DocuTV nfs rsize=8192,wsize=8292,timeo=14,intr,rw,user,retry=0,nofail

PDATE 2:試しましたbg、soft、retrans = 100、retry = 0、nofail

接続が失われたときにstillは共有をアンマウントしていないようです。数分ごとに数分各共有のタイムアウトメッセージ。

解決策:いくつかの変更を加えて、以下の対蹠地の指示に従いました

auto.master
/- /etc/auto.shares --timeout=60

ベースマウントポイントは、/ home/user/Sharesではなく/です。これにより、autofs + fstabを同時に使用していたいくつかの問題が修正されました。共有は60秒後にアンマウントされます。

auto.shares
/home/user/Shares/TV_SHOWS    -rsize=8192,wsize=8292,timeo=14,intr,rw,uid=1000,gid=1000    192.168.1.200:/mnt/Raid/TV_SHOWS
/home/user/Shares/Movies      -rsize=8192,wsize=8292,timeo=14,intr,rw,uid=1000,gid=1000    192.168.1.200:/mnt/Raid/MOVIES
/home/user/Shares/DocuTV      -rsize=8192,wsize=8292,timeo=14,intr,rw,uid=1000,gid=1000    192.168.1.200:/mnt/Raid/DocuTV

NfsサーバーIPの後のコロンに注意してください。 UID/GIDは、ルートではなくユーザーとして共有をマウントします。

2
leetwanker

編集:この問題は、共有が正常にマウントされた後にNFSサーバーがダウンした場合にのみ発生するため、前の回答は役に立ちません。

私の唯一の提案は、ブート時にマウントするのではなく、autofsを使用してNFS共有をオンデマンドでマウントすることです。このように、システムは、NFS共有にアクセスしようとしたときにのみマウントを試み、非アクティブな期間が経過すると自動的にマウントを解除します。

autofsの使用方法に関するガイドがあります ここ ですが、以下に、取得するために実行する必要のある手順を示します何かが実行されています。

  1. autofsがインストールされていることを確認してください。パッケージは通常、単に「autofs」と呼ばれます

    Ubuntuでは、rootとしてapt-get install autofsを実行することでインストールできます。

  2. 次のエントリを(rootとして)/etc/auto.masterに追加します

    /home/Shares /etc/auto.shares
    
  3. 次の内容でファイル/etc/auto.shares(rootとして)を作成します。

    TV_SHOWS    -rsize=8192,wsize=8292,timeo=14,intr,rw    192.168.1.200:/mnt/Raid/TV_SHOWS
    Movies      -rsize=8192,wsize=8292,timeo=14,intr,rw    192.168.1.200:/mnt/Raid/MOVIES
    DocuTV      -rsize=8192,wsize=8292,timeo=14,intr,rw    192.168.1.200:/mnt/Raid/DocuTV
    
  4. これらのディレクトリの静的マウントポイントを/etc/fstabから削除します

  5. Autofsサービスをリロードします。 Ubuntuでは、rootとしてservice reload autofsを実行してこれを行うことができます。

  6. それが機能することを確認するためにテストします。 ls /home/Shares/TV_SHOWSを実行して、ファイルが一覧表示されるかどうかを確認します。


:質問に追加情報が追加されたため、次の回答は適用されなくなりました。ただし、将来誰かに役立つ場合に備えて、ここに残しておきます。


/ etc/fstabの全体にnofailオプションを追加してみてください。

マウントマンページ から:

nofail

    Do not report errors for this device if it does not exist.

これにより、システムは起動時にデバイスのマウントを試みますが、マウントできない場合はあきらめます。その後、後で手動でデバイスのマウントを試みることができます。

役立つ可能性のある別のオプションがあります:retrynfs manpage

retry=n

    The number of minutes that the mount(8) command retries an NFS mount
    operation in the foreground or background before giving up. If this
    option is not specified, the default value for foreground mounts is 2
    minutes, and the default value for background mounts is 10000 minutes
    (80 minutes shy of one week). If a value of zero is specified, the
    mount(8) command exits immediately after the first failure.

デフォルトでは、NFSマウントはフォアグラウンドマウントであるため、2分間の試行後に失敗するはずです。いつでも手動でこれを特定の時間に設定して、NFSサーバーが利用できない場合に、より迅速に失敗するようにすることができます。これは、nofailオプションと組み合わせて、希望どおりに機能させることができます。

4
antipode