web-dev-qa-db-ja.com

ディレクトリにアクセスしようとすると「古いNFSファイルハンドル」エラーが発生します

私は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ホストに属しています。

何か案が?

1
klew

Fstabのバインドが間違っていることが問題だったようです。以前に設定していたときに、誤ってsrcとdestをn2のfstabで/home/n2にバインドしたときに交換しました。次に、いくつかのホームディレクトリを移動し、このバインドを正しいものに変更しました。しかし、おそらく私はそれを再マウントしませんでした(私はそうすることを忘れていたに違いありません)。

パッケージを更新しようとしましたが、再起動後、/export/homeが空で、すべてのデータがn2の/home/n2にあることに気付きました。それで再びそれを/export/homeに移動し、すべてが正しく機能していました。

したがって、NFSには、他のディレクトリからバインドされたディレクトリのエクスポートで問題が発生したと思います。

1
klew

Fsidはエクスポートごとに異なる必要があり、構成では0に設定されています。

サーバーごとにエクスポートごとに異なるfsidを設定するようにしてください。

1
jon_d