2


DR 的概念

本章介绍在使用 DR 之前必须先了解的一些 DR 概念。

如果您计划使用 SMS DR 命令在高端服务器的系统控制器上执行 DR 操作,请务必先阅读第 5 章SMS DR 过程 - 从 SC 上执行(仅适用于高端系统)。本章中的某些内容在第 5 章中会重复介绍,但介绍的视角有所不同。通过阅读这两章,您对 DR 特性的理解会更加全面。

本章包含以下主题:



注 - UltraSPARC IV+ 板包含双核心 CPU。本文档提到的 CPU 或处理器泛指单核心或双核心 CPU,所有过程对于这两种类型的 CPU 均适用。




动态系统域

Sun Fire 系统可以划分为若干个域。每个域均基于为其分配的系统板插槽。进一步讲,每个域均被从电气上隔离在不同的硬件分区中,这保证了一个域中的某种故障不会影响到服务器上的其他域。

每个域的配置均由驻留于 SC 上的配置数据库来确定。配置数据库 - 在高端系统上则为平台配置数据库 (PCD) - 可控制如何将系统板插槽从逻辑上分区为域。域配置表示了预定的域配置。因此,该配置可以包含空的插槽和已占用的插槽。物理域由逻辑域来确定。

给定域上插槽的可用数量是由 ACL 控制的。ACL 是可用组件列表(对于高端系统域)或访问控制列表(对于中型系统域)的缩写。所有域的 ACL 均保存在 SC 上。在更改插槽的状况之前,必须先将它分配给域,或对域来说该插槽是可用的。将插槽分配给某个域后,它对于所属的域是可见的,而对于其他的域既不可见也不可用。反之,在将插槽分配并连接到其他域之前,您必须先从它当前所在的域中断开与该插槽的连接并取消对该插槽的分配。

逻辑域是隶属于域的一组插槽。而物理域则是物理上互连的一组板。插槽可以是逻辑域的成员,而不必是物理域的一部分。在域引导之后,可以将系统板和空的插槽分配给逻辑域,或从逻辑域取消对它们的分配,但是只有在操作系统发出请求之后,才允许它们成为物理域的一部分。尚未被分配给域的系统板或插槽对所有域均是可用的。平台管理员可以将这些板分配给域,不过通过设置 SC 上的 ACL,也可以使具有适当权限的用户能够将可用的板分配给域。


连接点

连接点这个术语泛指板或设备、插有这些板或设备的插槽、以及其上的所有组件。有时也将插槽称为插口

Sun Fire 系统支持以下连接点:



注 - 许多用户只关心板或设备状态的变化。因此,为简单起见,本文档中的某些过程将板连接点简称为板,将 PCI 连接点简称为 PCI 卡,并将组件连接点简称为 CPU 模块或内存模块。在这种简化可能引起混淆之处,本文档将改用适当的名称。



术语插卡指的是板及其连接设备的总称,包括通过接口电缆连接的所有外部存储设备。

板插槽可以根据插槽号来命名,或采用匿名的形式(例如,当其位于 SCSI 链中时)。

DR 可识别的连接点名称有两种类型:

要获得所有可用逻辑连接点的列表,请在域中使用以下命令:


# cfgadm -l

 

连接点的类

Sun Fire 系统支持连接点的类。DR 用户需要了解的两个类是 sbdpci

要查看这些连接点的列表以及与每个连接点相关联的板的类型,请以超级用户身份使用以下命令:


# cfgadm -s -a "cols=ap_id:class"

 

高端系统连接点

下面是高端系统上物理连接点名称的实例:


/devices/pseudo/dr@0:SBx(用于插槽 0 中的系统板)

/devices/pseudo/dr@0:IOx(用于插槽 1 中的 I/O 板)


 

其中,0 是节点 0(零),SB 是系统板,IO 是 I/O 板,x 则表示特定板的板编号或扩展器编号。系统板和 I/O 板的编号是从 0 到 17。



注 - 系统板必须安装在插槽 0 中,而 I/O 板和 Max CPU 板则必须安装在插槽 1 中。



高端系统上的逻辑连接点可采取的格式有以下两种:


SBx(用于系统板)

IOx(用于 I/O 板或 Max CPU 板)


 

中型系统连接点

下面是中型系统上物理连接点名称的实例:


/devices/ssm@0,0:N0.SBx(用于系统板)

/devices/ssm@0,0:N0.IBx(用于 I/O 板)


 

其中,N0 是节点 0(零),SB 是系统板,IB 是 I/O 板,x 则是插槽号(0 到 5 用于系统板,6 到 9 用于 I/O 板)。

中型系统上的逻辑连接点可采取的格式有以下两种:


N0.SBx(用于系统板)

N0.IBx(用于 I/O 板)


 

更改连接点

您可以使用 cfgadm(1M) 命令来更改连接点。该命令的功能包括:

有关状况的信息,请参阅接下来的几个小节。有关连接点的详细信息,请参阅 cfgadm(1M) 手册页。


状况和情况

本节介绍板、插槽、组件和连接点的状况和情况。

cfgadm(1M) 命令可以显示九种类型的状况和情况。有关详细信息,请参阅组件状况组件情况



注 - 以下有关板和板插槽的信息也适用于 PCI 卡以及连接它们的 PCI 总线。



板和板插槽的状况

当板插槽中未插入板时,其状况为 empty。当插槽中确实插有板时,则该板的状况是 disconnected 或者 connected


表 2-1 板和板插槽的状况

状况

说明

empty

插槽中没有插入板。

disconnected

插槽中的板已与系统总线断开连接。即使不切断电源,板也可以处于断开连接的状况。但是,在将板从插槽中拆除之前,必须首先断开其电源并使之处于断开连接的状况。新插入的板将处于 disconnected 的状况。

connected

插槽中的板已通电并已连接到系统总线。只有在板处于已连接的状况后,您才能看到板上的组件。


 

caution icon

注意 - 如果从物理上拆除的板正处于 connected 状况,或已通电但处于 disconnected 状况,则会导致操作系统崩溃,同时可能对系统板造成永久性的损坏。



处于 connected 状况的板可能是 configured,也可能是 unconfigured。已断开连接的板总是处于已取消配置的状况。


表 2-2 configured 和 unconfigured 板

名称

说明

configured

这样的板可供 Solaris OS 使用。

unconfigured

这样的板不可供 Solaris OS 使用。


 

以下状况只对 SC 是可见的:


表 2-3 只对 SC 可见的板状况

名称

说明

Available

未将(也许包含板,也许不包含板的)插槽分配给任何特定的域。

Assigned

(也许包含板,也许不包含板的)插槽已隶属于某个域,但是尚未配置硬件来使用它。

Active

插槽中的板已被分配给某个域并正由该域使用。您不能对活动的板进行重新分配。


 

板情况

板的情况有以下三种:unknown、ok 或 failed。unusable 为板插槽所特有的情况。


表 2-4 板和板插槽的情况

名称

说明

unknown

板尚未经过测试。

ok

板可运行。

failed

板未通过测试。

unusable

板插槽不可用。


 

组件状况

CPU 模块或内存模块与板不一样,不能将它们单独连接或断开连接。因此,所有这类组件均处于 connected 状况。

已连接的组件要么是已配置的,要么是已取消配置的。


表 2-5 已连接的组件:configured 或 unconfigured

名称

说明

configured

这样的组件可供 Solaris OS 使用。

unconfigured

这样的组件不可供 Solaris OS 使用。


 

组件情况

CPU 模块或内存模块的情况有:unknown、ok 或者 failed。


表 2-6 CPU 模块或内存模块的情况

名称

说明

unknown

组件尚未经过测试。

ok

组件可运行。

failed

组件未通过测试。


 


可分离性

可分离设备是指符合以下规则的设备:

有些板不能分离是由于它们的资源不能移动。例如,如果域只有一块 CPU 板,则不能分离该 CPU。如果 I/O 板控制着引导驱动器,则其也是不可分离的。

如果 I/O 板没有替代路径,您可以采取以下相应措施:



注 - 如果您不确定某设备是否可分离,请咨询您的 Sun 服务代表。




永久内存和非永久内存

在您删除板之前,操作系统必须将该板上的内存清空。清空内存板会将该板非永久内存中的内容刷新到交换空间内,并将其永久内存中的内容(即内核和 OpenBoottrademark PROM 软件)复制到另一内存板上。

要重新定位永久内存,必须临时停止域上的操作系统。停止时间的长短取决于域 I/O 配置和运行负载。

只有在将包含永久内存的板分离时才需要停止操作系统。因此您必须事先了解永久内存驻留的位置,以免给域的运行带来严重影响。要显示永久内存的大小,请使用 cfgadm(1M) 命令及其 -av 选项。要清空具有永久内存的板,操作系统必须查找具有足够空间的可用内存块(称为目标内存),以便将永久内存(称为源内存)中的当前内容复制到该内存块中。

复制-重命名

用户进程可以通过将内存中的数据分页放入交换设备的方式来释放内存。但是对于驻留在永久内存中的 Solaris 内核,则无法用这种方式来释放。相反,cfgadm 命令会使用复制-重命名技术来释放该内存。在 OS 找到合适的目标板(其拥有的内存足以容纳待移动的永久内存)之后,DR 软件便会执行以下步骤:

1. 通过将内存中的数据分页放入交换设备的方式清空目标板上的内存。

2. 停止操作系统。

3. 将(永久内存中的)内容从源板复制到目标板。这是该操作的复制阶段。

4. 对该硬件重新进行编程,交换源板与目标板的内存地址范围。这是该操作的重命名阶段。

5. 解除操作系统的停止状况。

内存交错

如果系统内存交错分布在多个系统板上,则不能对这些系统板进行动态重新配置。但对 PCI 卡和 I/O 板而言,不管内存是否交错,均可以对其进行动态重新配置。

有关高端系统上内存交错的详细信息,请参阅《Sun Fire High-End Systems Administration Manual》。对于中型系统,请参阅 setupdomain 命令的 interleave-scope 参数。该命令在《Sun Fire 中型系统平台管理手册》《Sun Fire Midrange System Controller Command Reference Manual》这两本书中均有介绍。

可纠正的内存错误

可纠正的内存错误表明系统板上的内存 即系统板上一个或多个双列直插式内存模块 (DIMM),或者硬件互连的某些部分 可能有故障,从而需要替换。当 SC 检测到可纠正的内存错误时,它会启动记录停止转储以保存诊断数据,这可能会干扰 DR 操作。

因此,当由于可纠正的内存错误而出现记录停止时,请在启动 DR 操作之前先让记录停止完成转储。

如果出现故障的组件导致重复报告可纠正的内存错误,则 SC 会执行多次记录停止转储。出现这种情况时您应该临时禁用 SC 上的转储检测机制;等待当前的转储结束;然后再启动 DR 操作。待 DR 操作结束后,再重新启用转储检测。


停止

在对具有永久内存(OpenBoottrademark PROM 或内核内存)的系统板执行取消配置的操作过程中,操作系统会作短暂的暂停,这就是所谓的操作系统停止。在执行此操作的关键阶段,必须终止域上所有的操作系统活动和设备活动。

一个快速确定板上是否具有永久内存的方法,是使用以下命令:


# cfgadm -av | grep permanent

 

系统作出响应后的输出如下所示,它描述了中型系统上的系统板 0(零):


N0.SB0::memory connected configured ok base address 0x0, 4194304
 KBytes total, 668072 KBytes permanent

 

如果操作系统无法停止,则其会显示出原因,可能的原因有:



注 - 实时进程未阻止停止。



导致进程暂停失败的情况通常是临时性的。请分析每次失败的原因,如果因操作系统未能暂停进程而导致失败,再次尝试该操作即可。

在停止状态下,系统被冻结并且不会响应诸如网络信息包等外部事件。停止的持续时间取决于两个因素:有多少 I/O 设备和线程需要停止;有多少内存需要复制。通常,I/O 设备的数量决定了需要的停止时间,因为必须先暂停 I/O 设备,然后再取消它们的暂停。停止状态通常会持续两分钟以上。

由于停止状态会产生显著的影响,因此 cfgadm 命令会在实现停止之前请求确认。如果您键入:


# cfgadm -c unconfigure N0.SB0

 

系统作出响应后会提示您进行确认:


System may be temporarily suspended, proceed (yes/no)?

 

如果您使用 Sun Management Center 执行 DR 操作,则会弹出一个包含以下提示的窗口:


Enter Yes to confirm that the impact of the quiesce is acceptable, and to proceed.

 


可安全暂停和不可安全暂停的设备

当 DR 使操作系统暂停时,连接到操作系统中的设备驱动程序也必须暂停。如果无法暂停驱动程序(或稍后就恢复了),则 DR 操作将失败。

在操作系统处于停止状态期间,可安全暂停的设备不会访问内存或中断系统。如果某驱动程序支持操作系统停止(如果它可以暂停,然后再恢复),则它就是可安全暂停的。可安全暂停的驱动程序还应确保在成功完成一个暂停请求后,该驱动程序所管理的设备不会试图访问内存,即使在发出暂停请求时该设备处于打开状态。

不可安全暂停的设备允许在操作系统处于停止状态时访问内存或中断系统。

在高端系统上,DR 使用 dr.conf 文件中的不安全驱动程序列表来防止不安全设备在 DR 操作期间访问内存或中断操作系统。dr.conf 文件驻留于以下目录:/platform/SUNW,Sun-Fire-型号编号/kernel/drv/,其中的型号编号是计算机名称,比如 15000。不安全驱动程序列表是 dr.conf 文件中的一条属性,其格式如下所示:


unsupported-io-drivers="驱动程序 1","驱动程序 2","驱动程序 3";

 

在准备暂停操作系统时,DR 会读取此列表,以便其取消内存组件的配置。如果发现不安全驱动程序列表中的某些驱动程序处于活动状态,DR 会中止该动态重新配置操作并返回一条错误消息。该消息包含了处于活动状态的那个不安全驱动程序的标识。您必须执行以下一项或多项任务,手动删除这些设备:

停止使用这些设备后,可重新尝试该 DR 操作。



注 - 如果您不确定某设备是否可安全暂停,请联络您的 Sun 服务代表。




I/O 板上的 DR 操作

在添加或拆除带 I/O 设备的板时,请务必小心。拆除带 I/O 设备的板之前,必须先关闭该板的所有设备并卸载其所有的文件系统。

如果您需要从域中临时拆除带 I/O 设备的板,并在添加其他带 I/O 设备的板之前重新添加它,则不必对其进行重新配置。在这种情况下,通往该板各设备的设备路径没有发生变化。但是,如果您在拆除第一块板后添加另一块带 I/O 设备的板,然后再重新添加第一块板,则必须进行重新配置,原因是第一块板上各设备的路径已发生了改变。



注 - 在试图对域中的 I/O 板执行 DR 操作之前,请确保该域至少包含两个可用的 CPU。进一步讲,必须确保在这些 CPU 中至少有一个位于系统板上,并且没有绑定任何进程。有关绑定进程的详细信息,请参阅 pbind(1M) 手册页。



高端系统 I/O 板、金牌 (Golden) IOSRAM、MaxCPU 和 hsPCI+

高端系统域上的每块 I/O 板均包含一个 IOSRAM 设备。但每次只有一个被称为金牌 IOSRAM 的 IOSRAM 设备可用于实现从 SC 到域的通信。金牌 IOSRAM 包含用于实现从 SC 到域的通信的“隧道”。由于 DR 可能删除 I/O 板,因此,有时必须停止使用当前的金牌 IOSRAM,并使另一个 IOSRAM 设备成为金牌 IOSRAM。此过程就是所谓的“隧道切换”;每当 DR 取消配置当前的金牌 IOSRAM 时,均会出现此过程。当域引导时,一般会选择该域中编号最小的 I/O 板作为初始的金牌 IOSRAM。

DR 支持高端系统 I/O 板上的 I/O 总线以及任何与之连接的 PCI 卡和 MaxCPU 板。DR 还支持对 hsPCI+ 卡进行动态重新配置。每块 hsPCI+ 卡均包含两个 XMITS ASIC 和四个可热插拔的 hsPCI+ 插槽。

中型系统 I/O 部件、PCI 和 CompactPCI

在 Sun Fire 中型系统中,DR 既不支持 SAI/P(错误 ID 4466378)也不支持 HIPPI/P。早期版本不支持 SunHSI/P 驱动程序,但是阻碍支持的错误 (4496362) 在修补程序 106922 (2.0) 和 109715 (3.0) 中已得到修复。有关详细信息,请参阅 SunSolve 和 devfsadm(1M)手册页。



注 - 如果单分区中型系统的域中配置有一个或多个 UltraSPARC IV+ 系统板,则您无法通过使用 DR 连接和配置操作将 I/O 板添加到该域中。该限制源自缺少可测试 I/O 板的另一个域。不过您可以在所述系统中对 I/O 板执行 DR 取消配置和取消连接命令。有关更多信息,请参见测试板,以及《Sun Fire 中型系统平台管理手册》(用于固件版本 5.19.0)。



有关 CompactPCI 的注释

以下限制适用于涉及到 CompactPCI 部件的重新配置:

取消配置 CompactPCI 卡也会自动断开它的连接。如果启用自动配置功能,连接 CompactPCI 卡的同时也将对其进行配置。如果禁用自动配置功能,那么您必须手动进行配置。


常见的 DR 板操作

连接操作

在板连接操作期间,如果插槽中的系统板可用并且又不属于任何逻辑域,则 DR 会尝试将该板插槽分配给域。分配该插槽之后,DR 会请求 SC 打开板的电源并对其进行测试。测试完该板后,DR 会请求 SC 将它从电气上接入系统,这样该板就成为物理域的一部分了。随后操作系统开始探测该板上的各个组件。



注 - 如果执行 DR 操作期间 cfgadm(1M) 命令失败,则该板不会返回至其初始状况。如果该错误是可恢复的,则可以重试该命令。如果该错误是不可恢复的,则必须重新引导域才能再次使用该板。



在插入板之前,连接点的状况和情况分别为:

在物理上插入板之后,状况和情况将分别为:

在逻辑连接连接点之后,状况和情况将分别为:

配置操作

在配置操作期间,如果板插槽的状况为已断开连接,则 DR 会尝试连接该板插槽。然后,它会对在连接操作期间创建的设备树进行遍历。(如有必要,DR 会创建 Solaris OS 设备树节点并连接相应的设备驱动程序。)

配置期间,各 CPU 将被添加至 CPU 列表中;而内存则被初始化并添加至系统内存池中。在成功完成配置操作之后,即可正常使用 CPU 和内存。

对于 I/O 设备,请使用 mount(1M) 和 ifconfig(1M) 命令来准备这些设备。

如果将板配置到域中时您使用的是 cfgadm 命令,则系统会自动连接并配置该板。

断开连接操作

在断开连接操作期间,DR 框架将与 SC 进行通信以便对互连设备进行编程,这样就可以从物理域中拆除该系统板。然后 DR 框架会尝试执行一系列与取消配置操作相关的任务。

即使不切断电源,板也可以处于断开连接的状况。但是,要将板从插槽中拆除,必须断开它的电源并使之处于断开连接的状况。

在板被断开连接之前,状况和情况分别为:

在板被断开连接之后,状况和情况分别为:

取消配置操作

取消配置操作可能包含单一的操作或者两个独立的操作,具体取决于是否存在永久内存。如果系统板上包含永久内存,则在执行取消配置操作之前,DR 将把域中指定板上的内存内容移至目标板的可用内存中。有关包含永久内存的板的信息,请参阅永久内存和非永久内存


DR 概念图示

DR 操作允许您在不中止系统的情况下,断开随后重新连接系统电路板。您可以在系统保持运行的同时,使用 DR 操作来添加或删除系统资源。

下面的实例取自 Sun Fire 高端系统,但是其中的基本思想也适用于中型系统。



注 - Sun Fire E25K 和 Sun Fire 15K 系统最多可支持 18 块系统板和 18 块 I/O 板,编号为 0 到 17。



域 A 包含系统板 0 和 2,以及 I/O 板 2。域 B 包含系统板 1 和 3,以及 I/O 板 1、3 和 4。


图 2-1 重新配置之前的域 A 和域 B


要将系统板 4 和 I/O 板 0 分配给域 A,以及将 I/O 板 4 从域 B 移至域 A,您可以使用 Sun Management Center 软件的 GUI,或者在每个域中都使用 cfgadm(1M) 命令。

1. 在域 B 中使用以下命令断开 I/O 板 4。


# cfgadm -c disconnect -o nopoweroff,unassign IO4

 

2. 在域 A 中使用以下命令将系统板 4 及 I/O 板 0 和 4 分配、连接并配置到域 A。


# cfgadm -c configure SB4 IO0 IO4

 

下面的系统配置便是上述操作的结果。只有板的连接方式发生了变化,而这些板在机箱内部的物理分布与原来相比并无变化。


图 2-2 重新配置之后的域 A 和域 B