Nfs
同名但內容不同的 NFS 文件,具體取決於主機
我有一個使用 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
可以在每個節點上以相同的名稱訪問,但根據節點指向不同的文件。如果你想訪問另一個節點的文件,這可以通過掛載的文件系統來完成。