群集文件系统是一个节点上的内核与某个和磁盘有物理连接的节点上运行的基础文件系统及卷管理器之间的代理。
群集文件系统依赖于和一个或多个节点有物理连接的全局设备(磁盘、磁带、CD-ROM)。全局设备可从群集中任何节点上通过 同一个文件名称(如 /dev/global/)访问,而不用管此节点与存储设备是否有物理连接。可以像常规设备那样 使用全局设备,也就是说,您在它上面可以用 newfs 和/或 mkfs 命令创建文件系统。
您可以在全局设备上用 mount -g 命令安装全局文件系统,或用 mount 创建本地文件系统。程序可以使用同一文件 名(如 /global/foo),从群集中的任意节点访问群集文件系统中的文件。 所有群集成员上都安装了一个群集文件系统。不可以在群集成员的子集上安装群集文件系统。
在 Sun Cluster 中,所有多主机磁盘都配置为磁盘设备组,这些多主机磁盘可以是 Solstice DiskSuite 磁盘集、VxVM 磁盘组或不受基于软件的 卷管理器控制的独立磁盘。另外,本地磁盘都配置为磁盘设备组:从每个节点引向每个本地磁盘的路径。此设置并不意味着一个 磁盘上的数据必须能被所有节点访问。只有在磁盘上的文件系统安装为全局性的群集文件系统时,这些数据才能被所有节点访问。
成为群集文件系统的本地文件系统与磁盘存储器只有单一的连接。如果与磁盘存储器有物理连接的节点出现故障, 则其他节点就不再能够访问群集文件系统。您可以在一个节点上创建不能由其他节点直接访问的本地文件系统。
HA 数据服务经过设置后,服务所用的数据存储在群集文件系统中的磁盘设备组上。这种设置有几个优点。首先,数据是高可用的; 也就是说,因为磁盘是多主机的,如果当前主节点的路径出现问题,访问就切换到可直接访问这些磁盘的另一节点。其次,因为数据 在群集文件系统上,所以可以从任何群集节点上直接查看它-不必登录到当前控制着该磁盘设备组的节点来查看数据。
群集文件系统基于代理文件系统 (PXFS),后者有下列功能:
PXFS 使文件访问位置透明。一个进程可打开位于系统中任何位置的文件,而且所有节点上的进程 都可以使用同样的路径名定位文件。
PXFS 使用相关协议来保留 UNIX 文件访问的语义,即使从多个节点并行访问文件时也是如此。
PXFS 可提供大范围的高速缓存和零复制批量 I/O 移动,以便有效地移动大数据对像。
PXFS 可提供对数据的连续访问,即使发生故障时也是如此。只要到磁盘的路径仍然有效, 应用程序就检测不到故障。对于原始磁盘访问和所有文件系统操作,也可保证。
PXFS 独立于基础文件系统和卷管理软件。PXFS 使所有磁盘上文件系统具有全局性。
PXFS 是在 vnode 接口处建立在现有 Solaris 文件系统之上的。此接口使得不用进行大量的内核修改就可以实现 PXFS。
PXFS 不是一种独特的文件系统类型。也就是说,客户机看到的是基础文件系统(如 UFS)。
群集文件系统独立于基础文件系统和卷管理器。目前,您可以用 Solstice DiskSuite 或 VERITAS 卷管理器 在 UFS 上建立群集文件系统。
与一般的文件系统一样,您可以以两种方式安装群集文件系统:
手动 - 使用 mount 命令 和 -g 选项从命令行安装群集文件系统,例如:
# mount -g /dev/global/dsk/d0s0 /global/oracle/data |
自动 - 在 /etc/vfstab 文件中 用 global 安装选项创建一个条目,以在引导时建立群集文件系统。接着就可以 在所有节点上的 /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 安装指南 和 Sun Cluster 3.0 系统管理指南。
群集文件系统可使用 syncdir 安装选项。不过,如果不指定 syncdir, 性能会有明显提高。如果您指定 syncdir,则保证写入的数据符合 POSIX 标准。如果不指定, 您会看到与 UFS 文件系统一样的行为。例如,在某些情况下,如果不指定 syncdir,就只能在关闭一个文件后 才发现空间不足。有了 syncdir(和 POSIX 行为),空间不够的情况应该在写入操作期间就已发现了。在不指定 syncdir 时出现问题的情形是很少见的,所以我们建议您不指定它,以便在性能方面受益。
有关全局设备和群集文件系统的常见问题,请参见"文件系统 FAQ"。