手册页部分 1M: 系统管理命令

退出打印视图

更新时间: 2014 年 7 月
 
 

cfgadm_sbd(1M)

名称

cfgadm_sbd - 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 选项的执行情况取决于具体的平台。此外,连接点的形式在不同的平台也各不相同。有关更多信息,请参见平台附注部分。

组件状况

以下为组件状况的名称和描述:

failed(失败)

组件测试失败。

ok(正常)

组件运行正常。

unknown(未知)

组件未经测试。

组件状态

以下为组件插口状态的名称和描述:

connected(已连接)

组件已连接到板槽。

以下为组件插卡状态的名称和描述:

configured(已配置)

组件可供 Solaris 操作环境使用。

unconfigured(未配置)

组件无法供 Solaris 操作环境使用。

板状况

以下为板状况的名称和描述:

failed(失败)

板测试失败。

ok(正常)

板运行正常。

unknown(未知)

板未经测试。

unusable(不可用)

板槽不可用。

板状态

插入板时,插口状态将从 empty(空)更改为 disconnected(断开)。移除板时,插口状态将从 disconnected(断开)更改为 empty(空)。

注意:移除处于 connected(已连接)状态或虽已通电但仍处于 disconnected(断开)状态的板会导致操作系统崩溃,并可能造成系统的永久损坏。

以下为板的插口状态的名称和描述:

connected(已连接)

板已通电并连接到系统总线。您只能在板进入 connected(已连接)状态以后才能查看其上的组件。

disconnected(断开)

板已断开与系统总线的连接。板在不断电的情况下,也可以处于 disconnected(断开)状态。不过,在将板从插槽中移除之前,该板必须已断电并处于 disconnected(断开)状态。

empty(空)

板不存在。

断开的板的插卡状态始终为 unconfigured(未配置)。下表包含板的插卡状态的名称和描述:

configured(已配置)

板上至少有一个组件已配置。

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 插件支持:

–c function

执行状态更改函数。您可以使用以下函数:

unconfigure(取消配置)

将插卡状态更改为 unconfigured(未配置)。此函数适用于系统板槽以及系统板上的所有组件。

unconfigure 函数可从 CPU 列表中移除 CPU,并从系统内存池中删除物理内存。如果有设备仍处于使用状态,cfgadm 命令会失败并将失败情况报告给用户。只要设备不再处于忙的状态,您就可以立即重试该命令。如果 CPU 仍在使用,则在继续操作之前,必须确保该 CPU 已关闭。请参见 pbind(1M)psradm(1M)psrinfo(1M)

unconfigure 函数会将物理内存移至其他系统板,然后才会将该内存从要取消配置的板上删除。如果无法在其他板上找到足够的内存,或者无法找到合适的物理内存范围,命令将失败,具体取决于要移动的内存的类型。

对于常驻内存,必须在移动内存以及对内存控制器进行重新编程时暂停(即停止)操作系统。如果必须暂停操作系统,系统会提示您执行该操作。您始终可以使用 –y–n 选项来回答(分别代表“是”或“否”)。

移动内存可能需要数分钟才能完成,具体取决于内存量和系统负载。您可以通过对内存连接点发出状态命令来监视操作进度。您也可以通过停止 cfgadm 命令来中断内存操作。删除的内存将返回给系统内存池。

disconnect

将插口状态更改为 disconnected(断开)。此函数仅适用于系统板槽。

如果插卡状态为 configured(已配置),disconnect 函数会尝试取消对该插卡的配置,然后才会关闭系统板的电源。此时可以将板从插槽中移除。

应用此函数后,板在支持动态系统域的平台上将处于 assigned(已分配)状态。

如果指定 –o nopoweroff,则 disconnect 函数将使板处于通电状态。如果指定 –o unassign,则 disconnect 函数将从域中取消对板的分配。

如果从域中取消对板的分配,可将其分配给其他域。不过,如果将其分配给其他域,该板将无法提供给取消分配操作所发生的域使用。

configure(配置)

将插卡状态更改为 configured(已配置)。此函数适用于系统板槽以及系统板上的任意组件。

如果插口状态为 disconnected(断开),configure 函数会尝试连接该插口。然后,它会遍历由 connect 函数创建的设备树,并在必要情况下附加这些设备。运行该函数可以对板上的所有组件进行配置,已经配置的组件除外。

对于 CPU,configure 函数可将 CPU 添加到 CPU 列表。对于内存,configure 函数会在确保内存已初始化的基础上将其添加到系统内存池。CPU 和内存在 configure 函数成功完成后即可使用。

对于 I/O 设备,必须在使用设备之前先使用 mountifconfig 命令。请参见 ifconfig(1M)mount(1M)

connect

将插口状态更改为 connected(已连接)。此函数仅适用于系统板槽。

如果板槽尚未分配给域,connect 函数会尝试将该板槽分配给域。接下来,该函数会对板执行通电和测试操作,然后会将板以电子方式连接到系统总线并对组件进行探测。

成功完成 connect 函数以后,可使用 –a 选项来查看板上组件的状态。connect 函数可以让所有组件都处于 unconfigured(未配置)状态。

赋值步骤仅适用于支持动态系统域的平台。

–f

覆盖软件状态更改约束。

–f 选项从不覆盖硬件和操作系统的基本安全性和可用性约束。

–l

列出按 –s–v–a 选项(详见 cfgadm(1M))控制格式指定的连接点状态和状况。cfgadm_sbd 插件在 info(信息)字段中提供了具体的信息,如下所述。该信息的格式可通过 –o parsable 选项进行更改。

可解析的 info(信息)字段由以下内容组成:

cpu

cpu 类型显示以下信息:

cpuid=#[,#…]

其中 # 为数字,表示 CPU 的 ID。如果存在多个 #,则表示该 CPU 具有多个活动的虚拟处理器。

speed=#

其中 # 为数字,表示 CPU 的速度(单位:MHz)。

ecache=#

其中 # 为数字,表示 ecache 的大小(单位:MB)。如果 CPU 具有多个活动的虚拟处理器,则 ecache 既可在这些虚拟处理器之间共享,也可在其间进行划分。

memory

memory 类型会根据情况显示以下信息:

address=#

其中 # 为数字,表示基本物理地址。

size=#

其中 # 为数字,表示内存大小(单位:KB)。

永久的=#

其中 # 为数字,表示常驻内存的大小(单位:KB)。

unconfigurable

一种操作系统设置,可防止取消对内存的配置。

inter-board-interleave

该板与其他板交错在一起。

source=ap_id

表示源连接点。

target=ap_id

表示目标连接点。

deleted=#

其中 # 为数字,表示已删除的内存量(单位:KB)。

remaining=#

其中 # 为数字,表示要删除的内存量(单位:KB)。

io

io 类型显示以下信息:

device=path

表示 I/O 组件的物理路径。

referenced

引用了 I/O 组件。

board 类型显示以下布尔名称。如果这些名称不存在,则使用相反的名称。

assigned

板已分配给域。

powered-on

板已通电。

如果未指定 –o parsable 选项,同样的项会以更具可读性的格式显示在 info(信息)字段中。

–o parsable

以布尔 name 或一组由空格字符分隔的 name=value 对的方式返回 info(信息)字段中的信息。

–o parsable 选项可与 –s 选项结合使用。有关 –s 选项的更多信息,请参见 cfgadm(1M) 手册页。

–t

对板进行测试。

连接板之前,该板必须通过相应级别的测试。

使用此选项时,将始终尝试对板进行测试,即使该板已通过相应级别的测试也是如此。发出 –c connect 状态更改函数时,也会进行测试,此时,如果该板显示已完成相应级别的测试,则可跳过测试步骤。因此,可以使用 –t 选项来明确要求对板进行测试。

–x function

执行 sbd-class 函数。您可以使用以下函数:

assign

将板分配给域。

插口状态必须为 disconnected(断开)或 empty(空)。板也必须列在域可用组件列表中。请参见“动态系统域”。

unassign

从域中取消对板的分配。

插口状态必须为 disconnected(断开)或 empty(空)。板也必须列在域可用组件列表中。请参见“动态系统域”。

poweron

为系统板通电。

插口状态必须为 disconnected(断开)。

poweroff

关闭系统板的电源。

插口状态必须为 disconnected(断开)。

操作数

支持下列操作数:

Receptacle ap_id

对于 Sun Fire 15K 之类的 Sun Fire 高端系统来说,插口连接点 ID 采用的是 SBXIOX 格式,其中 X 即槽号。

具体格式取决于平台,通常与计算机上的物理标签相对应。请参见“附注”部分中特定于平台的信息。

Component ap_id

组件连接点 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)

属性类型
属性值
可用性
system/library/platform
稳定性
请参见下文。

接口稳定性为 "Evolving"(发展中)。输出稳定性为 "Unstable"(不稳定)。

另请参见

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 平台说明

以下语法用于引用 Sun Enterprise 10000 系统上的连接点:


board::component

...其中 board 是指系统板,component 是指单个组件。系统板的编号范围是 SB0(零)到 SB15。最多可提供十六个系统板。

在 Sun Enterprise 10000 域上运行的 DR 3.0 型号只支持 cfgadm_sbd 插件所提供功能中很有限的一部分。唯一支持的操作是查看域中连接点的状态。这对应于 –l 选项及其所有关联的选项。

尝试在域中执行其他任何操作都会导致错误,指出操作不受支持。所有添加或移除系统板的操作都必须从系统服务处理器启动。

Sun Fire 高端系统平台说明

以下语法用于引用 Sun Fire 高端系统上的连接点:


board::component

其中 board 是指系统板或 I/O 板,component 是指单个组件。

系统板的编号范围从 SB0(零)到 SB17,I/O 板的编号范围从 IO0(IO 零)到 IO17,具体取决于系统的配置。(最多可提供十八个系统板和 I/O 板。)

–t–x 选项在 Sun Fire 高端系统平台上的行为并不相同。以下列表对其行为进行了描述:

–t

系统控制器可通过运行 LPOST,按 hpost 命令排序使用 CPU 来测试系统板。测试 I/O 板时,驱动程序会按 –t 选项的要求开始测试,且测试不需用户干预即可自动运行。驱动程序将取消对某个 CPU 及某段连续物理内存的配置,然后向系统控制器发送进行板测试的命令。系统控制器将使用 CPU 和内存从事务/错误箱内部对 I/O 板进行测试。只能使用系统板(而非 MCPU 板)上的 CPU 来测试 I/O 板。

–x assign | unassign

在 Sun Fire 高端系统管理模型中,平台管理员可以使用每个域的可用组件列表来控制平台硬件。此信息保留在系统控制器上。只有平台管理员可以修改域的可用组件列表。

仅当该域的可用组件列表中包含某个板的情况下,域管理员才能对该板执行分配或取消分配操作。平台管理员没有这种限制,因此即使在域的可用组件列表中不含某个板,也可以对该板执行分配或取消分配操作。

Sun Fire 15K 组件类型

以下为组件类型的名称和描述:

cpu

CPU

io

I/O 设备

memory

内存

注意:针对某个内存组件的操作会影响板上的所有内存组件。

Sun Fire 中型系统平台说明

Sun Fire 中端服务器(如 6800、4810、4800 及 3800 系统)上的连接点引用与 Sun Fire 高端系统上的连接点引用略有不同。以下语法用于引用除 Sun Fire 15K 之外的 Sun Fire 系统上的连接点:


N#.board::component

其中 N# 是指节点,board 是指系统板或 I/O 板,component 是指单个组件。

系统板的编号范围从 SB0SB5,I/O 板的编号范围从 IB6IB9,具体取决于系统的配置。(最多可提供六个系统板和四个 I/O 板。)

Sun Fire 中型系统组件类型

以下为组件类型的名称和描述:

cpu

CPU

pci

I/O 设备

memory

内存

注意:针对某个内存组件的操作会影响板上的所有内存组件。