我必須「捏造」/etc/exports 中的更改才能執行 mount -a,有什麼問題嗎?

我必須「捏造」/etc/exports 中的更改才能執行 mount -a,有什麼問題嗎?

每當我必須重新啟動 server1 時,在 server2 上重新安裝 NFS 的唯一方法是更改​​其中的“fsid”整數之一/etc/出口伺服器1上的檔案。否則,掛載-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".

在server2上,我有這個/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"

命令掛起。我殺了它之後,df顯示 dir1 已安裝,但 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。我再次發出匯出檔案系統-r命令,瞧,掛載-a命令在 server2 上運行。

也許我不明白什麼FSID確實如此,但顯然必須有一種更好的方法來「重新安裝」NFS,而不是每次都隨機編輯 fsid 編號?

編輯: 如果我沒有的話FSID包含在 server1 上的匯出檔案中,它給了我

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

而且,如果我為兩行(dir1 和 dir2)設定 fsid=0,那麼掛載點最終與我的所有檔案都複製到 dir1 位置相同!因此,似乎唯一的方法是不斷切換 fsid 整數,有點隨機。

編輯2: 我刪除了FSID=0因為它是“特殊的”,並將它們更改為FSID=1FSID=2/etc/出口在伺服器 1 上。這當然有效(因為文件已更改)。但今天不得不強制重新啟動,並在(緩慢地)從 server2 上卸載陳舊的驅動器之後,掛載-a失敗了,和以前一樣。所以,(和以前一樣),我編輯了 server1 上的匯出文件,這一次,FSID=2FSID=3,匯出檔案系統-r,瞧,掛載-a在 server2 上再次工作。回到方塊 1。

編輯3關鍵訊息:如果我以受控方式刪除所有內容(即伺服器1不會「崩潰」),並先卸載伺服器2上的目錄,然後重新啟動伺服器1,然後在伺服器2上掛載-a,效果很好。只有當server2上的掛載突然被切斷時才會出現此問題。所以我猜伺服器 2 上需要重置某些內容?

答案1

我的猜測是該問題是由fsid=0您的出口之一的使用引起的。

fsid請記住,當底層檔案系統驅動程式不提供自己的唯一 ID 時,它的目的是唯一標識設備。並且特別地,fsid=0有一個特殊意義

對於 NFSv4,有一個獨特的檔案系統,它是所有導出檔案系統的根。這與fsid=rootfsid=0兩者指定的含義完全相同。

由於這顯然不是您想要的,因此請始終使用 0 以外的 fsid。

相關內容