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

退出打印视图

更新时间: 2014 年 7 月
 
 

cfgadm(1M)

名称

cfgadm - 配置管理

用法概要

/usr/sbin/cfgadm [-f] [-y | -n] [-v] [-o hardware_options]
     -c function ap_id...
/usr/sbin/cfgadm [-f] [-y | -n] [-v] [-o hardware_options]
     -x hardware_function ap_id...
/usr/sbin/cfgadm [-v] [-a] [-s listing_options] 
     [-o hardware_options] [-l [ap_id | ap_type]]
/usr/sbin/cfgadm [-v] [-o hardware_options] -t ap_id...
/usr/sbin/cfgadm [-v] [-o hardware_options] -h 
     [ap_id | ap_type]

描述

cfgadm 命令提供了针对动态可重新配置的硬件资源的配置管理操作。这些操作包括显示状态 (–l)、启动测试 (–t)、调用配置状态更改 (–c)、调用特定于硬件的函数 (–x) 以及获取配置管理帮助消息 (–h)。配置管理操作在连接点上执行,这些位置的系统软件支持在继续运行 Solaris 的过程中动态重新配置硬件资源。0

配置管理会区分计算机上实际存在的硬件资源和对 Solaris 可见的已配置硬件资源。配置管理函数本性是特定于硬件的,可通过调用特定于硬件的库来执行。

配置管理在连接点上运行。位于连接点处的硬件资源在系统运行期间可能是物理上可替换的,也可能是物理上不可替换的,但可通过配置管理界面动态重新配置。

连接点定义了两个唯一的元素,这些元素不同于位于连接点之外的硬件资源。连接点的两个元素分别为插口插卡。物理插入或移除硬件资源通常在连接点上执行,这些操作会导致获得插口或失去插卡。配置管理支持在连接点上执行物理插入和移除操作以及其他配置管理函数。

连接点具有相关联的状态和状况信息。配置管理界面可用于控制连接点状态的转换。插口可按以下三种状态之一的形式存在:empty(空)、disconnected(断开)或 connected(已连接),而插卡则按以下两种状态之一的形式存在:configured(已配置)或 unconfigured(未配置)。

插口可提供 empty(空)状态,这是连接点不包含任何插卡时插口的常规状态。如果插口具有将其插卡与常规系统访问隔离的功能,则还可以提供 disconnected(断开)状态。通常情况下,此状态用于在系统将插卡资源完全投入使用之前进行各种特定于硬件的测试,或作为准备物理移除或重新配置插卡的步骤之一。处于 disconnected 状态的插口会尽量在硬件允许的范围内将其插卡与系统隔离开,但也会提供针对测试和设置的访问。插口必须提供 connected(已连接)状态,这样才能允许对插卡内包含的硬件资源进行常规访问。对于包含插卡且当前未执行配置管理操作的插口,connected(已连接)状态是其常规状态。

处于 unconfigured(未配置)状态的插卡上所包含的硬件资源不会用常规 Solaris 数据结构表示,因此不能供 Solaris 使用。未配置插卡上允许执行的操作仅限于配置管理操作。处于 configured(已配置)状态的插卡的硬件资源用常规 Solaris 数据结构表示,因此其中部分或全部硬件资源均可供 Solaris 使用。所有插卡都提供 configured(已配置)和 unconfigured(未配置)两种状态。

连接点可处于以下五种状况之一:unknown(未知)、ok(正常)、failing(即将失败)、failed(失败)或 unusable(不可用)。连接点可在任何状况下进入系统,具体取决于加电自检和非易失性记录保存的结果。

包含处于 configured(已配置)状态的插卡的连接点处于以下四种状况之一:unknown(未知)、ok(正常)、failing(即将失败)或 failed(失败)。如果状况不为 failing(即将失败)或 failed(失败),连接点会在因超出与硬件有关的可恢复错误阈值而执行的操作期间更改为 failing(即将失败)。如果状况不为 failed(失败),连接点可在因不可恢复错误而导致的操作期间更改为 failed(失败)。

具有处于 unconfigured(未配置)状态的插卡的连接点可处于已定义的任何一种状况。在与计算机有关的时间阈值过后,具有 unconfigured(未配置)插卡的连接点的状况会从 ok(正常)衰退为 unknown(未知)。启动测试函数会将连接点的状况更改为 ok(正常)、failing(即将失败)或 failed(失败),具体更改为哪种状况取决于测试结果。对于未提供测试函数的连接点,可将其置于 unknown(未知)状况。如果测试中断,连接点可将状况设置为上一个状况,即 unknown(未知)或 failed(失败)。可对处于 unknown(未知)、ok(正常)、failing(即将失败)或 failed(失败)状况的连接点进行重新测试。

连接点可能会因为多种原因而处于 unusable(不可用)状况,例如插口的电力不足或冷却不够、插卡无法识别、不受支持或配置错误等。处于 unusable(不可用)状况的连接点绝对无法供系统使用。通常会始终处于这种状况,直到物理方面的问题被修复。

连接点还会保持指示正在执行状态更改或重新评估状况的忙信息。

可使用特定于硬件的标识符 (ap_id) 来引用连接点,这些标识符与在系统设备分层结构中的类型和位置相关。ap_id 不能有歧义,必须能够确定单个连接点。支持两种类型的 ap_id 规范:物理和逻辑。物理 ap_id 包含完全指定的路径名,逻辑 ap_id 包含以更用户友好的方式来标识连接点的缩略表示法。

例如,代表系统底板槽号 7 的连接点所包含的物理 ap_id/devices/central/fhc/sysctrl:slot7,而逻辑 ap_idsystem:slot7。再如,系统的第二个 PCI I/O 总线上的第三个插口可能包含的逻辑 ap_idpci2:plug3

连接点也可以动态创建。动态连接点是相对于系统中包含的基本而命名的。动态连接点 ap_id 由基本组件后接两个冒号 (::) 和动态组件组成。基本组件即基本连接点 ap_id。动态组件是特定于硬件的,由相应的特定于硬件的库生成。

例如,考虑一个表示 SCSI HBA 的基本连接点,此连接点包含物理 ap_id /devices/sbus@1f,0/SUNW,fas@e,8800000:scsi 和逻辑 ap_id c0。连接至此 SCSI HBA 的磁盘可用包含逻辑 ap_id c0::dsk/c0t0d0 的动态连接点表示,其中 c0 是基本组件,dsk/c0t0d0 是特定于硬件的动态组件。与之类似,此动态连接点的物理 ap_id 应该是:/devices/sbus@1f,0/SUNW,fas@e,8800000:scsi::dsk/c0t0d0

ap_type 是逻辑 ap_id 的部分形式,可能存在歧义,无法指定特定的连接点。ap_type 最多只是逻辑 ap_id 部分的子字符串,但不包含冒号 (:) 分隔符。例如,ap_typepci 应该会显示所有具有以 pci 开头的逻辑 ap_id 的连接点。

建议不要使用 ap_type–s 选项的新 select 子选项为选择连接点提供了更为通用和灵活的机制。请参见“选项”部分。

cfgadm 命令主要与特定于硬件的库中包含的与硬件有关的函数进行交互,因此其行为也与硬件有关。

每个配置管理操作可能都需要服务中断。完成请求的函数需要对交互用户执行明显的服务中断,在标准输入上确认的标准错误输出中将会出现提示,然后才会启动函数。始终使用 –y–n 选项来分别回答是或否,即可覆盖确认。特定于硬件的选项,例如测试级别,将所作为使用 –o 选项的子选项提供。

更改系统配置状态的操作由系统日志守护进程 syslogd(1M) 进行审计。

此命令的参数符合 getopt(3C)getsubopt(3C) 语法约定。

选项

支持以下选项:

–a

指定 –l 选项也必须列出动态连接点。

–cfunction

ap_id 指定的连接点上执行状态更改 function

function 指定为 insertremovedisconnectconnectconfigureunconfigure。这些函数可通过调用特定于硬件的库例程来在连接点上执行状态转换,以下列表对其进行了定义。

insert

执行相应的操作以允许用户手动插入插卡,或激活可执行物理插入的硬件提供机制。insert 可能产生特定于硬件的副作用,即会临时暂停部分系统活动。在这种情况下,特定于硬件的库会生成相应的警告消息,并告知用户专门针对相应硬件的特殊注意事项或操作过程。各种特定于硬件的错误都可导致此函数运行失败,并将插口状况设置为 unusable(不可用)。

remove

执行相应的操作以允许用户手动移除插卡,或激活可执行物理移除的硬件提供机制。remove 可能产生特定于硬件的副作用,即会临时暂停部分系统活动。在这种情况下,特定于硬件的库会生成相应的警告消息,并告知用户专门针对相应硬件的特殊注意事项或操作过程。各种特定于硬件的错误都可导致此函数运行失败,并将插口状况设置为 unusable(不可用)。

disconnect

执行特定于硬件的操作,以将插口置于 disconnected(断开)状态,这样可以避免插卡通过此插口在正常情况下运行。

connect

执行特定于硬件的操作,以将插口置于 connected(已连接)状态,这样可以允许插卡通过此插口在正常情况下运行。

configure

执行特定于硬件的操作,以允许 Solaris 使用插卡的硬件资源。已配置的插卡是系统配置的组成部分,可通过 Solaris 设备处理维护命令(例如 psradm(1M)mount(1M)ifconfig(1M))来进行处理。

unconfigure

执行特定于硬件的操作,以从系统中逻辑移除插卡的硬件资源。插卡必须现在配置,且其硬件资源当前不能由 Solaris 使用。

状态转换函数可能因连接点的状况或其他与硬件有关的注意事项而失败。当连接点处于 ok(正常)或 unknown(未知)状况时,所有旨在添加资源的状态更改 functioninsertconnectconfigure)均会传送到特定于硬件的库。所有其他状况都需要使用强制选项,才能够将这些 function 传送到特定于硬件的库。连接点状况不会阻止调用特定于硬件的库以从系统中执行与移除(removedisconnectunconfigure)硬件资源相关的操作。如果连接点处于 unknown(未知)状况,特定于硬件的库可以拒绝状态更改 function

连接点状况不一定是状态更改函数更改的,但如果状态更改操作期间出错,就会更改连接点的状况。通过指定强制选项 (–f),即可尝试覆盖状况以及强制执行可能会失败的状态更改操作。特定于硬件的安全性和完整性检查可以避免强制选项产生任何影响。

–f

强制执行指定的操作。通常情况下,这会覆盖与硬件有关的安全功能。强制执行状态更改操作,即可根据任何与硬件有关的安全性检查,使用未处于 ok(正常)或 unknown(未知)状况的插卡的硬件资源。

–h [ap_id | ap_type  . . . ]

输出帮助消息文本。如果已指定 ap_idap_type,则会为用此参数表示的连接点调用特定于硬件库的帮助例程。

–l [ap_id | ap_type  . . . ]

列出指定的连接点状态和状况。连接点可使用 –s 选项和 select 子选项来过滤。调用不含任何一个操作选项的 cfgadm 等同于调用不含参数的 –l。列表的显示格式由 –v–s 选项控制。如果指定了 –a 选项,连接点便会动态扩展。

–n

抑制任何交互式确认,并假定回答结果为 no(否)。如果未指定 –n–y,则会通过标准错误输出和标准输入来获取交互式确认。如果上述任何标准通道均未响应终端(由 isatty(3C) 确定),则会假定使用 –n 选项。

–ohardware_options

向主命令选项提供特定于硬件的选项。此硬件选项字符串的格式和内容完全是特定于硬件的。选项字符串 hardware_options 符合 getsubopt(3C) 语法约定。

–slisting_options

向列表 (–l) 命令提供列表选项。listing_options 符合 getsubopt(3C) 语法约定。此子选项用于指定连接点选择条件 (select=select_string)、所需的匹配类型 (match=match_type)、列表顺序 (sort=field_spec)、显示的数据(cols=field_speccols2=field_spec)、列分隔符 (delim=string) 以及是否抑制列标题 (noheadings)。

如果指定了 select 子选项,则只会列出符合指定条件的连接点。select 子选项具有以下语法:


cfgadm –s select=attr1(value1):attr2(value2)... 

其中 attrap_idclasstype 其中的一个。ap_id 是指逻辑 ap_id 字段,class 是指连接点类,type 是指类型字段。value1value2 等是要匹配的相应值。匹配类型可由 match 子选项按以下方式指定:


cfgadm –s match=match_type,select=attr1(value1)...

其中,match_type 可以是 exactpartial。缺省值为 exact

select 子选项的参数可用引号引起来,以免被 shell 调用。

field_spec 是用冒号 (:) 串联起来的一个或多个 data-field,例如 data-field:data-field:data-fielddata-fieldap_idphysidr_stateo_stateconditiontypebusystatus_timestatus_time_pclass info 中的其中一个。ap_id 字段的输出是连接点的逻辑名称,physid 字段则包含物理名称。r_state 字段可以是 empty(空)、disconnected(断开)或 connected(已连接)。o_state 字段可以是 configured(已配置)或 unconfigured(未配置)。如果连接点正忙,busy(忙)字段为 y;如果不忙,则为 ntype(类型)和 info(信息)字段均是特定于硬件的。status_time 字段会提供 r_stateo_state 或连接点状况上次更改的时间。status_time_p 字段是 status_time 字段的可解析版本。如果连接点具有关联的类,class(类)字段会列出类名。如果连接点没有关联的类,class(类)字段会列出 none(无)。

field_spec 中的字段顺序非常重要:对于 sort 子选项,提供的第一个字段是主排序键。对于 colscols2 子选项,会按照请求的顺序输出这些字段。通过在 sort 子选项的 field_secdata-field 名称之前添加减号 (),即可保留 data-field 上的排序顺序。sort 的缺省值为 ap_idcolscols2 的缺省值取决于是否提供 –v 选项,如果未提供,cols 的值为 ap_id:r_state:o_state:conditioncols2 未设置任何值。如果提供 –vcols 的值为 ap_id:r_state:o_state:condition:infocols2 的值为 status_time:type:busy:physid:delim 的缺省值是单个空格。delim 的值可以是任意长度的字符串。分隔符不能包含逗号 (,) 字符,请参见 getsubopt(3C)。这些列表选项可用于创建可解析的输出。请参见“附注”部分。

–t

对一个或多个连接点执行测试。测试函数用于重新评估连接点的状况。如果 hardware_options 不含测试级别说明符,则会使用可确定硬故障的最快测试。

更全面的测试均是特定于硬件的,并且使用 hardware_options 进行选择。

测试结果用于更新指定插卡的状况,如果找不到故障,则更新为 ok(正常);如果找到了可恢复的故障,则更新为 failing(即将失败);如果找到了不可恢复的故障,则更新为 failed(失败)。

如果测试被中断,连接点状况可恢复为上一个值,如果未找到任何错误,可设置为 unknown(未知);如果只找到可恢复的错误,可设置为 failing(即将失败);如果找到了任何不可恢复的错误,则设置为 failed(失败)。如果测试正常完成且没有出现任何错误,应只将连接点设置为 ok(正常)。

–v

在详细模式下执行。对于 –c–t–x 选项,将会输出提供每个尝试操作结果的消息。对于 –h 选项,将会输出详细的帮助信息。对于 –l 选项,将会输出每个连接点的详细信息。

–xhardware_function

执行特定于硬件的函数。特定于硬件的专用函数可以更改插口或插卡的状态。连接点状况会因为在特定于硬件的专用函数运行期间出现错误而更改。hardware_function 字符串的格式和内容完全是特定于硬件的。选项字符串 hardware_function 符合 getsubopt(3C) 语法约定。

–y

抑制任何交互式确认,并假定回答结果为 yes(是)。

用法

使用此命令所需的特权取决于硬件。通常情况下,缺省系统配置会限制除超级用户的列出选项之外的所有选项。

示例

示例 1 在设备树中列出连接点

以下示例列出了除动态连接点之外的所有连接点。


example# cfgadm

  Ap_Id         Type        Receptacle      Occupant       Cond
system:slot0    cpu/mem     connected       configured     ok
system:slot1    sbus-upa    connected       configured     ok
system:slot2    cpu/mem     connected       configured     ok
system:slot3    unknown     connected       unconfigured   unknown
system:slot4    dual-sbus   connected       configured     failing
system:slot5    cpu/mem     connected       configured     ok
system:slot6    unknown     disconnected    unconfigured   unusable
system:slot7    unknown     empty           unconfigured   ok
c0              scsi-bus    connected       configured     unknown
c1              scsi-bus    connected       configured     unknown

示例 2 列出所有可配置的硬件信息

以下示例列出了当前所有可配置的硬件信息,包括由动态连接点表示的硬件信息:


example# cfgadm -al

  Ap_Id            Type         Receptacle      Occupant        Cond
system:slot0       cpu/mem      connected       configured      ok
system:slot1       sbus-upa     connected       configured      ok
system:slot2       cpu/mem      connected       configured      ok
system:slot3       unknown      connected       unconfigured    unknown
system:slot4       dual-sbus    connected       configured      failing
system:slot5       cpu/mem      connected       configured      ok
system:slot6       unknown      disconnected    unconfigured    unusable
system:slot7       unknown      empty           unconfigured    ok
c0                 scsi-bus     connected       configured      unknown
c0::dsk/c0t14d0    disk         connected       configured      unknown 
c0::dsk/c0t11d0    disk         connected       configured      unknown 
c0::dsk/c0t8d0     disk         connected       configured      unknown
c0::rmt/0          tape         connected       configured      unknown 
c1                 scsi-bus     connected       configured      unknown

示例 3 根据属性有选择性地列出连接点

以下示例列出了包含以 scsi 开头的类、以 c 开头的 ap_id 和以 scsi 开头的 type(类型)字段的所有连接点。–s 选项的参数可用引号引起来,以免被 shell 调用。


example# cfgadm -s "match=partial,select=class(scsi):ap_id(c):type(scsi)"

Ap_Id         Type          Receptacle      Occupant           Cond
 c0          scsi-bus      connected       configured         unknown
 c1          scsi-bus      connected       configured         unknown

示例 4 在详细模式下列出当前可配置的硬件信息

以下示例为详细模式下的 ap-type system 列出了当前可配置的硬件信息。


example# cfgadm -v -l system
Ap_Id                      Receptacle Occupant   Condition Information
When         Type      Busy     Phys_Id
system:slot1               connected  configured ok
Apr  4 23:50 sbus-upa  n        /devices/central/fhc/sysctrl:slot1
system:slot3               connected  configured ok        non-detachable
Apr 17 11:20 cpu/mem   n        /devices/central/fhc/sysctrl:slot3
system:slot5               connected  configured ok
Apr  4 23:50 cpu/mem   n        /devices/central/fhc/sysctrl:slot5
system:slot7               connected  configured ok
Apr  4 23:50 dual-sbus n        /devices/central/fhc/sysctrl:slot7

When 列表示 status_time 字段。

示例 5 使用特定于硬件的 Extended 测试来测试两个插卡

以下示例使用特定于硬件的 extended 测试来测试两个插卡:


example# cfgadm -v -o extended -t system:slot3 system:slot5
Testing attachment point system:slot3 ...  ok
Testing attachment point system:slot5 ...  ok
示例 6 使用强制选项配置插卡

以下示例使用强制选项将处于 failing(即将失败)状态的插卡配置到系统:


example# cfgadm -f -c configure system:slot3
示例 7 从系统中取消配置插卡

以下示例从系统中取消配置了插卡:


example# cfgadm -c unconfigure system:slot4
示例 8 在连接点上配置插卡

以下示例配置了插卡:


example# cfgadm -c configure c0::dsk/c0t0d0

环境变量

请参见 environ(5),了解影响 cfgadm 执行情况的以下环境变量的描述:LC_TIME、 LC_MESSAGES、NLSPATH 和 TZ。

LC_MESSAGES

确定 cfgadm 如何显示列标题和错误消息。输出数据的列出方式不受此变量的设置影响。

LC_TIME

确定 cfgadm 如何显示用户可读的状态更改时间 (status_time)。

TZ

指定转换状态更改的时间时所使用的时区。这也适用于用户可读格式 (status_time) 和可解析格式 (status_time_p)。

退出状态

将返回以下退出值:

0

成功完成。

1

出现错误。

2

指定目标上不支持配置管理。

3

用法错误。

属性

有关下列属性的说明,请参见 attributes(5)

属性类型
属性值
可用性
system/core-os

另请参见

cfgadm_fp(1M)cfgadm_ib(1M)cfgadm_pci(1M)cfgadm_sata(1M)cfgadm_sbd(1M)cfgadm_scsi(1M)cfgadm_usb(1M)ifconfig(1M)mount(1M)prtdiag(1M)psradm(1M)syslogd(1M)config_admin(3CFGADM)getopt(3C)getsubopt(3C)isatty(3C)attributes(5)environ(5)

诊断

诊断消息会出现在标准错误输出中。以下内容不是选项和用法错误,而是此实用程序生成的诊断消息:

cfgadm: Configuration administration not supported onap_id
cfgadm: No library found for ap_id
cfgadm: ap_idis ambiguous
cfgadm: operation: Insufficient privileges
cfgadm: Attachment point is busy, try again
cfgadm: No attachment points with specified attributes found
cfgadm: System is busy, try again
cfgadm: operation: Operation requires a service interruption
cfgadm: operation: Data error: error_text
cfgadm: operation: Hardware specific failure: error_text

有关错误消息的其他详细信息,请参见 config_admin(3CFGADM)

附注

硬件资源以特定于硬件的方式进入取消配置的池。这种情况会出现多次,例如系统初始化或执行取消配置操作之后。处于 unconfigured(未配置)状态的插卡不能供系统使用,除非进行特别干预。这种干预可表现为操作者发出命令或通过自动配置机制的形式干预。

cfgadm 命令的列表选项可用于为其他命令提供可解析输入,例如在 shell 脚本内。对于可解析输出,–s 选项必须用于选择所需的字段。–s 选项还可用于抑制列标题。下列字段会始终生成可解析的输出:ap_idphysidr_stateo_stateconditionbusystatus_time_pclasstype。可解析的输出决不能在字段值中插入空白字符。

以下 shell 脚本片段会查找第一个运行良好的 CPU 类型的 unconfigured(未配置)插卡。


found=
cfgadm -l -s "noheadings,cols=ap_id:r_state:condition:type" | \
while read ap_id r_state cond type
do
     if [ "$r_state" = unconfigured -a "$cond" = ok -a "$type" = CPU ]
     then
          if [ -z "$found" ]
          then
               found=$ap_id
          fi
     fi
done
if [ -n "$found" ]
then
         echo "Found CPU $found"
fi

可解析时间字段 (status_time_p) 的格式为 YYYYMMDDhhmmss,以适于字符串比较的格式提供年、月、日、时、分和秒。

若要了解系统配置管理支持的详细信息,应该参考特定于硬件的文档。