Sun Cluster 数据服务开发者指南(适用于 Solaris OS)

多主机数据

具有高可用性的全局文件系统的磁盘组分布在多个主机上,这样即使某个物理主机崩溃,其它某个未崩溃主机也可以存取该磁盘。 对于要具有高可用性的应用程序,其数据必须具有高可用性,因此应用程序的数据必须驻留在全局 HA 文件系统中。

全局文件系统装载在作为独立实体创建的磁盘组上。 用户可以选择将一些磁盘组用作已装载的全局文件系统,而将其它磁盘组作为数据服务(例如 HA Oracle)的原始设备。

应用程序可能具有指向数据文件位置的命令行开关或换配置文件。 如果该应用程序使用硬链接的路径名,您可以将该路径名更改为指向全局文件系统中的文件的符号链接,而无需更改应用程序代码。 有关使用符号链接的详细介绍,请参阅将符号链接用于多主机数据放置

在最糟糕的情况下,您不得不修改应用程序的源代码,以提供一些用于指向实际数据位置的机制。 您可以通过运行附加命令行开关来执行此操作。

Sun Cluster 支持使用卷管理器中所配置的 UNIX UFS 文件系统和 HA 原始设备。 进行安装和配置时,系统管理员必须指定哪些磁盘资源用于 UFS 文件系统,哪些用于原始设备。 通常,原始设备只供数据库服务器和多媒体服务器使用。

将符号链接用于多主机数据放置

有些时候,应用程序会对数据文件的路径名采用硬链接的方式,而没有用于覆盖硬链接路径名的机制。 为避免修改应用程序代码,您可以适时地使用符号链接。

例如,假设该应用程序使用硬链接的路径名 /etc/mydatafile 命名其数据文件, 那么您可以将文件的路径更改为符号链接(其值指向逻辑主机的某一个文件系统中的文件)。 例如,您可以使其成为指向 /global/phys-schost-2/mydatafile 的符号链接。

该应用程序或其管理过程之一修改了该数据文件的名称及目录后,再这样使用该符号链接将会发生问题。 例如,假设该应用程序执行更新,方法是首先创建新的临时文件 /etc/mydatafile.new, 然后通过使用 rename(2) 系统调用(或 mv(1) 程序)重命名临时文件以获取实际的文件名。 通过创建临时文件,然后再对其进行重命名,数据服务试图确保其数据文件的目录始终保持正确的格式。

遗憾的是 rename(2) 操作将破坏符号链接。 现在,命名为 /etc/mydatafile 的文件是一个正规文件,并且与 /etc 目录位于相同的文件系统中,而不是位于群集的全局文件系统中。 因为 /etc 文件系统是每个主机专用的,所以进行故障切换或转移之后,该数据不再可用。

这种情况下的根本问题是现有应用程序不支持符号链接,并且在编写时没有考虑到符号链接的问题。 要使用符号链接将数据存取重定向到逻辑主机的文件系统,该应用程序实现必须以不会删除符号链接的方式运行。 因此,符号链接并不能完全解决将数据放置在群集全局文件系统中的问题。