web-dev-qa-db-ja.com

他のマウントからのファイルを表示するNFSマウント

社内で作成されたカスタムアプリケーションを介して復元できるように、NFSを介してバックアップしているサーバーにエクスポートするZFSスナップショットを保持するサーバーがあります。問題は次のとおりです。

注:理由により、ZFS組み込みNFSを使用していないので、使用するように言わないでください!

これはすべてNFSv4です
ホストはCentOS6.2を実行していますクライアントはCentOS5.7を実行しています

ホスト上でデフォルトで8つのnfsサーバーが起動しています。

NFS共有を保持するバックアップサーバーでは、ディレクトリ構造を必要なだけ深くトラバースして、予想されるすべてのファイルを確認できます。

クライアントでは、ファイルシステムをトラバースできますが、2つ以上のディレクトリを深く移動すると、別のサーバーからのファイルが表示されることがあります。

次に例を示します。

[NFSSERVER /nfs/share]#  ls -l
total 60
drwx--x--x 30 root root 4096 Feb 25 00:15 20120225
drwx--x--x 30 root root 4096 Feb 26 00:05 20120226
drwx--x--x 30 root root 4096 Feb 27 00:06 20120227
.....

など

[NFSCLIENT /app/backups]# ls -l
total 60
drwx--x--x 30 nobody nobody 4096 Mar  2 00:25 20120225/
drwx--x--x 30 nobody nobody 4096 Mar  2 00:25 20120226/
drwx--x--x 30 nobody nobody 4096 Mar  2 00:25 20120227/
......

など

あなたはそれらがそうであるべきであるようにそれらが同一であるのを見ることができます。

ここから問題が始まります。私が入る場合:

[NFSCLIENT /app/backups/20120225/home] #  ls -l

クライアントでこのls-lを実行すると時々適切なファイルが表示され、別のサーバーのホームディレクトリが表示されることもあります。

[NFSSERVER /nfs/share/20120225/home]# ls -lに着いたら

このls-lを実行すると、適切なファイルが表示されます。/nfs/share /内のフォルダーを削除すると、クライアントで結果をすぐに確認できます。これらの「クロスマウント」ファイルシステムを見るのは、深く掘り下げたときだけです。

これが私の/ etc/exportsの一部です(ホスト名が変更されました)

/nfs *.domain.com(fsid=0,ro,nohide,no_root_squash)
/nfs/server1/20120308 *.domain.com(ro,nohide,no_root_squash)
/nfs/server1/20120309 *.domain.com(ro,nohide,no_root_squash)
/nfs/server1/20120310 *.domain.com(ro,nohide,no_root_squash)
/nfs/server1/20120311 *.domain.com(ro,nohide,no_root_squash)
/nfs/server2/20120308 *.domain.com(ro,nohide,no_root_squash)
/nfs/server2/20120309 *.domain.com(ro,nohide,no_root_squash)
/nfs/server2/20120310 *.domain.com(ro,nohide,no_root_squash)
/nfs/server2/20120311 *.domain.com(ro,nohide,no_root_squash)
/nfs/server3/20120204 *.domain.com(ro,nohide,no_root_squash)
/nfs/server3/20120205 *.domain.com(ro,nohide,no_root_squash)
/nfs/server3/20120206 *.domain.com(ro,nohide,no_root_squash)
/nfs/server3/20120207 *.domaincom(ro,nohide,no_root_squash)

クロスマウントしているものを除いて、etc exportsからすべての行を削除してから、exportsファイルをリロードすると(つまり、/ etc/exportsに1つのエントリだけを残す)、クライアントマシン上のすべての適切なディレクトリが表示されます。

それで、古いNFSハンドル?デフォルトで実行されているNFSサーバーは他にもありますか?他に何かありますか?何か案は?私はこれで数週間頭を叩いています。

[〜#〜] update [〜#〜]

これは、エクスポートされるディレクトリを設定するスクリプトが実行するコード行です。

mount -t ext4 -o noload,ro /dev/zvol/backups/$Host@$DATE"-00" /nfs/$Host/$DATE

/ nfs/$ Host/$ DATEフォルダーは、エクスポートされるフォルダーです(上記のエクスポートファイルで確認できます)。

2
jemmille

したがって、ワイルドカードエクスポートであるように思われますが、manページを読んだ場合は推奨されません。私は以前にそれを読みましたが、何らかの理由でそれを修正しませんでした。これはまだ「バグ」だと思います。理論的にははず動作するはずですが、実際には動作しません。

これが他の人に役立つことを願っています。

新しいエクスポートファイルの例:

/nfs server1.a2hosting.com(fsid=0,ro,nohide,no_root_squash)
/nfs/server1/20120320 server1.a2hosting.com(ro,nohide,no_root_squash)
1
jemmille