私は4台のコンピューターを持っており、そのうちの2台(たとえばn1とn2)にNFS4サーバーをインストールしてエクスポートしました。
/export 10.0.0.0/16(rw,fsid=0,no_subtree_check,async,insecure,no_root_squash)
/export/home 10.0.0.0/16(rw,fsid=0,no_subtree_check,async,insecure,no_root_squash)
これで、n1とn2の両方の構成が同じになり、これらのリソースを任意のコンピューター(/ home/n1と/ home/n2)にエラーなしでマウントおよびマウント解除できますが、アクセスできるのはn1のリソースのみです。 n2からディレクトリをls
しようとすると、「古いNFSファイルハンドル」というエラーが表示されます。
私のネットワークは正しく機能しています。ファイアウォールはありません。どちらも同じ構成で同じUbuntu10.04サーバーバージョンです。
ログ内のクライアントマシンで、次のエラーが発生します。
[585039.584017] NFS: server 10.0.1.4 error: fileid changed
[585039.584019] fsid 0:16: expected fileid 0x1ba54e2, got 0x3f20001
サーバーマシンで確認しましたが、この0x3f20001は/export
ディレクトリのIDで、0x1ba54e2は/export/home
です。
私のfstabは次のようになります。
10.0.1.4:/home /home/n2 nfs4 _netdev,auto 0 0
IP10.0.1.4はn2ホストに属しています。
何か案が?
Fstabのバインドが間違っていることが問題だったようです。以前に設定していたときに、誤ってsrcとdestをn2のfstabで/home/n2
にバインドしたときに交換しました。次に、いくつかのホームディレクトリを移動し、このバインドを正しいものに変更しました。しかし、おそらく私はそれを再マウントしませんでした(私はそうすることを忘れていたに違いありません)。
パッケージを更新しようとしましたが、再起動後、/export/home
が空で、すべてのデータがn2の/home/n2
にあることに気付きました。それで再びそれを/export/home
に移動し、すべてが正しく機能していました。
したがって、NFSには、他のディレクトリからバインドされたディレクトリのエクスポートで問題が発生したと思います。
Fsidはエクスポートごとに異なる必要があり、構成では0に設定されています。
サーバーごとにエクスポートごとに異なるfsidを設定するようにしてください。