概要
このドキュメントでは、ファイバチャネルネットワークインターフェイスカード(FNIC)の中断について説明し、よく寄せられる質問(FAQ)に対する回答を示します。
アボートとは
ファイバチャネル(FC)には、ドロップやフレームの破損を回復する手段はありません。Abort(ABTS)メッセージは、交換に問題が発生したときに送信されます。中断は、イニシエータまたはターゲットによって発行できるリンクレベルサービスです。リカバリは、オペレーティングシステムの設定に応じて60 ~ 120秒のタイムアウトでSmall Compute System Interface(SCSI)レイヤによって処理されます。
FNICはスタックのどこに適合しますか。
Linux/ESXiの場合、FNICドライバはオペレーティングシステム(OS)ベンダーが提供するlibfcライブラリと実際のハードウェアの間に置かれます。 SCSI層はfnicドライバに要求を送信し、fnicドライバはscsi要求をファームウェアに送信します。ファームウェアはFibre Channel over Ethernet(FCoE)フレームを生成し、ワイヤ上で送信します。
FNICの異常終了はFNICドライバによって発生しますか。
いいえ、FNICの異常終了は必ずしもドライバの問題ではなく、イニシエータ(またはターゲット)がタイムアウト期間内にフレームを受信せず、SCSI層が交換と再試行を終了する一般的なメッセージです。
FCが中断する原因は何ですか。
FC中断は、輻輳、パフォーマンスの低いデバイス(ハードディスク、ストレージプロセッサ、低速リンク)、ファームウェアの問題、ドライバの問題、OSの問題、リンク損失、リンクのダウン/アップなど、さまざまな理由によって発生します。
abortsは一般的なメッセージであるため、最初のステップとして、次のような質問を使用して問題の範囲を絞り込みます。
- これは、ストレージファブリックの一方の側だけで発生しますか、それとも両方で発生しますか。
- 1台のホストまたは複数のホストで発生しますか。
- 複数のホストの場合、問題のあるホスト間で共通する点と、問題が発生しないホストとは何が異なりますか。
- この問題は、特定のSAN(ストレージ接続型ネットワーク)ターゲットまたはSANターゲット上の特定の論理ユニット番号(LUN)と通信するときに発生しますか。
- 問題が発生しない他のSANターゲットやLUNはありますか。存在する場合、これらの動作中のLUN/ターゲットと、動作中でないターゲットとの違いは何ですか。
- 毎週のバックアップジョブの実行中など、問題が発生するパターンはありますか。
これらの質問に対する回答は、問題が存在する可能性のある場所と焦点を合わせる場所を特定するのに役立ちます。
中断の最も一般的な原因はレイヤ1の問題です。Cyclic Redundancy Check(CRC;巡回冗長検査)エラーやフラッピングインターフェイスなどのインターフェイスエラーがないか、イニシエータからターゲットまでのパス全体をチェックすることをお勧めします。
中断の次の一般的な原因は、ターゲット上のコンポーネントのイニシエータ/ターゲット間のリンクのオーバーサブスクリプション、またはCPUやディスクなどのコンポーネントのオーバーサブスクリプションです。 これは、優れたパフォーマンスベースラインが役立ちます。
この中断メッセージは、ログに何を示していますか。
VMWare vmkernel log:
2017-07-27T14:54:10.590Z cpu6:33351)<7>fnic : 2 :: Abort Cmd called FCID 0x50a00, LUN 0xa TAG c8 flags 3
この例では、2017-07-27T14:54:10 UTC時刻に、ホストOS SCSIタグ0xc8を使用してLUN 0xa上のFCID 0x50a00に対してvmhba2でアボートが呼び出されました。
LUN ID 0xA は10進数に変換され、LUN ID 10がOSがアレイ上で通信を試みたLUNであることを確認します。
タグ 0xc8 は、VICアダプタのログエントリと照合するために使用できる、要求に対するホストscsiレイヤのIOタグです。
デバイス・インスタンス2は、fnic-tracetool -iを使用して、vmware vmhba番号まで一致させることができます
/tmp # ./fnic-tracetool -i
HBA Device
--- ------
vmhba1 fnic1
vmhba2 fnic2
ファブリックインターコネクトがエンドホストモードで動作している場合、ノースバウンドファブリックスイッチのfcnsデータベースでFCID 0x50c00 を特定のターゲットに一致させることができます。
switch-A(nxos)# show fcns database fcid 0x50c00 detail vsan 1 ------------------------ VSAN:1 FCID:0x50c00 ------------------------ port-wwn (vendor) :50:00:00:00:ff:ff:ff:01 (EMC) node-wwn :50:00:00:00:ff:ff:ff:00 class :3 node-ip-addr :0.0.0.0 ipa :ff ff ff ff ff ff ff ff fc4-types:fc4_features :scsi-fcp:both 253 symbolic-port-name :SYMMETRIX::SAF- 3fB::FC::5876_272+::EMUL B80F0000 41234F44 94F360 07.27.15 11:14 symbolic-node-name :SYMMETRIX::FC::5876_272+ port-type :N port-ip-addr :0.0.0.0 fabric-port-wwn :20:1e:00:2a:6a:ea:00:00 hard-addr :0x000000 permanent-port-wwn (vendor) :50:00:00:00:ff:ff:ff:01 (EMC) connected interface :fc1/30
VICアダプタログ
170727-14:54:10.590661 ecom.ecom_main ecom(4:0): abort called for exch abort called for exch 431b, status 3 rx_id 0s_stat 0x0xmit_recvd 0x0burst_offset 0x0sgl_err 0x0 last_param 0x0 last_seq_cnt 0x0tot_bytes_exp 0xa00h_seq_cnt 0x0exch_type 0x1s_id 0x36010fd_id 0x50c00 host_tag 0xc8
- s_stat 0x0 =>フレームは受信されません
- exch_type 0x1 => ExchangeはIngressであり、アクティブです
- 予想される総バイト数=> tot_bytes_exp 0xa00
- 受信: => 0x0
- burst_offsetはset => 0x0
- この要求に対するホストscsiレイヤのIOタグは=> 0xc8です
- 送信元ID => 0x36010f
- 宛先ターゲットID => 0x50c00
- シーケンスID => 0x0
- rx_id => 0
ステータス
-
ステータス3 = writeコマンド
-
ステータス1 = readコマンド
Exchange Type(exch_type):
========================
EXCH_NOT_IN_USE = 0、
EXCH_INITIATOR_INGRESS_ACTIVE = 1
EXCH_TARGET_INGRESS_ACTIVE = 2
EXCH_EGRESS_ACTIVE = 3
EXCH_ABORTED = 4
EXCH_DEBUG = 5
交換ステータス値(s_stat):
================================
0x00フレームは受信されない
0x01少なくとも1つのフレームを受信
0x02シーケンスはまだアクティブです
0x04シーケンスが完了しました
0x08転送シーケンスinit
0x10の出力シーケンスがアクティブ
0x20 rsp frおよびホストエントリの送信
0x40 exch data sequence pending
abortメッセージとFCPIO mismatchメッセージの違いは何ですか。
FCPIOのミスマッチは、予想されるデータがすべて受信されない場合に発生する可能性があります。
Total bytes xmit < expecte ddata length
160621-04:26:51.733255 ecom.ecom_main ecom(8:3): ox_id 41d4 rx_id 44b seq_cnt 7 seq_id 1 160621-04:26:52.066235 ecom.ecom_main ecom(8:1): fcpio_data_cnt_mismatch for exch 4202 status 1 rx_id5f7 s_stat 0x3 xmit_recvd 0x3000 burst_offset 0x3000 sgl_err 0x0 last_param 0x2800 last_seq_cnt 0x0 tot_bytes_exp 0x8000 h_seq_cnt 0x5 exch_type 0x0 s_id 0xab800 d_id 0xab800 host_tag 0x377
関連情報