跳过导航链接 | |
退出打印视图 | |
手册页第 1M 部分:系统管理命令 Oracle Solaris 11 Information Library (简体中文) |
- cfgadm 命令,用于系统板管理
cfgadm -l [-a] [-o parsable] ap_id...
cfgadm -c function [-f] [-y | -n] [-o unassign | nopoweroff] [-v] ap_id...
cfgadm -t [-v] ap_id...
cfgadm -x [-f] [-v] function ap_id...
cfgadm_sbd 插件提供动态重新配置功能,适用于 sbd 类系统板的连接、配置、取消配置和断开连接操作。此外,您还可以通过它连接系统板或断开其与正在运行的系统的连接而不必重新引导系统。
cfgadm 命令驻留在 /usr/sbin 中。请参见 cfgadm(1M)。cfgadm_sbd 插件驻留在 /usr/platform/sun4u/lib/cfgadm 中。
每个板槽都会在设备树中显示为单个挂接点。每个组件都会显示为一个动态挂接点。您可以使用 -a 选项查看每个组件的类型、状态和状况,以及每个板槽的状态和状况。
cfgadm 选项的执行情况取决于具体的平台。此外,挂接点的形式在不同的平台也各不相同。有关更多信息,请参见“平台说明”部分。
以下为组件状况的名称和描述:
组件测试失败。
组件运行正常。
组件未经测试。
以下为组件插口状态的名称和描述:
组件已连接到板槽。
以下为组件插卡状态的名称和描述:
组件可供 Solaris 操作环境使用。
组件无法供 Solaris 操作环境使用。
以下为板状况的名称和描述:
板测试失败。
板运行正常。
板未经测试。
板槽不可用。
插入板时,插口状态将从 empty(空)更改为 disconnected(断开)。移除板时,插口状态将从 disconnected(断开)更改为 empty(空)。
注意:移除处于 connected(已连接)状态或虽已通电但仍处于 disconnected(断开)状态的板会导致操作系统崩溃,并可能造成系统的永久损坏。
以下为板的插口状态的名称和描述:
板已通电并连接到系统总线。您只能在板进入 connected(已连接)状态以后才能查看其上的组件。
板已断开与系统总线的连接。板在不断电的情况下,也可以处于 disconnected(断开)状态。不过,在将板从插槽中移除之前,该板必须已断电并处于 disconnected(断开)状态。
板不存在。
断开的板的插卡状态始终为 unconfigured(未配置)。下表包含板的插卡状态的名称和描述:
板上至少有一个组件已配置。
板上的所有组件均未配置。
基于动态系统域 (dynamic system domain, DSD)(在本文档中简称域)的平台可以将机箱中的插槽分隔成以电子方式隔离的硬件分区(即 DSD)。不基于 DSD 的平台可将所有插槽永久性地分配给系统。
插槽可以为空,也可以处于填充状态,还可以分配或提供给任何数目的域使用。可供给定域使用的插槽数由在系统控制器上进行维护的可用组件列表 (ACL) 控制。ACL 不是指由 Solaris 操作环境提供的访问控制列表。
插槽仅在位于域的 ACL 中且尚未分配给其他域的情况下才对该域可见。未分配的插槽对于其 ACL 中包含该插槽的所有域均可见。将插槽分配给某个域以后,该插槽对于其他任何域都不再可见。
如果插槽对于某个域可见但尚未分配,则必须先将该插槽分配给该域,然后才能应用其他任何状态更改命令。分配操作可以通过 -x assign 显式完成,也可以在连接过程中隐式完成。必须先取消分配给某个域的插槽,然后才能允许其他域使用该插槽。取消分配始终是显式的,可以直接使用 -x unassign 取消分配,也可以使用 -o unassign 以选项方式断开连接。
更改板槽状态或板上组件状态的函数可以针对任何挂接点并行发出。在某个给定时间,只允许一个状态更改操作。状态更改信息中 "Busy"(忙)字段中的 Y 表示某个操作正在进行中。
以下列表包含可以进行状态更改的函数:
configure
unconfigure
connect
disconnect
更改板可用性的命令可以针对任何挂接点并行发出。在某个给定时间,只允许一个可用性更改操作。这些函数也更改 cfgadm -l 输出中的信息字符串。"Busy"(忙)字段中的 Y 表示某个操作正在进行中。
以下列表包含可以进行可用性更改的函数:
assign
unassign
更改板槽状况或板上组件状况的函数可以针对任何挂接点并行发出。在某个给定时间,只允许一个状况更改操作。这些函数也更改 cfgadm -l 输出中的信息字符串。"Busy"(忙)字段中的 Y 表示某个操作正在进行中。
以下列表包含可以进行状况更改的函数:
poweron
poweroff
test
本节包含取消配置过程的描述,并说明了在移动常驻内存过程中的不同阶段源板和目标板的状态。
在以下代码示例中,板 0 上的常驻内存必须移至域中的其他板。因此,板 0 为源板,板 1 为目标板。
当系统将板的状态标记为忙时,不能在该板上启动状态更改操作。为了简便起见,已删除代理示例中的 CPU 信息。
此过程通过以下命令开始:
# cfgadm -c unconfigure -y SB0::memory &
首先,必须删除板 1 上与板 0 上的常驻内存处于同一地址范围内的内存。在此阶段,源板、目标板和内存挂接点均标记为忙。可以使用以下命令来显示状态:
# cfgadm -a -s cols=ap_id:type:r_state:o_state:busy SB0 SB1 Ap_Id Type Receptacle Occupant Busy SB0 CPU connected configured y SB0::memory memory connected configured y SB1 CPU connected configured y SB1::memory memory connected configured y
删除板 1 上的相应内存以后,该内存将标记为 unconfigured(未配置)。板 0 上的内存始终为 configured(已配置),但仍会标记为忙,如下例所示。
Ap_Id Type Receptacle Occupant Busy SB0 CPU connected configured y SB0::memory memory connected configured y SB1 CPU connected configured y SB1::memory memory connected unconfigured n
然后,板 0 上的内存将复制到板 1。复制完成以后,将切换内存的插卡状态。板 0 上的内存变为 unconfigured(未配置),而板 1 上的内存变为 configured(已配置)。在该过程的这一阶段,仅板 0 的状态仍为忙,如下例所示。
Ap_Id Type Receptacle Occupant Busy SB0 CPU connected configured y SB0::memory memory connected unconfigured n SB1 CPU connected configured n SB1::memory memory connected configured n
整个过程完成以后,板 0 上的内存仍为 unconfigured(未配置),但挂接点的状态不为忙,如下例所示。
Ap_Id Type Receptacle Occupant Busy SB0 CPU connected configured n SB0::memory memory connected unconfigured n SB1 CPU connected configured n SB1::memory memory connected configured n
常驻内存已移动,板 0 上的内存已取消配置。此时,您可以在任意一个板上启动新的状态更改操作。
您可以紧随由系统板插件进行解释的选项之后指定特定于平台的选项。所有特定于平台的选项必须以 platform 关键字开头。以下示例包含了带特定于平台的选项的命令的通用格式:
command -o sbd_options,platform=platform_options
此手册页不包括 cfgadm 命令的 -v、-a、-s 或 -h 选项。有关这些选项的描述,请参见 cfgadm(1M)。以下选项受 cfgadm_sbd 插件支持:
执行状态更改函数。您可以使用以下函数:
将插卡状态更改为 unconfigured(未配置)。此函数适用于系统板槽以及系统板上的所有组件。
unconfigure 函数可从 CPU 列表中移除 CPU,并从系统内存池中删除物理内存。如果有设备仍处于使用状态,cfgadm 命令会失败并将失败情况报告给用户。只要设备不再处于忙的状态,您就可以立即重试该命令。如果 CPU 仍在使用,则在继续操作之前,必须确保该 CPU 已关闭。请参见 pbind(1M)、psradm(1M) 和 psrinfo(1M)。
unconfigure 函数会将物理内存移至其他系统板,然后才会将该内存从要取消配置的板上删除。如果无法在其他板上找到足够的内存,或者无法找到合适的物理内存范围,命令将失败,具体取决于要移动的内存的类型。
对于常驻内存,必须在移动内存以及对内存控制器进行重新编程时暂停(即停止)操作系统。如果必须暂停操作系统,系统会提示您执行该操作。您始终可以使用 -y 或 -n 选项来回答(分别代表“是”或“否”)。
移动内存可能需要数分钟才能完成,具体取决于内存量和系统负载。您可以通过对内存挂接点发出状态命令来监视操作进度。您也可以通过停止 cfgadm 命令来中断内存操作。删除的内存将返回给系统内存池。
将插口状态更改为 disconnected(断开)。此函数仅适用于系统板槽。
如果插卡状态为 configured(已配置),disconnect 函数会尝试取消对该插卡的配置,然后才会关闭系统板的电源。此时可以将板从插槽中移除。
应用此函数后,板在支持动态系统域的平台上将处于 assigned(已分配)状态。
如果指定 -o nopoweroff,则 disconnect 函数将使板处于通电状态。如果指定 -o unassign,则 disconnect 函数将从域中取消对板的分配。
如果从域中取消对板的分配,可将其分配给其他域。不过,如果将其分配给其他域,该板将无法提供给取消分配操作所发生的域使用。
将插卡状态更改为 configured(已配置)。此函数适用于系统板槽以及系统板上的任意组件。
如果插口状态为 disconnected(断开),configure 函数会尝试连接该插口。然后,它会遍历由 connect 函数创建的设备树,并在必要情况下附加这些设备。运行该函数可以对板上的所有组件进行配置,已经配置的组件除外。
对于 CPU,configure 函数可将 CPU 添加到 CPU 列表。对于内存,configure 函数会在确保内存已初始化的基础上将其添加到系统内存池。CPU 和内存在 configure 函数成功完成后即可使用。
对于 I/O 设备,必须在使用设备之前先使用 mount 和 ifconfig 命令。请参见 ifconfig(1M) 和 mount(1M)。
将插口状态更改为 connected(已连接)。此函数仅适用于系统板槽。
如果板槽尚未分配给域,connect 函数会尝试将该板槽分配给域。接下来,该函数会对板执行通电和测试操作,然后会将板以电子方式连接到系统总线并对组件进行探测。
成功完成 connect 函数以后,可使用 -a 选项来查看板上组件的状态。connect 函数可以让所有组件都处于 unconfigured(未配置)状态。
赋值步骤仅适用于支持动态系统域的平台。
覆盖软件状态更改约束。
-f 选项从不覆盖硬件和操作系统的基本安全性和可用性约束。
列出按 -s、-v 和 -a 选项(详见 cfgadm(1M))控制格式指定的挂接点的状态和状况。cfgadm_sbd 插件在 info(信息)字段中提供了具体的信息,如下所述。该信息的格式可通过 -o parsable 选项进行更改。
可解析的 info(信息)字段由以下内容组成:
cpu 类型显示以下信息:
其中 # 为数字,表示 CPU 的 ID。如果存在多个 #,则表示该 CPU 具有多个活动的虚拟处理器。
其中 # 为数字,表示 CPU 的速度(单位:MHz)。
其中 # 为数字,表示 ecache 的大小(单位:MB)。如果 CPU 具有多个活动的虚拟处理器,则 ecache 既可在这些虚拟处理器之间共享,也可在其间进行划分。
memory 类型会根据情况显示以下信息:
其中 # 为数字,表示基本物理地址。
其中 # 为数字,表示内存大小(单位:KB)。
其中 # 为数字,表示常驻内存的大小(单位:KB)。
一种操作系统设置,可防止取消对内存的配置。
该板与其他板交错在一起。
表示源挂接点。
表示目标挂接点。
其中 # 为数字,表示已删除的内存量(单位:KB)。
其中 # 为数字,表示要删除的内存量(单位:KB)。
io 类型显示以下信息:
表示 I/O 组件的物理路径。
引用了 I/O 组件。
board 类型显示以下布尔名称。如果这些名称不存在,则使用相反的名称。
板已分配给域。
板已通电。
如果未指定 -o parsable 选项,同样的项会以更具可读性的格式显示在 info(信息)字段中。
以布尔 name 或一组由空格字符分隔的 name=value 对的方式返回 info(信息)字段中的信息。
-o parsable 选项可与 -s 选项结合使用。有关 -s 选项的更多信息,请参见 cfgadm(1M) 手册页。
对板进行测试。
连接板之前,该板必须通过相应级别的测试。
使用此选项时,将始终尝试对板进行测试,即使该板已通过相应级别的测试也是如此。发出 -c connect 状态更改函数时,也会进行测试,此时,如果该板显示已完成相应级别的测试,则可跳过测试步骤。因此,可以使用 -t 选项来明确要求对板进行测试。
执行 sbd-class 函数。您可以使用以下函数:
将板分配给域。
插口状态必须为 disconnected(断开)或 empty(空)。板也必须列在域可用组件列表中。请参见“动态系统域”。
从域中取消对板的分配。
插口状态必须为 disconnected(断开)或 empty(空)。板也必须列在域可用组件列表中。请参见“动态系统域”。
为系统板通电。
插口状态必须为 disconnected(断开)。
关闭系统板的电源。
插口状态必须为 disconnected(断开)。
支持下列操作数:
对于 Sun Fire 15K 之类的 Sun Fire 高端系统来说,插口挂接点 ID 采用的是 SBX 或 IOX 格式,其中 X 即槽号。
具体格式取决于平台,通常与计算机上的物理标签相对应。请参见“说明”部分中特定于平台的信息。
组件挂接点 ID 采用 component_typeX 格式,其中 component_type 即“组件类型”中描述的组件类型之一,X 即组件号。组件号是与板相关的设备号。
上述约定不适用于内存组件。内存挂接点上的任何 DR 操作都会影响系统板上的所有内存。
以下示例显示了 Sun Fire 15K 系统上的用户输入和系统输出。用户输入(尤其是对挂接点的引用)和系统输出在诸如 Sun Fire 中型系统(如 6800)之类的其他 Sun Fire 系统上可能会有所不同。有关如何在非 Sun Fire 高端机型上使用 cfgadm_sbd 插件的具体信息,请参见“平台说明”。
示例 1 列出所有系统板
# cfgadm -a -s "select=class(sbd)" Ap_Id Type Receptacle Occupant Condition SB0 CPU connected configured ok SB0::cpu0 cpu connected configured ok SB0::memory memory connected configured ok IO1 HPCI connected configured ok IO1::pci0 io connected configured ok IO1::pci1 io connected configured ok SB2 CPU disconnected unconfigured failed SB3 CPU disconnected unconfigured unusable SB4 unknown empty unconfigured unknown
本示例演示以下状况的映射:
插槽 2 中的板测试失败。
插槽 3 不可用,因此无法将板以热插拔方式插入该插槽。
示例 2 列出系统板上的所有 CPU
# cfgadm -a -s "select=class(sbd):type(cpu)" Ap_Id Type Receptacle Occupant Condition SB0::cpu0 cpu connected configured ok SB0::cpu1 cpu connected configured ok SB0::cpu2 cpu connected configured ok SB0::cpu3 cpu connected configured ok
示例 3 显示 CPU 信息字段
# cfgadm -l -s noheadings,cols=info SB0::cpu0 cpuid 16, speed 400 MHz, ecache 8 Mbytes
示例 4 显示可解析格式的 CPU 信息字段
# cfgadm -l -s noheadings,cols=info -o parsable SB0::cpu0 cpuid=16 speed=400 ecache=8
示例 5 显示 I/O 板上的设备
# cfgadm -a -s noheadings,cols=ap_id:info -o parsable IO1 IO1 powered-on assigned IO1::pci0 device=/devices/saf@0/pci@0,2000 referenced IO1::pci1 device=/devices/saf@0/pci@1,2000 referenced
示例 6 监视取消配置操作
在以下示例中,显示的内存大小以 KB 为单位。
# cfgadm -c unconfigure -y SB0::memory & # cfgadm -l -s noheadings,cols=info -o parsable SB0::memory SB1::memory address=0x0 size=2097152 permanent=752592 target=SB1::memory deleted=1273680 remaining=823472 address=0x1000000 size=2097152 source=SB0::memory
示例 7 将插槽分配给域
# cfgadm -x assign SB2
示例 8 从域中取消对插槽的分配
# cfgadm -x unassign SB3
有关以下属性的说明,请参见 attributes(5):
|
接口稳定性在提升。输出稳定性并不稳定。
cfgadm(1M)、devfsadm(1M)、ifconfig(1M)、mount(1M)、pbind(1M)、psradm(1M)、psrinfo(1M)、config_admin(3CFGADM)、attributes(5)
本节包含有关如何监视内存删除操作进度的信息,以及特定于平台的信息。
可以使用以下 shell 脚本来监视内存删除操作的进度。
# cfgadm -c unconfigure -y SB0::memory & # watch_memdel SB0 #!/bin/sh # This is the watch_memdel script. if [ -z "$1" ]; then printf "usage: %s board_id\n" `basename $0` exit 1 fi board_id=$1 cfgadm_info='cfgadm -s noheadings,cols=info -o parsable' eval `$cfgadm_info $board_id::memory` if [ -z "$remaining" ]; then echo no memory delete in progress involving $board_id exit 0 fi echo deleting target $target while true do eval `$cfgadm_info $board_id::memory` if [ -n "$remaining" -a "$remaining" -ne 0 ] then echo $deleted KBytes deleted, $remaining KBytes remaining remaining= else echo memory delete is done exit 0 fi sleep 1 done exit 0
以下语法用于引用 Sun Enterprise 10000 系统上的挂接点:
board::component
...其中 board 是指系统板,component 是指单个组件。系统板的编号范围是 SB0(零)到 SB15。最多可提供十六个系统板。
在 Sun Enterprise 10000 域上运行的 DR 3.0 型号只支持 cfgadm_sbd 插件所提供功能中很有限的一部分。唯一支持的操作是查看域中挂接点的状态。这对应于 -l 选项及其所有关联的选项。
尝试在域中执行其他任何操作都会导致错误,指出操作不受支持。所有添加或移除系统板的操作都必须从系统服务处理器启动。
以下语法用于引用 Sun Fire 高端系统上的挂接点:
board::component
其中 board 是指系统板或 I/O 板,component 是指单个组件。
系统板的编号范围从 SB0(零)到 SB17,I/O 板的编号范围从 IO0(IO 零)到 IO17,具体取决于系统的配置。(最多可提供十八个系统板和 I/O 板。)
-t 和 -x 选项在 Sun Fire 高端系统平台上的行为并不相同。以下列表对其行为进行了描述:
系统控制器可通过运行 LPOST,按 hpost 命令排序使用 CPU 来测试系统板。测试 I/O 板时,驱动程序会按 -t 选项的要求开始测试,且测试不需用户干预即可自动运行。驱动程序将取消对某个 CPU 及某段连续物理内存的配置,然后向系统控制器发送进行板测试的命令。系统控制器将使用 CPU 和内存从事务/错误箱内部对 I/O 板进行测试。只能使用系统板(而非 MCPU 板)上的 CPU 来测试 I/O 板。
在 Sun Fire 高端系统管理模型中,平台管理员可以使用每个域的可用组件列表来控制平台硬件。此信息保留在系统控制器上。只有平台管理员可以修改域的可用组件列表。
仅当该域的可用组件列表中包含某个板的情况下,域管理员才能对该板执行分配或取消分配操作。平台管理员没有这种限制,因此即使在域的可用组件列表中不含某个板,也可以对该板执行分配或取消分配操作。
以下为组件类型的名称和描述:
CPU
I/O 设备
内存
注意:针对某个内存组件的操作会影响板上的所有内存组件。
Sun Fire 中端服务器(如 6800、4810、4800 及 3800 系统)上的挂接点引用与 Sun Fire 高端系统上的挂接点引用略有不同。以下语法用于引用除 Sun Fire 15K 之外的 Sun Fire 系统上的挂接点:
N#.board::component
其中 N# 是指节点,board 是指系统板或 I/O 板,component 是指单个组件。
系统板的编号范围从 SB0 到 SB5,I/O 板的编号范围从 IB6 到 IB9,具体取决于系统的配置。(最多可提供六个系统板和四个 I/O 板。)
以下为组件类型的名称和描述:
CPU
I/O 设备
内存
注意:针对某个内存组件的操作会影响板上的所有内存组件。