mount -a を実行するには、/etc/exports の変更を「ごまかす」必要がありますが、問題は何でしょうか?

mount -a を実行するには、/etc/exports の変更を「ごまかす」必要がありますが、問題は何でしょうか?

server1を再起動する必要がある場合、server2でNFSマウントを復元する唯一の方法は、/etc/エクスポートserver1上のファイル。マウント -aコマンドは server2 でハングします。

典型的なシナリオ:

Server1が再起動されます。server1では、/etc/エクスポート:

/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=1,rw,no_root_squash,no_subtree_check,async)

次のコマンドを発行します:

"exportfs -r".

サーバー2では、これがあります/etc/fstab:

xxx.xxx.x.x:/server1_dir1/ /dir1_server2 nfs async,noatime 0 0
xxx.xxx.x.x:/server2_dir2  /dir2_server2 nfs async,noatime 0 0

まず、古いNFSハンドルを持つ古いディレクトリを「アンマウント」します。次に、

"mount -a"

コマンドがハングします。それを強制終了すると、dfdir1 はマウントされていますが、dir2 はマウントされていません。

両方のディレクトリをマウントする唯一の方法は、fsid 整数を別の値に変更することです。たとえば、server1 では次のようになります。

/mnt/ramdisk/dir1 *(fsid=0,rw,no_root_squash,no_subtree_check,async)
/mnt/ramdisk/dir2 *(fsid=2,rw,no_root_squash,no_subtree_check,async)

私が変更されfsid=1 から =2. 私は再びエクスポートfs -rコマンドを実行すると、マウント -aコマンドはserver2で動作します。

おそらく私は理解していないフシド本当にそうなのです。しかし、明らかに、毎回 fsid 番号をランダムに編集するよりも、NFS を「再マウント」するより良い方法があるはずです。

編集: 持っていない場合フシドserver1のエクスポートファイルに含まれているので、

"Warning: /mnt/ramdisk/dir1 requires fsid= for NFS export" 

また、両方の行 (dir1 と dir2) に fsid=0 を設定すると、すべてのファイルが dir1 の場所にコピーされるため、マウント ポイントは同じになります。したがって、これを機能させる唯一の方法は、fsid 整数をある程度ランダムに常時切り替えることのようです。

編集2: 私は削除しました0 の場合「特別」なので、FSID=1そしてFSID=2/etc/エクスポートserver1で。もちろんこれはうまくいきました(ファイルが変更されたため)。しかし、今日は強制的に再起動する必要があり、server2から古いドライブを(ゆっくりと)アンマウントした後、マウント -a前回同様、失敗しました。そこで、(前回同様)今回はserver1のエクスポートファイルを編集しました。FSID=2そしてfsid=3エクスポートfs -r、そして出来上がり、マウント -aサーバー2で再び動作します。最初の状態に戻ります。

編集3重要な情報: すべてを制御された方法で停止し (つまり、server1 が「クラッシュ」しないように)、最初に server2 のディレクトリをアンマウントし、次に server1 を再起動し、次に server2 で mount -a を実行すると、問題なく動作します。この問題が発生するのは、server2 のマウントが突然切断された場合のみです。したがって、server2 で何かをリセットする必要があると推測します。server1 がクラッシュした後、server2 で古いハンドルをアンマウントするのに長い時間がかかることはわかっています。

答え1

fsid=0私の推測では、この問題はエクスポートの 1 つでが使用されていることが原因で発生していると思われます。

は、基盤となるファイルシステムドライバが独自の一意のIDを提供しない場合に、デバイスを一意に識別するためのものであることを覚えておいてくださいfsid。特に、にfsid=0特別な意味:

NFSv4 には、エクスポートされたすべてのファイルシステムのルートとなる、区別されたファイルシステムがあります。これは または で指定されますfsid=rootが、fsid=0どちらもまったく同じ意味です。

これは明らかに望んでいることではないため、常に 0 以外の fsid を使用してください。

関連情報