如何使用 fchosts3 命令( SupportData Collection 的一部分)解决前端 SAN 问题
执行
执行
适用于
光纤通道
说明
简介
本文介绍fcHosts 3
了在收到太多坏 FC 帧时、如何使用 shell 命令在前端 SAN 中查找坏组件。在这种情况下、控制器会在主要事件日志( MEL )中记录以下事件之一:
0x1207 Fibre channel link errors - threshold exceeded
or
0x1206 Fibre channel link errors continue
阈值在 NVSRAM 中的偏移 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 ),则事件的资格认定为检测数据LogCodeCnt
:连续出现此 logCode 事件的次数GoodIo Cnt
:首次出现后返回状态良好的 IOS 的数量Outst. Cnt
:记录第一次出现时未处理的 IOS 的数量
从上面的示例中可以看到以下内容:
具有 WWPN 10008C7C-FF2057BA 的 HBA 连接到 FC 交换机端口 0x0E0000 。它通过通道 2 连接到控制器(用于fcAll/chall
查找实际主机端口)。用户已在 SANtricity 的 Host Mapping 部分将别名 SRV-MDC2-HBA-P 0 指定给 HBA 。从历史记录中可以看出, HBA 首先 (捕获开始时)发送了多个 IOS 而没有问题,然后 在 FC 端口 注销 和 登录后发送了重新扫描。控制器通过返回检测条件来确认注销 / 登录、检测关键字为 06 ASC29 Ascq04 、解码为“设备内部重置”。然后, HBA 发送了另一个重新扫描。总体而言、 HBA 和控制器之间没有通信问题的迹象。一些登录 / 注销通常不是问题。
日志代码和限定符列表
登录代码:
AbtsRecv
= 收到会话中止 (表示路径问题)ChkCond
= 控制器向 HBA 发送 SCSI 检查条件(检测数据) (有关详细信息,请参见限定符)First
= 捕获开始GoodIo
= HBA 发送正常 IOLogin
= HBA 执行端口登录到控制器Logout
= HBA 已从控制器中注销LinkDown
= 与 HBA 的连接已关闭Qfull
= 满足队列已满条件ResvCon
= 控制器向 HBA 返回预留冲突(在集群配置中可能正常!)RscnRecv
= HBA 发送重新扫描ScsiStat
= 发生其他 SCSI 状态
限定符(仅最常用)
Count
= 计数(低级 FC 错误。指示路径问题)Discnct
= 断开连接FreezeTO
= 冻结超时Logo
= 注销Observed
= 观察到的事件ReplyTO
= 重放超时(表示路径问题)RscnMis
= 缺少重新扫描设备
以下是与控制器发生问题的两个 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 只是导致该问题的一个可能的候选服务器。