croinfo [-h] [-v] [-I cro_db] [-o fields] [-O fields] [-P product-id] [-C chassis-id] [-A alias-id] [-R receptacle-name] [-T receptacle-type] [-t occupant-type] [-D devchassis-path] [-d occupant-devices] [-p occupant-paths] [-c occupant-compdev] [-i occupant-devid] [-m occupant-mfg] [-e occupant-model] [-n occupant-part] [-s occupant-serial] [-f occupant-firm] [-1 occupant-misc-1] [-2 occupant-misc-2] [-3 occupant-misc-3]
diskinfo [-h] [-v] [-I cro_db] [-o fields] [-O fields] [-P product-id] [-C chassis-id] [-A alias-id] [-R receptacle-name] [-T receptacle-type] [-t occupant-type] [-D devchassis-path] [-d occupant-devices] [-p occupant-paths] [-c occupant-compdev] [-i occupant-devid] [-m occupant-mfg] [-e occupant-model] [-n occupant-part] [-s occupant-serial] [-f occupant-firm] [-1 occupant-misc-1] [-2 occupant-misc-2] [-3 occupant-misc-3]
croinfo -?
diskinfo -?
diskinfo 和 croinfo 实用程序共享同一个二进制可执行文件。在运行时,该实用程序会检查其调用方式,并调整缺省设置。
通过 croinfo 实用程序,用户可查询并显示系统配置的特定方面。查询针对一个面向记录的数据集执行,该数据集捕获物理位置和当前处于该物理位置的设备的各方面间的关系。此关系通过机箱 (Chassis)、插口 (Receptacle) 和插卡 (Occupant)(即 cro 前缀)来体现。
CRO 数据集中的记录由多个具名字段组成,每条记录有一个潜在的唯一字段值。一个尖括号引用(如 product-id )引用一个特定的 field-name。对于给定的记录,字段值或者未定义(为空),或者定义有一组带索引的字符串值。所定义的某些字段值仅有一个字符串值,某些可以有多个字符串值。
所定义的每个 field-name 均与一个单独的 field-char 字符相关联。按照惯例,大写 field-char 字符与机箱和插口信息字段相关联,小写 field-char 字符与插卡信息字段相关联。针对每个 field-char 字符,都提供了一个单独的 -field-char field-name-RE 标志正则表达式过滤器选项。这样,用户可以定制查询,以显示特定配置方面的信息。按数据集顺序选择与所有正则表达式匹配的记录予以显示。对于多字符串值,只需匹配一个索引值,字段即可匹配。
缺省情况下,仅显示最少数量的缺省输出字段。可以使用 –o fields(用户可读输出)或 –O fields(可解析输出)覆盖缺省设置。这两种情况下,均可以使用 field-char[...] 速记表示法或描述更详细的 field-name[,...] 表示法来指定输出字段。
对于用户可读用途,用户可通过使用 –o fields 选项覆盖缺省字段,并按指定顺序以列对齐空格分隔格式输出任何字段。一般来说,每个匹配的记录对应一行输出,其中未定义的(空)field-name 值显示为连字符 (—)。但是,如果显示的记录包含多字符串 value 字段,将生成多行输出,所有次级的非多字符串值字段显示一个冒号 (:)。
对于脚本,用户可通过使用 –Ofields 选项覆盖缺省输出字段,并按指定顺序以可解析的冒号分隔格式(删除空格且不显示列标题)输出任何字段。每个匹配的记录对应一行输出,其中未定义的(空)字段名称值显示为不具有任何值。如果所显示的记录 field-name 包含多字符串 value 字段,则所有的值将串连起来,以分号分隔。值中出现的任何冒号或分号都将采用前导反斜杠 (\) 进行转义。为使脚本更清晰,建议使用 –O field-name[,...] 表示法。
–o 和 –O 选项互斥。
如果使用了 –h 选项,或通过使用 –o 请求了脚本输出格式,将不显示输出字段的列标题。
机箱是由特定的 product-id 和 chassis-id 进行标识的。product-id 涉及特定的机箱级产品,如系统机箱 Sun-Fire-X4200-M2 或存储器机箱 SUN-Storage-J4410。对于给定的 product-id 值,chassis-id 定义一个唯一的序列号。
特定的 product-id.chassis-id 组合可以具有一个面向位置的“受管理”alias-id,该 alias-id 由管理员使用 fmadm(1M) 定义,用于提供有关机箱物理位置的特定于安装的位置信息。其中可能包括组装、空间、机架以及机架内的 U 数范围。
除使用 fmadm(1M) 定义的面向位置的受管理 alias-id 外,系统机箱还始终具有一个众所周知的别名 - SYS,该别名可用于标识系统机箱内部的插口。
在机箱内,每个插口都具有一个唯一的 receptacle-name,该名称应该与为插口指定的物理丝网印刷标签匹配。每个插口都还具有一个 receptacle-type,用于帮助定义可接受的 occupant-types。
当某个插口被占用时,将 –f 标志定义用于可用的 occupant-information。尤其需要关注的是 –c occupant-compdev 插卡信息:它描述与插卡设备关联的公共 /dev 名称的通用组件。对于磁盘,这是整个磁盘的 c#t#d# 名称。
CRO 数据集顺序与记录的 devchassis-path 关联,后者对应于由 devchassisd(1M) 维护的 /dev/chassis 名称空间。通过该顺序,首先放置与众所周知的 SYS 内部别名关联的记录,而 SYS 中首先放置具有 BOOT receptacle-name 的记录。这样做可确保在适用时首先提供典型引导设备的信息。
对于 croinfo,缺省输出采用 –o Dtc 格式,且显示所有 CRO 记录。
对于 diskinfo,缺省输出采用 –o Dc 格式,且应用 –T bay receptacle-type 过滤器。occupant-misc-# 字段的含义还具有特定于磁盘的解释:misc-1 为容量,misc-2 为目标端口信息。通过这些缺省值,diskinfo 命令可查询机箱、bay 插口及其 disk 插卡的关系,而忽略其他 CRO 信息。
对于 field-name 定义的每个记录,可以指定一个单独的 -field-char field-name-RE 标志正则表达式过滤器。对于给定的 field-name,如果未定义特定的 -field-char field-name-RE 过滤器,所有 CRO 记录都将匹配。
这样,用户可以定制查询,以显示特定配置方面的信息。与所有指定的 field-name 正则表达式(如regex(3C) 中所示)匹配的 CRO 记录将被选中予以显示,具体的字段输出由 –o、–O 或缺省值控制。
product-id 指定枚举的机箱的产品标识符。product-id 可以在 /dev/chassis 名称空间中公开。对于不具有既定 fmadm(1M) 受管理 alias-id 的存储产品,product-id 在 devchassis(7FS) /dev/chassis 名称空间中可见。
系统 product-id 值示例:Sun-Fire-X4200-M2
存储 product-id 值示例:SUN-Storage-J4410
chassis-id 指定产品机箱的序列号。chassis-id 可以在 /dev/chassis 名称空间中公开。对于不具有既定 fmadm(1M) 受管理 alias-id 的存储产品,product-id 在 devchassis(7FS) /dev/chassis 名称空间中可见。
chassis-id 值示例:0818QAJ002
对于系统内部的设备,alias-id 值可以是众所周知的别名值 SYS。此外,alias-id 也可以是由管理员使用 fmadm(1M) 定义的受管理别名。使用受管理别名的目的是为了定义 product-id.chassis-id 的物理位置。alias-id 是在 /dev/chassis 名称空间中公开的。
已知 alias-id 值示例:SYS
受管 alias-id 值示例:RACK29.U01-04
对于特定 product-id,唯一的 receptacle-name 定义了机箱中特定插口的位置。receptacle-name 应该与物理机箱上的丝网印刷标签相同,并且应与产品文档匹配。receptacle-name 可以具有多路径组件,例如 SYS/HD0。receptacle-name 是在 /dev/chassis 名称空间中公开的。
receptacle-name 值示例:SYS/HD0
receptacle-type 值示例:bay
未安装插卡的插口具有未定义的(空) occupant-type 值,显示为一个连字符 (—)。
occupant-type 值示例:disk
devchassis-path 值示例:/dev/chassis/SYS/HD0/disk
未安装插卡的插口具有未定义的(空) occupant-devices 值,显示为一个连字符 (—)。
occupant-devices 值示例:
/devices/scsi_vhci/disk@g5000c500101ba0a3
未安装插卡的插口具有未定义的(空) occupant-paths 值,显示为一个连字符 (—)。
occupant-paths 值示例:
devices/pci@0,0/pci10de,5d@d/pci11f8,8001@0/iport@f/disk@w5000c500101ba0a1,0
未安装插卡的插口具有未定义的(空) occupant-compdev 值,显示为一个连字符 (—)。
occupant-compdev 值示例:c0t5000C500101BA0A3d0
未安装插卡的插口具有未定义的(空) occupant-devid 值,显示为一个连字符 (—)。
occupant-devid 值示例:id1,sd@n5000c500101ba0a3
未安装插卡的插口具有未定义的(空) occupant-mfg 值,显示为一个连字符 (—)。
occupant-mfg 值示例:SEAGATE
没有插卡的插口具有未定义(空)的 occupant-model,显示为连字符 (—)。
occupant-model 值示例:ST32000SSSUN2.0T
未安装插卡的插口具有未定义的(空) occupant-part 值,显示为一个连字符 (—)。
occupant-part 值示例:SEAGATE-ST32000SSSUN2.0T
未安装插卡的插口具有未定义的(空) occupant-serial 值,显示为一个连字符 (—)。
occupant-serial 值示例:000949L09C8L________9WM09C8L
未安装插卡的插口具有未定义的(空) occupant-firm 值,显示为一个连字符 (—)。
occupant-firm 值示例:0313
未安装插卡的插口具有未定义的(空) occupant-misc-1 值,显示为一个连字符 (—)。
未安装插卡的插口具有未定义的(空) occupant-misc-2 值,显示为一个连字符 (—)。
未安装插卡的插口具有未定义的(空) occupant-misc-3 值,显示为一个连字符 (—)。
显示用法信息。
以用户可读的格式按顺序输出指定的字段
对于 croinfo,缺省输出采用 –o Dtc 格式。对于 diskinfo,缺省输出采用 –O Dc 格式。
以可解析的格式按顺序输出指定字段。
不输出 field-name 列标题。
显示详细标题,其中包括创建 CRO 数据集时的各种信息。此选项专与 –I 一起使用,用于指定非标准 CRO 数据集源。
从中获取 CRO 数据集信息的数据文件。
在以下一些示例中,示例输出在显示到 80 个字符的宽度时换行。
示例 1 确定磁盘位置以下命令确定磁盘位置:
# croinfo -c c0t5000C500101BA0A3d0 D:devchassis-path t:occupant-type --------------------------------------- --------------- /dev/chassis/RACK29.U01-04/DISK_00/disk disk c:occupant-compdev ------------------ c0t5000C500101BA0A3d0示例 2 报告内部磁盘
以下命令报告内部磁盘(与众所周知的 SYS 别名关联的磁盘)的 receptacle-name 和 occupant-compdev。
# diskinfo -A SYS -o Rc R:receptacle-name c:occupant-compdev ----------------- ------------------ SYS/HD0 c8t0d0 SYS/HD1 c8t1d0 SYS/HD2 - SYS/HD3 -
请注意,SYS/HD2 和 SYS/HD3 插口为空。
采用脚本输出模式时,该同一命令将生成:
# diskinfo -A SYS -O receptacle-name,occupant-compdev SYS/HD0:c8t0d0 SYS/HD1:c8t1d0 SYS/HD2: SYS/HD3:示例 3 报告特定机壳中的磁盘
以下命令报告具有特定 product-id 和 chassis-id 值的机箱中的所有磁盘。
# diskinfo -P SUN-Storage-J4410 -C SUN-Storage-J4410 -o Rc R:receptacle-name c:occupant-compdev ----------------- --------------------- DISK_00 c0t5000C500101BA0A3d0 DISK_01 c0t5000C500101B95BBd0 DISK_02 -示例 4 报告物理路径信息
以下命令报告特定磁盘的物理路径信息。
# croinfo -c c0t5000C500101BA0A3d0 -o cp c:occupant-compdev ------------------ c0t5000C500101BA0A3d0 p:occupant-paths -------------------------------------------------- /devices/pci@0,0/pci10de,5d@d/pci11f8,8001@0/iport@f/disk@w5000c500101ba0a1,0 /devices/pci@7b,0/pci10de,5d@d/pci11f8,8001@0/iport@f/disk@w5000c500101ba0a2,0
注意,occupant-paths 具有多个字符串值。
示例 5 清点磁盘以下示例使用 occupant-part 报告可用的特定磁盘类型的数量。
# for i in `croinfo -h -o n | sort -u` > do > echo $i "\t\c";croinfo -h -n $i | wc -l > done SEAGATE-ST330055SSUN300G 3 SEAGATE-ST330056SSUN300G 19 SEAGATE-ST345056SSUN450G 5示例 6 定位特定类型的磁盘
以下命令报告特定类型的磁盘的位置、其 ctd 名称(通过 occupant-compdev)及其固件级别。
# croinfo -n SEAGATE-ST330055SSUN300G -o Dcf D:Devchassis c:component ----------------------------------------------- --------------------- /dev/chassis/RACK29.U29-32/SCSI_Device__11/disk c0t5000C50007DD49F7d0 /dev/chassis/RACK29.U33-36/SCSI_Device__18/disk c0t5000C50008F7FB4Fd0 /dev/chassis/RACK29.U33-36/SCSI_Device__19/disk c0t5000C50007DD412Fd0 f:firm ------ 0892 0892 0892
有关下列属性的说明,请参见 attributes(5):
|
croinfo 和 diskinfo 的接口稳定性为 "Committed"(已确定)。命令输出的接口稳定性是 "Not-an-Interface"(不是接口)。
devchassisd(1M)、fmadm(1M)、fmd(1M)、attributes(5)、devchassis(7FS)
SCSI 存储接口委员会网站 http://www.t10.org
SCSI Primary Commands-4, SPC4;SCSI Enclosure Services-2;SES2, Serial Attached SCSI-2, SAS2
croinfo 表示依赖于 fmd(1M) 的功能来枚举系统拓扑并准确地表示关联的机箱、插口和插卡。这些依赖项可通过 fmd(1M) 进行扩展并要求连接的硬件及其关联的固件符合特定要求。对于磁盘托架,这要求存储器机箱的行为符合 T10 标准(SPC4 和 SES2)。不能作出适当反应的存储器机箱可能不能正确地报告机箱、托架或磁盘节点。具体地,diskinfo 要求机箱支持 SES 诊断页 0xa(附加元素状态)并将目前元素指标 (Element Index Present, EIP) 位设为 1。不符合此标准的机壳将不会被完全枚举,因而将得不到正确的表示。