Nfs

兩個指向同一位置的 NFS 導出(不知何故)

  • December 20, 2021

我正在執行具有兩個導出的 NFS 伺服器:

/mnt/sda1 192.168.1.254/255.255.255.0(rw,fsid=1,no_subtree_check,all_squash,anonuid=0,anongid=0,insecure)
/mnt/sdb1 192.168.1.254/255.255.255.0(rw,fsid=1,no_subtree_check,all_squash,anonuid=0,anongid=0,insecure)

在伺服器上,如果我 cd 到任一目錄,它們顯然是非常不同的驅動器。

/dev/sda1                 1.8T      1.7T      8.6G 100% /mnt/sda1
/dev/sdb1                 2.0T      1.3T    603.9G  68% /mnt/sdb1

但是,如果我將這些 nfs 共享掛載​​在客戶端上,則掛載 /mnt/sdb1 似乎直接指向 /mnt/sda1。

sudo mount 192.168.1.123:/mnt/sdb1 /media/test

然後在客戶端上使用 df -h

192.168.1.123:/mnt/sdb1                   1.8T  1.7T  8.6G 100% /media/test

正如您在上面看到的,即使僅基於儲存空間,這實際上是 /mnt/sda1。

該伺服器已經執行了很長時間,我隱約記得大約 5 年前我在玩 lvm 磁碟管理東西(但從未讓它工作)並且可能配置了一些導致這種奇怪行為的東西 - 但我不確定. 我什至不確定從哪裡開始,因為這對Google來說是一種艱難的行為。幫助表示讚賞!

我在這裡做出有根據的猜測:這種行為可能是由fsid=1兩個出口的選項引起的。

根據exports手冊頁,該fsid選項用於辨識文件系統:

NFS 需要能夠辨識它導出的每個文件系統。通常它會使用文件系統的 UUID(如果文件系統有這樣的東西)或保存文件系統的設備的設備號(如果文件系統儲存在設備上)。

由於並非所有文件系統都儲存在設備上,而且並非所有文件系統都有 UUID,因此有時需要明確告訴 NFS 如何辨識文件系統。這是通過fsid=選項完成的。

導出可能具有/mnt/sda1優先權,因為它在導出文件中較早(即它被映射到fsid=1第一個)。

如果上述假設成立,那麼問題的解決方案應該很簡單:只需為導出分配一個不同fsid/mnt/sdb1值。

引用自:https://unix.stackexchange.com/questions/683205