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