내 GFS 클러스터에서는 다음을 사용합니다.CDPN/dev/log
별도의 클러스터 노드에 별도의 chroot 디렉터리를 갖는 기능:
/홈/ftpuser/foo: lrwxrwxrwx 1 루트 루트 2010년 9월 26일 18일 dev -> .sys/@hostname/dev /home/ftpuser/foo/.sys: drwx--x--x 3 루트 루트 3864 2010년 9월 26일 server1.example.com drwx--x--x 3 루트 루트 3864 2010년 9월 26일 server2.example.com drwx--x--x 3 root3864 2010년 9월 26일 server3.example.com /home/ftpuser/foo/.sys/server2.example.com: drwx--x--x 2 루트 루트 3864 9월 25일 09:34 개발 /home/ftpuser/foo/.sys/server2.example.com/dev: srw-rw-rw- 1 루트 루트 0 9월 25일 09:23 로그 /home/ftpuser/foo/dev: (노드 이름을 기준으로 1개의 하위 디렉터리를 투명하게 선택합니다) srw-rw-rw- 1 루트 루트 0 9월 25일 09:23 로그
각 노드의 rsyslog 데몬이 서로 간섭하지 않도록 이것을 사용합니다. @hostname
경로의 내용이 이를 해석한 호스트의 호스트 이름으로 바뀌기 때문에 작동하므로 호스트마다 서로 다른 디렉터리를 갖게 됩니다. 클러스터는 모든 노드에서 동시에 활성화됩니다.
내 질문:
- NFS 공유에서 해당 기능을 얻을 수 있는 방법이 있습니까?
- 이론적으로 모든 파일 시스템의 Linux 커널에서 구현할 수 있습니까(마운트 옵션을 통해 기본적으로 문제가 발생하지 않도록)?
이 질문은 다음 질문과 유사하지만 동일하지는 않습니다.이름은 동일하지만 호스트에 따라 내용이 다른 NFS 파일
답변1
NFS에는 CDPN이 존재하지 않는다고 생각하지만 기본 도구를 사용하면 거의 동일한 기능을 얻을 수 있습니다. 제한 사항은 모든 노드별 파일을 동일한 위치에 넣어야 하고(또는 적어도 위치 목록을 유지해야 함) @hostname
원하는 곳 어디에서나 이 기능을 사용할 수 없다는 것입니다.
동일한 위치에 있는 모든 노드에 로컬 파일 시스템을 마운트합니다(예: ) /local
. 해당 파일 시스템에서 대상이 노드마다 다르고 원격 파일 시스템의 노드별 영역을 가리키는 심볼릭 링크를 만듭니다. 로컬 저장소가 필요하지 않으며 심볼릭 링크만 저장하면 되기 때문에 메모리 내 파일 시스템일 수 있으며 오버헤드가 최소화됩니다.
mount -t tmpfs -o noexec,nodev,nosuid,mode=755,nr_inodes=2,nr_blocks=2 local-redirect /local
ln -s "/nfs/.sys/$HOSTNAME" /local/storage
귀하의 예에서 /local/storage
사용할 위치를 사용하십시오..sys/@hostname
다른 Linux 관련 접근 방식은 각 노드에서 바인드 마운트를 수행하는 것입니다. 공유 파일 시스템에 빈 디렉토리를 두고 @hostname
NFS 파일 시스템을 마운트한 후 여기에 바인드 마운트합니다.
mount --bind "/.nfs/sys/$HOSTNAME" /nfs/.sys/@hostname