本文转自IBM网站,http://www.ibm.com/developerworks/cn/aix/library/au-aix-decoding-location-codes/
遇到设备故障肯定是一件麻烦事。故障设备的类型可能是热插拔硬件,比如风扇冷却装置或热插拔外设组件互连(PCI)卡。在这两种情况下,都需要知道设备的物理位置,然后才能更换它。所以,您需要知道设备的位置代码。故障设备会显示在错误报告中(使用errpt命令),该报告还会发布物理位置代码。此外,使用lscfg命令可以获得您设备的物理位置。在获得该位置后,应该如何定位设备(比如P1-C1-T1)?
AIX 内部代码和物理代码
AIX 提供了两种不同的代码,它们分别是:
- IBM AIX®(内部)位置系统代码
- 物理位置代码
AIX 内部位置代码可与物理代码配合使用来识别设备,我们稍后会在本文这了解这种用法。使用 AIX 生成的那些代码引用了某些特定的设备,例如:
10-80-00-3,0 SCSI CD Drive 10-80-00-2,0 SCSI disk 02-08-00 SAS disk
上面的代码是访问实际设备的内部路径,可以使用lsdev命令来查看它们。
另一个我们特别感兴趣的位置代码是物理类型的,由固件生成。例如:
U789C.001.DQD3F62-P2-D3 SAS Disk Drive
自从几年前发布了 IBM POWER5 处理器以后,物理位置代码就成为了定位设备的首选方法。作为一项经验法则,您需要的通常是物理代码。这也是本文的重点。表 1 中提供的命令使您能够获得有关设备的各种信息。
表 1. 获得有关您的设备的信息的命令
命令 | 描述 |
---|---|
lsdev -C -H -F "name status physloc location description" | 获得 AIX(如果存在)和物理位置代码。 |
lsdev -Cc disk -F 'name location physloc' | 获得所有磁盘的 AIX 和物理位置代码。 |
lsdev -Cl hdisk0 -F physloc | 获得 hdisk0 的位置代码。 |
lscfg -vpl hdisk0 | 获得 hdisk0 的扩展信息。 |
lsdev -C| grep hdisk0 | 获得 hdisk0 的 AIX 位置代码。 |
lsparent -Cl hdisk0 | 获得 hdisk0 的父设备。 |
lscfg -l fcs0 | 获得关于 fsc0 设备的信息。 |
使用 IBM 信息中心或红皮书
如 何能使用物理位置代码定位设备?这取决于您拥有哪种类型的系统,因为这些代码可能因系统而略有不同。请务必持有服务器系统手册,或参阅 IBM 信息中心的在线信息。这些参考资料提供了您所用型号的原理图,包括系统的位置代码,以方便识别。不过,前面已经说过,只要没有东西丢失,就有办法识别设备 的物理位置。
代码中包含什么?
物理设备的位置代码来自固件端。如果正确地遵循位置代码,它最终会指向您正在寻找的设备。
无
论您有什么样的服务器,位置代码的实际格式都是相同的,它只是可以指向系统上的不同物理位置的代码(数字/字母)。到目前为止,可定位设备的第一个字符一
直是 “U”。接下来的介绍会比较有趣。下面是位置代码的通用格式,包含一个示例,该示例来自 IBM Power Systems™ 520
型号(落地式),除非另行说明,否则各示例均使用此型号。除非另行说明,否则所有位置代码示例都是物理位置。
单元 enclosure 类型 | enclosure 型号 | 序列号 | 位置 |
---|---|---|---|
U789C | 001 | DQD3F62 | P2-D3 |
字段 location 是单元/抽屉的单元/型号序列号。您的系统可能包含不同的单元 enclose 类型。不要指望在所有位置代码上都有相同的 enclosure。在有扩展槽(比如额外的磁盘抽屉)时尤其如此。
在本文中,location 字段是备受关注的位。
如 果无法解析物理位置,AIX 会假定该设备是一个逻辑设备,在某个点上被链接到一个物理设备。通常情况下,这些设备可能是连接到独立磁盘冗余阵列(RAID)的 SCSI 设备或磁带单元等外部存储的逻辑设备。根据不同的硬件(比如 SCSI、串行、tty 和适配器),这些代码可能具有不同的含义。
位置代码可能由几个前缀字母和数字组成。常用前缀如表 2 所示。
表 2. 常用前缀
代码前缀 | 描述 |
---|---|
A | 通风设备,例如,风扇 |
C | 卡,例如,PCI 插槽、内存插槽 |
D | 设备,例如,磁盘插槽、磁盘抽屉 |
E | 与电有关的设备,例如,电源 |
L | 逻辑路径,例如,光纤通道 |
P | 背板设备,例如,一个系统或 I/O 背板、系统板 |
T | 接口连接器/端口,例如,串行端口,通常后跟一个表示它是哪个端口的数字 |
U | 单元 |
V | 虚拟背板 |
这是一个代码
现在,让我们来看一个示例,hdisk0。以下是 hdisk0 的部分lscfg输出:
lscfg -vpl hdisk0 hdisk0 U789C.001.DQD3F62-P2-D3 SAS Disk Drive (146800 MB) Manufacturer................IBM Machine Type and Model......ST3146356SS FRU Number..................10N7204 ROS Level and ID............45363045 Serial Number...............3QN2JFEP Hardware Location Code......U789C.001.DQD3F62-P2-D3 PLATFORM SPECIFIC Name:disk Node: disk Device Type:block
看看上面的lscfg输出,它首先告诉我,这是一个 SAS 磁盘,但让我们更仔细地看一看位置代码,并拆分它:
U789C.001.DQD3F62-P2-D3
代码 | 描述 |
---|---|
U789C | 单元类型 |
001 | enclosure 型号 |
DQDS3F62 | 序列号 |
P2 | 背板 2(可从单元前面访问) |
D3 | 设备插槽 3(1 号磁盘驱动器,这是从第二个机架向下数的左边第一个磁盘。) |
我如何知道上述所有信息?通过使用我的红皮书并参考该型号的示意图中的位置,我可以知道它的确切位置!
您通常会发现,位置代码只被位置代码引用,不会被系统详细信息引用。在所有设备都来自同一背板时,上述情况绝对适用,并且在这种情况下,将会使用以下格式:Un<location>
在 处理卡插槽时,它们可能包含双端口,例如以太网或光纤卡。如果出现这种情况,那么该位置将会包含一个与这些端口有关联的字母 “T”,而且 T 后面的数字是端口号。如果某个位置包含 “T”,但它不是一个卡插槽(并且位置代码中没有 C),那么我们可以非常肯定这是一个集成的(板上)接口。在这里,我想到的是串行端口或以太网端口。
现在,让我们将注意力转向光纤卡插槽。看看光纤卡(fcs0)位置:
lscfg -vl fcs0
物理位置:U789C.001.DQD3F62-P1-C1-T1
看看位置代码:
P1-C1-T1
我们知道:
代码 | 描述 |
---|---|
P1 | 背板 1。可从单元的后面访问此背板。 |
C1 | 卡(PCI)插槽 1。从单元的顶部往下看,这是第一个 PCI 插槽。 |
T1 | 这是第一个端口(上端口)。 |
查看一个集成的(板上)端口,例如,硬件管理控制台(HMC)以太网端口:P1-T5
我们知道,这不是一个卡,因为位置代码中没有 “C”。
代码 | 描述 |
---|---|
P1 | 背板 1。可从单元的后面访问此背板。 |
T5 | 插槽 5。定位在机器的左侧。左端口。 |
确定设备是否是板载设备的另一种方法是,设备还会返回一个 AIX 内部位置代码。例如,以 Power Systems 570 为例,以下是一些以太网设备:
ent0 Available 02-08 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) ent1 Available 02-09 2-Port 10/100/1000 Base-TX PCI-X Adapter (14108902) ent0 U7879.001.DQD1AE7-P1-T6 ent1 U7879.001.DQD1AE7-P1-T7
上述 AIX 内部位置码(02-08 和 02-09)告诉我们,两个以太网设备使用了相同的地址位置 02。由于物理位置中没有 “C”,这说明没有卡插槽,所以我们可以假定,这是一个板载的双端口。作为一个经验法则,如果有两个板载设备(T1 和 T2),而且这两个设备是水平的一对,那么 T1 在右边,T2 在左边。如果设备是垂直的,那么 T1 在上面,T2 在下面。
许多系统都有存储区域网络(SAN)存储。知道如何找到逻辑单元号(LUN)是好事,我们来了解一下 hdisk0,它是 570 型号上的 IBM System Storage® DS3400 磁盘系统:
lscfg -vl hdisk20 hdisk2 0U7879.001.DQD1AE7-P1-C2-T1-W202500A0B85B6194-LE000000000000 MPIO Other DS3K Array Disk
上述输出相当长。所以,让我们来看看该位置代码到底是怎么回事:
代码 | 描述 |
---|---|
P1 | 背板 1(可从单元后面访问此背板) |
C2 | 卡(PCI)插槽 2 光纤卡 |
T1 | 第一个光纤端口(上) |
W202500A0B85B6194 | 远程 SAN 交换机上的全球端口标识符 |
LE000000000000 | 远程磁盘的(逻辑)LUN ID(十六进制值) |
某些代码包含一个字母 “L”,后面跟一个数字,这些都是逻辑路径。逻辑路径的典型使用者是包含 RAID 磁盘的 SCSI 磁盘。例如,一个 SCSI 磁盘阵列的位置如下所示:
P1-C8-T1-L0-L0 SCSI RAID 5 Disk Array
热插拔
了解 PCI 热插拔卡是有好处的,因为如果热插拔设备发生故障,只需花费几分钟就可以更换它们。要查看 PCI 热插拔卡,可使用下面的命令:
lsslot -c pci # Slot Description Device(s) U789C.001.DQD3F62-P1-C1 PCI-E capable, Rev 1 slot with 8x lanes fcs0 U789C.001.DQD3F62-P1-C2 PCI-E capable, Rev 1 slot with 8x lanes fcs1 U789C.001.DQD3F62-P1-C3 PCI-E capable, Rev 1 slot with 16x lanes Empty U789C.001.DQD3F62-P1-C4 PCI-X capable, 64 bit, 266MHz slot Empty U789C.001.DQD3F62-P1-C5 PCI-X capable, 64 bit, 266MHz slot Empty
我们已经介绍了 fcs0 卡的位置。但是,我们可以看到,两块激活的卡(fcs0、fcs1)是彼此相邻的。我们已经知道,fcs0 是第一块卡,位于插槽的顶部。所以,向下数的第二块卡就是 fscs1 卡。其他三个插槽 P1-C3、C4 和 C5 是未分配的。
要查看逻辑热插拔设备,可使用以下命令:
lsslot -c slot
快速获得位置代码
如 果您对位置仍然感到困惑,而此时一个单元出现了故障,IBM 工程师正在敲门,并且该工程师期望您知道发生故障的设备在哪里,那么您可以随时进入 'SMIT diag',识别出故障设备。该命令还会将位置代码也告诉您。在您这么做之前,一定要先查看 errpt,确认您在识别正确的设备。
修复闪烁的警示灯
在一个设备出故障后,可以通过一个闪烁着琥珀色的指示灯来识别它,也可以通过登录到 HMC 时的一个符号来识别它。在更换或修复设备后,可使用以下命令让状态恢复正常:
/usr/lpp/diagnostics/bin/usysfault -s normal