名称相同但内容不同的 NFS 文件,具体取决于主机

名称相同但内容不同的 NFS 文件,具体取决于主机

我有使用 NFS 的集群和一个myprogram写入固定位置的程序,例如/home/sharedfs/somedir/somefile.txt。这意味着如果您myprogram从每个节点运行,它们都会写入共享/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指向每个节点上的不同(非共享)目录。

欢迎任何想法!

答案1

我想当你说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可以在每个节点上以相同的名称访问,但根据节点指向不同的文件。如果要访问另一个节点的文件,可以通过挂载的文件系统来完成。

相关内容