跳转到主内容

NetApp_Insight_2020.png 

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

Views:
17
Visibility:
Public
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

阈值在 NVSRAM 中的偏移 0x38 中定义。经验法则是,如果在事件日志中看到上述事件、用户还应看到对受影响服务器的影响、因此应调查此问题。

概述

fcHosts 3shell 命令是一个很旧但很有用的命令。如果statecapturedata.txt找到 FC 主机连接,则它是 SupportData 集合的一部分(在中捕获)。输出显示 FC HBA 与 HBA 所记录的控制器端口之间的通信历史记录。50 个事件是列出的最大事件数。该命令的缺点是,输出仅列出时间而不是日期、因此事件可能是几天前发生的。但是,如果发生问题、通常会在短时间内记录大量事件、而且大部分时间都是从捕获 SupportData 的当天开始记录的。

示例:

以下是提供的信息示例:

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 )时事件的资格认定为 Sense Data
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  = 控制器将 SCSI 检查条件(检测数据)发送到 HBA (有关详细信息,请参见限定符)
First    = Start of capture
GoodIo   = HBA Send Good IO
Login    = HBA 执行端口登录到控制器
Logout   = 从 controller= 注销 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 只是导致该问题的一个可能的候选服务器。

CUSTOMER EXCLUSIVE CONTENT

Registered NetApp customers get unlimited access to our dynamic Knowledge Base.

New authoritative content is published and updated each day by our team of experts.

Current Customer or Partner?

Sign In for unlimited access

New to NetApp?

Learn more about our award-winning Support