跳转到主内容

如何使用 fchosts3 命令( SupportData Collection 的一部分)解决前端 SAN 问题

Views:
202
Visibility:
Internal
Votes:
0
Category:
fc-series
Specialty:
esg
Last Updated:

执行

执行

适用场景

光纤通道

问题描述

简介

本文介绍 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端口WWN
  • NodeWwn  : 20008c7c-ff2057ba 是HBA的FC节点WWN
  • CmdRecv  : 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损坏只是导致问题描述的一个可能候选对象。

Sign in to view the entire content of this KB article.

New to NetApp?

Learn more about our award-winning Support

This is an internal KB article and its content should not be copy/pasted and shared with people outside of NetApp. Always seek Duty Manager authentication of caller for password reset requests. If you need further assistance post a question in Knowledge Xchange