NFS에서 상황에 맞는 경로 이름(CDPN)을 구현하는 방법이 있습니까?

NFS에서 상황에 맞는 경로 이름(CDPN)을 구현하는 방법이 있습니까?

내 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 관련 접근 방식은 각 노드에서 바인드 마운트를 수행하는 것입니다. 공유 파일 시스템에 빈 디렉토리를 두고 @hostnameNFS 파일 시스템을 마운트한 후 여기에 바인드 마운트합니다.

mount --bind "/.nfs/sys/$HOSTNAME" /nfs/.sys/@hostname

관련 정보