이름은 동일하지만 호스트에 따라 내용이 다른 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각 노드에서 동일한 이름으로 액세스할 수 있지만 노드에 따라 다른 파일을 가리킵니다. 다른 노드의 파일에 액세스하려는 경우 마운트된 파일 시스템을 통해 수행할 수 있습니다.

관련 정보