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

多主机数据

具有高可用性的群集文件系统的设备被托管在多个主机上,这样即使某个物理主机崩溃,其它某个未崩溃的主机也可以继续访问该设备。要使应用程序具有高可用性,其数据必须具有高可用性。因此,应用程序的数据必须位于可以从多个群集节点访问的文件系统中。Sun Cluster 支持的高可用性文件系统的示例包括 HA 文件系统、故障转移文件系统 (Failover File System, FFS) 和使用 Oracle Real Application Clusters 的环境中的 QFS 共享文件系统。

群集文件系统安装在作为独立实体创建的设备组上。您可以选择将一些设备组用于安装群集文件系统,而将其他设备组用作提供数据服务(例如 HA Oracle 软件)的原始设备。

应用程序可能包含指向数据文件位置的命令行切换或配置文件。如果应用程序使用硬链接路径名,则您可以更改指向群集文件系统中某个文件的符号链接的路径名,而无需更改应用程序代码。有关使用符号链接的详细讨论,请参见将符号链接用于多主机数据放置

在最坏的情况下,必须修改应用程序的源代码以提供指向实际数据位置的机制。您可以通过创建其他命令行参数来实现此机制。

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

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

有时候,应用程序数据文件的路径名为硬链接,且不具有覆盖硬链接路径名的机制。为避免修改应用程序代码,您可以适时地使用符号链接。

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

该应用程序或其管理过程之一修改了该数据文件的名称及目录后,再这样使用该符号链接将会发生问题。例如,假定应用程序通过先创建一个新临时文件 /etc/mydatafile.new 来执行更新。然后,该应用程序通过使用 rename() 系统调用(或 mv 命令)来重命名该临时文件以使其具有真实文件名。通过创建临时文件并将其重命名为真实文件名,数据服务尝试确保其数据文件的内容始终完好。

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

潜在的问题是现有应用程序不支持符号链接,并且无法写入以处理符号链接。要使用符号链接将数据访问重定向到逻辑主机的文件系统,该应用程序实现必须以不会删除符号链接的方式运行。因此,对于在群集的文件系统中放置数据的问题,符号链接不是彻底的解决方法。