群集文件系统是一个节点上的内核与在某个和磁盘有物理连接的节点上运行的基础文件系统及卷管理器之间的代理。
群集文件系统依赖于与一个或多个节点有物理连接的全局设备(磁盘、磁带、CD-ROM)。 全局设备可从群集中任何节点上通过同一个文件名称(如 /dev/global/)访问得到,而不管此节点与存储设备之间是否有物理连接。 可以像常规设备那样使用全局设备,也就是说,可以用 newfs 和/或 mkfs 命令在它上面创建文件系统。
在全局设备上,可以使用 mount -g 进行全局安装或使用 mount 进行局部安装。
通过相同的文件名称(例如 /global/foo),程序可以从群集中的任何节点访问群集文件系统中的文件。
群集文件系统安装在所有的群集成员上。 不可以在群集成员的子集上安装群集文件系统。
群集文件系统不是特殊的文件系统类型。 也就是说,客户机看到的是基础文件系统(如 UFS)。
在 SunPlex 系统中,所有多主机磁盘都放在磁盘设备组中,这些组可以是 Solstice DiskSuite 磁盘集、VxVM 磁盘组或不受基于软件的卷管理器控制的独立磁盘。
要使群集文件系统具有高可用性,基础磁盘存储器必须连接到一个以上的节点。 因此,群集文件系统中的本地文件系统(存储在节点的本地磁盘上的文件系统)不具有高可用性。
与一般的文件系统相同,可以通过以下两种方式安装群集文件系统:
手动 - 使用 mount 命令和 -g 或 -o global 安装选项从命令行安装群集文件系统,例如:
# 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 12/01 软件安装指南》和《Sun Cluster 3.0 12/01 系统管理指南》。
群集文件系统具有以下特性:
文件访问位置是透明的。 一个进程可打开位于系统中任何位置的文件,而且所有节点上的进程都可以使用同样的路径名定位文件。
在群集文件系统读取文件时,它不会更新这些文件的访问时间。
相关协议用于保留 UNIX 文件访问的语义,即使从多个节点并行访问文件时也是如此。
大规模高速缓存与零复制批量 I/O 移动一起使用,以便有效地移动文件数据。
通过使用 fcntl(2) 接口,群集文件系统提供高度可用的咨询文件锁定功能。 通过使用群集文件系统文件上的咨询文件锁定功能,运行在多个群集节点上的应用程序可以实现对数据的同步访问。 节点脱离群集后,或应用程序在锁定操作期间出现故障后,文件锁定会立即恢复。
即使出现故障也可以确保对数据的不间断访问。 只要到磁盘的路径仍然有效,应用程序就不会受到故障的影响。 对于原始磁盘访问和所有文件系统操作,也可作此保证。
群集文件系统是独立于基础文件系统和卷管理软件的。 群集文件系统可使任何支持的磁盘上的文件系统具有全局性。
syncdir 安装选项可用于将 UFS 用作基础文件系统的群集文件系统。 不过,如果不指定 syncdir,性能会有明显提高。 如果指定 syncdir,则保证写入的数据符合 POSIX 标准。 如果不指定,您会看到与 NFS 文件系统一样的行为。 例如,在某些情况下,如果不指定 syncdir,就只能在关闭一个文件后才发现空间不足。 有了 syncdir(和 POSIX 行为),空间不够的情况应该在写入操作期间就已发现了。 如果不指定 syncdir ,很少会出现问题。所以我们建议您不指定它,以便获得高性能。
有关全局设备和群集文件系统的常见问题,请参阅"关于文件系统的常见问题"。