클러스터 파일 시스템은 한 노드의 커널과 디스크에 물리적으로 연결되어 있는 노드에서 실행되는 볼륨 관리자 및 기초 파일 시스템 사이의 프록시입니다.
클러스터 파일 시스템은 하나 이상의 노드에 실제로 연결되어 있는 글로벌 디바이스(디스크, 테이프, CD-ROM)에 종속됩니다. 글로벌 디바이스는 노드가 스토리지 장치에 실제 연결되었는지 여부에 관계없이 동일한 파일 이름(예: /dev/global/)을 통해 클러스터의 노드로부터 액세스할 수 있습니다. 정규 디바이스와 같은 글로벌 디바이스를 사용하여, newfs나 mkfs를 통해 파일 시스템을 작성할 수 있습니다.
글로벌 디바이스에서 mount -g를 사용하여 글로벌하게 또는 mount를 사용하여 로컬로 글로벌 디바이스를 마운트할 수 있습니다. 프로그램은 동일한 파일 이름(예: /global/foo)을 통해 클러스터의 임의의 노드에서 클러스터 파일 시스템의 파일에 액세스할 수 있습니다. 클러스터 파일 시스템은 모든 클러스터 구성원에 마운트됩니다. 클러스터 구성원의 서브세트에서 클러스터 파일 시스템을 마운트할 수 없습니다.
Sun Cluster에서 모든 멀티호스트 디스크는 디스크 디바이스 그룹으로서 구성됩니다. 이 그룹은 Solstice DiskSuite 디스크세트, VxVM 디스크 그룹 또는 소프트웨어 기반 볼륨 관리자의 제어 하에 있지 않은 개인 디스크가 될 수 있습니다. 또한 로컬 디스크는 디스크 디바이스 그룹으로 구성됩니다. 경로는 각 노드에서 각 로컬 디스크로 유도됩니다. 이러한 설정은 디스크의 데이터가 모든 노드로부터 반드시 사용가능해야 한다는 것을 의미하지 않습니다. 디스크의 파일 시스템이 클러스터 파일 시스템으로 글로벌하게 마운트될 경우에만 데이터가 모든 노드에 대해 사용가능하게 됩니다.
클러스터 파일 시스템으로 만들어지는 로컬 파일 시스템만 디스크 스토리지에 대한 단일 연결을 수반합니다. 디스크 스토리지에 대한 실제 연결을 가지고 있는 노드가 실패할 경우, 다른 노드는 더이상 클러스터 파일 시스템에 대해 액세스할 수 없습니다. 다른 노드에서는 직접 액세스할 수 없는 단일 노드에 로컬 파일 시스템이 있을 수도 있습니다.
HA 데이터 서비스는 해당되는 데이터가 클러스터 파일 시스템의 디스크 디바이스 그룹에 저장되도록 설정됩니다. 이 설정에는 몇 가지 장점이 있습니다. 먼저, 데이터는 고가용성입니다. 즉, 디스크는 멀티호스팅되므로 현재 1차 노드로부터의 경로가 실패할 경우, 액세스는 동일한 디스크에 대해 직접 액세스할 수 있는 또 다른 노드로 전환됩니다. 두번째는, 데이터가 클러스터 파일 시스템에 있으므로 클러스터 노드에서 직접 볼 수 있습니다. 즉, 데이터를 보기 위해 현재 디스크 디바이스 그룹을 마스터하는 노드에 로그온하지 않아도 됩니다.
클러스터 파일 시스템은 다음과 같은 기능을 갖고 있는 프록시 파일 시스템(PXFS)을 기초로 합니다.
PXFS는 파일 액세스 위치를 투명하게 만듭니다. 프로세스는 위치에 관계없이 시스템에 있는 파일을 열 수 있으므로 모든 노드의 프로세스들은 동일한 경로 이름을 사용하여 파일을 찾을 수 있습니다.
PXFS는 동기 프로토콜을 사용하여, 파일이 동시에 여러 노드로부터 액세스될 경우에도 UNIX 파일 액세스 시멘틱을 보존합니다.
PXFS는 포괄적인 캐시를 제공하며 zero-copy 벌크 I/O 이동을 제공하여 큰 데이터 오브젝트를 효율적으로 이동합니다.
PXFS는 실패가 발생할 경우에도 데이터에 대한 연속 액세스를 제공합니다. 응용프로그램은 디스크에 대한 경로가 계속 작동하면 실패하지 않습니다. 이러한 보증은 원래 디스크 액세스와 모든 파일 시스템 조작에 대해 유지됩니다.
PXFS는 기초가 되는 파일 시스템과 볼륨 관리 소프트웨어의 영향을 받지 않습니다. PXFS는 지원되는 온-디스크 파일 시스템을 글로벌 상태로 만듭니다.
PXFS는 vnode 인터페이스에서 기존의 Solaris 파일 시스템의 맨위에서만들어집니다. 이 인터페이스는 PXFS가 포괄적인 커널 수정 없이 구현되도록 합니다.
PXFS는 별도의 파일 시스템 유형이 아닙니다. 즉, 클라이언트는 기초가 되는 파일 시스템(예: UFS)을 봅니다.
클러스터 파일 시스템은 기초가 되는 파일 시스템과 볼륨 관리자에 대해 독립적입니다. 현재, Solstice DiskSuite 또는 VERITAS Volume Manager를 사용하여 UFS에서 클러스터 파일 시스템을 만들 수 있습니다
정상 파일 시스템과 같이 두 가지 방법으로 클러스터 파일 시스템을 마운트할 수 있습니다.
수동으로 mount 명령 및 -g 옵션을 사용하여 명령줄로부터 클러스터 파일 시스템을 마운트합니다. 예:
# mount -g /dev/global/dsk/d0s0 /global/oracle/data |
자동으로 global 마운트 옵션을 사용하여 /etc/vfstab 파일에 항목을 작성하여 부트 시 클러스터 파일 시스템을 마운트합니다. 그리고 나서, 모든 노드에서 /global 디렉토리에 마운트 지점을 작성할 수 있습니다. /global 디렉토리는 권장 위치이며 반드시 지정해야 하는 것은 아닙니다. 다음은 /etc/vfstab 파일에서 클러스터 파일 시스템에 대한 예문입니다.
/dev/md/oracle/dsk/d1 /dev/md/oracle/rdsk/d1 /global/oracle/data ufs 2 yes global,logging |
Sun Cluster가 클러스터 파일 시스템에 대한 이름지정 정책을 하도록 하는 반면, /global/disk-device-group과 같은 동일한 디렉토리 아래의 모든 클러스터 파일 시스템에 대한 마운트 지점을 작성하여 관리를 지울 수 있습니다. 자세한 정보는 Sun Cluster 3.0 Installation Guide 및 Sun Cluster 3.0 System Administration Guide의 내용을 참조하십시오.
syncdir 마운트 옵션을 클러스터 파일 시스템에 대해 사용할 수 있습니다. 그러나 syncdir을 지정하지 않을 경우 중요한 성능 향상이 있습니다. syncdir을 지정한 경우, 쓰기의 POSIX 호환은 보증됩니다. 그렇게 하지 않으면, UFS 파일 시스템에서와 동일한 동작을 수반하게 됩니다. 예를 들어, syncdir이 없으면, 파일을 닫을 때까지 공간 부족 상태를 발견하지 못하는 경우가 있습니다. syncdir (및 POSIX 동작)이 있으면, 쓰기 조작 동안 공간 부족 상태가 발견되었을 것입니다. syncdir을 지정하지 않아서 생기는 문제점이 간혹 있지만, 이를 지정하지 않으면 성능 향상 이점을 얻을 수 있으므로 지정하지 않는 것을 권장합니다.
글로벌 디바이스와 클러스터 파일 시스템에 대한 FAQ는 "파일 시스템 FAQ"의 내용을 참조하십시오.