注册新资源类型时,必须可以在磁盘上访问其 RTR 文件。
创建新类型的资源时,新类型的所有声明的方法路径名称和监视器程序必须在磁盘上并可执行。只要正在使用该资源,就必须在原来位置保留旧的方法和监视器程序。
要确定将使用的正确封包,请考虑以下问题:
是否更改 RTR 文件?
是否更改属性的缺省值或可调性?
是否更改属性的 min 或 max 值?
升级过程中是否添加或删除属性?
是否更改监视器代码?
是否更改方法代码?
新方法、监视器代码或两者是否兼容以前的版本?
这些问题的答案将有助于您确定要对新资源类型使用的正确封包。
修改资源类型时,您不是一定要创建新方法或监视器代码。例如,您可能仅更改资源属性的默认值或可调性。在这种情况下,由于您没有更改方法代码,因而只需要可读取 RTR 文件的新有效路径名称。
如果不再需要注册旧资源类型,则可以使新 RTR 文件覆盖以前的版本。否则,将 RTR 文件置于新路径中。
如果升级更改了属性的默认值或可调性,则使用新版本资源类型的 Validate 方法,来验证现有属性对于新资源类型是否有效。如果无效,则群集管理员可以将现有资源的属性更改为正确值。如果升级更改了 min、max 或 type 属性,则 scrgadm 命令将在群集管理员升级资源类型时自动验证这些约束。
如果升级添加了新属性或删除了旧属性,则可能需要更改回调方法或监视器代码。
如果仅更改资源类型的监视器代码,则可以使用软件包安装程序覆盖监视器二进制文件。
如果仅更改资源类型中的方法代码,则必须确定新方法代码是否兼容以前的方法代码。此问题的答案将确定新方法代码是必须存储在新路径中还是覆写以前的方法。
如果您可以将新 Stop、Postnet_stop 和 Fini 方法(如果已声明)应用于由以前版本的 Start、Prenet_stop 或 Init 方法初始化或启动的资源,则可以使新方法覆写以前的方法。
如果将新默认值应用于属性将导致方法(例如 Stop、Postnet_stop 或 Fini)出现故障,则在升级资源类型时,群集管理员必须相应地限制资源的状态。
当通过限制 Type_version 属性的可调性来升级资源时,应让群集管理员限制资源的状态。
封包的一种方法是包括软件包中仍支持的资源类型的所有早期版本。此方法允许新版本的软件包替换旧版本的软件包,而无需覆写或删除方法的以前路径。您必须确定要支持的以前版本的数量。
下表总结了要用于新资源类型的封包方案。
表 4–1 确定要使用的封包方案
更改类型 |
可调性值 |
封包方案 |
---|---|---|
仅在 RTR 文件中进行属性更改。 |
ANYTIME |
仅传送新 RTR 文件。 |
更新方法。 |
ANYTIME |
将已更新的方法置于与以前方法不同的路径中。 |
安装新监视器程序。 |
WHEN_UNMONITORED |
仅覆写以前版本的监视器。 |
更新方法。 新 Update 和 Stop 方法不兼容以前的 Start 方法。 |
WHEN_OFFLINE |
将已更新的方法置于与以前方法不同的路径中。 |
更新方法并将新属性添加到 RTR 文件中。新方法需要新属性。 目标是允许所包含的资源组仍处于联机状态,但如果该资源组在某个节点上从脱机状态转变为联机状态,则防止该资源进入联机状态。 |
WHEN_DISABLED |
覆写方法的以前版本。 |
更新方法并将新属性添加到 RTR 文件中。新方法不需要新属性。 |
ANYTIME |
覆写方法的以前版本。 |
更新方法。新的 Fini 方法与旧的 Init 方法不兼容。 |
WHEN_UNMANAGED |
将已更新的方法置于与以前方法不同的路径中。 |
更新方法。不修改 RTR 文件。 |
不适用。不修改 RTR 文件。 |
覆写方法的以前版本。因为您未对 RTR 文件进行更改,所以无需注册或升级资源。 |