如何使用 fchosts3 命令( SupportData Collection 的一部分)解决前端 SAN 问题
执行
执行
适用场景
光纤通道
问题描述
简介
本文介绍 fcHosts 3
在收到太多损坏的FC帧时如何使用shell命令查找前端SAN中的错误组件。在这种情况下、控制器会在主要事件日志(MEL)中记录以下事件之一:
0x1207 Fibre channel link errors - threshold exceeded
or
0x1206 Fibre channel link errors continue
这些阈值在NV389中的Offset 0x38中定义。根据经验、如果在事件日志中看到上述事件、用户还应看到对受影响服务器的影响、因此应调查问题描述。
概述
fcHosts 3
shell命令非常旧、但非常有用。statecapturedata.txt
如果找到FC主机连接,则它是SupportData集合的一部分(在中捕获)。- 输出将显示FC HBA与HBA所记录到的控制器端口之间的通信历史记录。
- 列出的最大事件数为50。
- 此命令的缺点是、输出仅列出时间、而不是日期;因此、这些事件可能发生在几天前。但是、对于问题描述、通常会在短时间内记录大量事件、大多数情况下、支持数据是从当前捕获的日期开始记录的。
示例:
以下是所提供信息的示例:
Executing fcHosts(3,0,0,0,0,0,0,0,0,0) on controller A:
<-snip->
=============== HOST 10 =====================
Hst-Role(Ch) PortId PortWwn NodeWwn DstNPort CmdRecv Label
10-Host( 2) 0e0000 10008c7c-ff2057ba 20008c7c-ff2057ba 0eaabf80 195719 SRV-MDC2-HBA-P0
PERMITS: 0x00000008 HsdPort
FLAGS: 0x00001406 Plogi Prli LoginRcvd Analyze
LastActivity: 11/19/13-17:15:47 (GMT)
HOST LOG==> logCtl:0eab1540 logIndex: 5 goodIoCount:88836
dstNPort:0eaabf80 maxIndex: 50 logIoCount:1
RepeatCounts -- IO Types
(R=read,W=write,O=other,N=nonScsi)
Num Time LogCode Qualifier LogCode GoodIo Outstand
Cnt Type Cnt Type Cnt Type
1 11:58:40 First 00000000 1 ---- >100K RWO- 1 ----
2 13:45:47 RscnRecv 000e0000 1 ---- 1 ---- 1 ----
3 13:45:47 Logout RscnMis 1 ---- 1 ---- 1 ----
4 13:49:51 Login ff2057ba 1 ---- <100 R--- 1 ----
5 13:49:51 ChkCond 06290400 <10 R--- <100 R--- 1 R---
6 13:49:51 RscnRecv 000e0000 1 ---- <100K RWO- 1 ----
说明:
10-Host
:10与同一控制器tditnall输出中的ITN编号相同Ch(X)
: 2 是HBA登录到的通道(主机端口)。使用fcAll/chall查找主机端口PortId
: 0e0000 是HBA连接到的交换机端口的24位地址PortWwn
: 10008c7c-ff2057ba 是HBA的FC端口WWNNodeWwn
: 20008c7c-ff2057ba 是HBA的FC节点WWNCmdRecv
: 195719 显示了从此HBA收到的SCSI命令的数量Label
: SRV-MDC2-HBA-P0 是SANtricity中定义的HBA的别名Time
:事件发生的时间(没有日期)。LogCode
:发生的事件Qualifier
:在检查条件(ChkCond)的情况下,A限定事件,它是检测数据LogCodeCnt
:连续出现此logCode事件的次数GoodIo Cnt
:第一次出现后返回状态良好的IOS数量Outst. Cnt
:记录第一次出现时未完成的IO数
从上面的示例中可以看到以下内容:
WWPN为 10008c7c-ff2057ba的HBA 连接到FC交换机端口 0x0e0000。它通过通道 2连接到控制器 (用于 fcAll/chall
查找实际主机端口)。用户已在SANtricity的“主机映射”部分中为HBA指定别名SRV-MDC2-HBA-P0 。从历史记录中可以看出,HBA 首先 (捕获开始)发送了多个IOS,没有问题,然后 在FC端口 注销 和 登录后发送了重新扫描。控制器通过返回一个检查条件并使用检测键 06 asc 29 ASCQ 04确认了注销/登录 、从而将其转换为"设备内部重置"。然后,HBA发送了另一个 “Rescan (重新执行)”。总的来说、没有迹象表明HBA与控制器之间存在通信问题描述。少数登录/注销通常不是问题描述。
日志代码和限定符列表
日志代码:
AbtsRecv
= 收到会话中止(表示路径问题描述)ChkCond
= 控制器向HBA发送SCSI检查条件(检测数据)(有关详细信息、请参见限定符)First
= 开始捕获GoodIo
= HBA发送的IO正常Login
= HBA已通过端口登录到控制器Logout
= HBA已从控制器中注销LinkDown
= 与HBA的连接已关闭Qfull
= 满足队列全满条件ResvCon
= 控制器向HBA返回预留冲突(在集群配置中可能是正常的!)RscnRecv
= HBA发送重新执行ScsiStat
= 出现其他SCSI状态
限定符(仅限最常见)
Count
= 计数(低级别FC 错误。指示路径问题描述)Discnct
= 断开连接FreezeTO
= 冻结超时Logo
= 注销Observed
= 观察到的事件ReplyTO
= 重放超时(指示路径问题描述)RscnMis
= 缺少重新CAN设备
以下是HBA在与控制器通信时出现问题的两个示例:
RepeatCounts -- IO Types (R=read,W=write,O=other,N=nonScsi) Num Time LogCode Qualifier LogCode GoodIo Outstand Cnt Type Cnt Type Cnt Type42 15:20:40 GoodIo 00000000 1 ---- <100 -W-- 1 -W-- 43 15:21:16 SetError ReplyTO 1 -W-- <100 -W-- 1 -W-- 44 15:21:21 ChkCond 0b470000 <5 -W-- <100 -W-- <5 -W-- 45 15:21:26 SetError ReplyTO 1 -W-- <10 RW-- 1 -W-- 46 15:21:28 ChkCond 0b470000 <5 -W-- <100 -W-- 1 -W-- 47 15:22:36 AbtsRecv 00000000 1 -W-- <1K RW-- 1 -W-- 48 15:22:42 ChkCond 0b470000 <10 -W-- <1K RW-- 1 -W-- 49 15:23:11 GoodIo 00000000 1 ---- <10 -W-- 1 -W-- 50 15:23:12 ChkCond 0b470000 <10 -W-- <1K RW-- 1 -W--
The sense 0b/47/00 decodes to "SCSI Parity Error". In a FC work this means that the the controller received a FC frame with incorrect CRC.
和:
42 17:13:11 SetError ReplyTO <5 -W-- <1K -W-- <5 -W-- 43 17:13:14 GoodIo 00000000 1 ---- <1K -W-- <10 -W-- 44 17:13:14 SetError ReplyTO <5 -W-- <1K -W-- <5 -W-- 45 17:13:16 GoodIo 00000000 1 ---- <1K -W-- <5 -W-- 46 17:13:19 SetError ReplyTO 1 -W-- <100K RW-- 1 -W-- 47 17:13:55 SetError Count <5 -W-- <1K -W-- 1 -W-- 48 17:13:56 GoodIo 00000000 1 ---- <1K -W-- <5 -W-- 49 17:14:05 SetError ReplyTO <5 -W-- <100 R--- <5 -W-- 50 17:14:12 GoodIo 00000000 1 ---- <100K RW-- 1 R---
注意:如果某个HBA存在大量上述错误,则并不会自动表示该HBA 出现故障。这意味着FC帧已损坏或在此HBA和控制器之间的某个位置丢弃。HBA损坏只是导致问题描述的一个可能候选对象。