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

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

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

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

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

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

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