Nfs

同名但內容不同的 NFS 文件,具體取決於主機

  • June 6, 2014

我有一個使用 NFS 和一個myprogram寫入固定位置的程序的集群,例如/home/sharedfs/somedir/somefile.txt. 這意味著如果您myprogram從每個節點執行,它們都會寫入 shared /home/sharedfs/somedir/somefile.txt,但這是不可取的。

所以,我在想:有沒有辦法為每個節點創建一個文件,並在 NFS 中建立一個軟連結,以便每個節點上的連結指向不同的節點特定文件?也就是說,擁有

/home/sharedfs/somedir/somefile.node0.txt
/home/sharedfs/somedir/somefile.node1.txt
/home/sharedfs/somedir/somefile.nodeN.txt

/home/sharedfs/somedir/somefile.txt -> link to somefile.node0.txt only on node0
/home/sharedfs/somedir/somefile.txt -> link to somefile.node1.txt only on node1
/home/sharedfs/somedir/somefile.txt -> link to somefile.nodeN.txt only on nodeN

這可能嗎?

另一種選擇是somedir為每個節點安裝不同的目錄,以便somedir/somefile.txt指向每個節點上的不同(非共享)目錄。

歡迎任何想法!

我想當您說myprogram寫入固定文件時,您的意思是您無法修改此程序以使其寫入另一個文件(也許您沒有原始碼)。

我也很確定 NFS 無法實現您想要做的事情。無論如何,您提到的使用不同掛載點的解決方案將起作用,但如果您有很多節點,則不太實用。

您的程序是somefile.txt使用絕對路徑寫入文件,還是僅使用目前目錄中的文件?如果它在目前目錄中,您可以創建一些子目錄,例如:

/home/sharedfs/somedir/nodeN/somefile.txt

myprogram在相應目錄下執行:

cd /home/sharedfs/somedir/nodeN
./myprogram

然後,在每個節點 (nodeN) 上使用本地目錄中的符號連結,如下所示:

ln -s /home/sharedfs/somedir/nodeN/somefile.txt /usr/local/somefile.txt

該文件somefile.txt可以在每個節點上以相同的名稱訪問,但根據節點指向不同的文件。如果你想訪問另一個節點的文件,這可以通過掛載的文件系統來完成。

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