web-dev-qa-db-ja.com

CIFSマウントが読み取り時にハングする

次のような一連のCIFSマウントに問題があります。

//192.168.10.2/remote-share /home/windows-shared/remote-share cifs defaults,user=xxx,password=xxx,uid=603,gid=603       0 0

この問題はしばらくすると発生します。通常は、ユーザーが朝にマシンを起動し、共有がリモートで動作しなくなった1日後です。

したがって、lsを実行しようとすると、次のようになります。

ls: cannot access /home/windows-shared/remote-share: Host is down

dmesgには何も関係ありません。これの問題は、システムのこの部分へのすべての読み取り呼び出しがハングするだけなので、解決策として、無期限にハングするのではなく、より速いエラーが発生することです。

mount.cifsのmanページを少し読んだ後、デフォルトではすべてのマウントがsoftであり、最終的にタイムアウトになることを示しています。問題は、タイムアウトするまでに時間がかかりすぎることです。

更新:

これらのパラメーターをmountコマンドに追加しても、効果はありませんでした。

soft,timeo=300,retrans=3
13

AutoFSを強くお勧めします。

これにより、ネットワーク共有がバックグラウンドで動的にマウントおよびマウント解除され、すべてユーザーに透過的です。切り替えを行うまで、モバイルデバイスのアンマウントと再マウントに問題がありました。

残念ながら、autofsの設定を過度に複雑にするガイドが多すぎます。あなたがUbuntuボックスを使用していると仮定して、それを設定する簡単な手順を次に示します。

ここにいくつかの非常に簡単な指示があります:

  • Apt-getからインストール:Sudo apt-get install autofs -y
  • /etc/auto.masterのすべてを削除し、次のものに置き換えます:/- /etc/auto.cifs --timeout=20 --ghost
  • 各マウントのauto.cifsに次のような1行を追加します:/mnt/LOCAL/MOUNT/PATH -fstype=cifs,rw,noperm,credentials=/etc/auto.credentials ://SERVER/MOUNT
  • /etc/auto.credentialsに、次のコンテンツを追加します:username=USERNAME password=PASSWORD
  • 最後に、Sudo service autofs restart

それでおしまい。

1
Ben Yanke

ほとんどの場合、遅延マウント解除を実行することで、少なくともハングしているマウントポイントを削除できます:umount -l //server/share。多分あなたはそれをサスペンドフックに入れることができます(私が理解しているように、あなたのマシンは夜間にサスペンドされ、数日間実行されますか?)

0
azrdev