はじめに
このドキュメントでは、ファイバチャネルネットワークインターフェイスカード(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の問題、リンクの損失、リンクのダウン/アップなど、さまざまな理由で発生する可能性があります。
打ち切りは一般的なメッセージであるため、最初のステップは、次のような質問を使用して問題の範囲を絞り込むことです。
- ストレージファブリックの一方の側だけで発生していますか、それとも両方で発生していますか。
- これは、1台のホストで発生しますか、それとも複数のホストで発生しますか。
- 複数のホストがある場合、問題が発生しているホスト間の共通点と、問題が発生していないホストとの相違点は何ですか。
- これは、SANターゲット上の特定のSAN(ストレージ接続ネットワーク)ターゲットまたは特定のLUN(論理ユニット番号)と通信する場合に発生しますか。
- 問題が発生していないSANターゲットまたはLUNが他にありますか。問題が発生している場合、動作しているLUN/ターゲットと動作していないターゲットの違いを教えてください。
- 毎週のバックアップジョブ中など、問題が発生するタイミングにパターンはありますか。
これらの質問に対する回答は、問題が発生する可能性のある場所と、焦点を当てる対象を特定するのに役立ちます。
打ち切りの最も一般的な原因はレイヤ1の問題であり、巡回冗長検査(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上でabortが呼び出されました。
LUN ID 0xA は10進数に変換され、LUN ID 10がOSがアレイ上で通信を試みたLUNであることが判別されます。
タグ 0xc8 は、VICアダプタのログエントリとの照合に使用できる、要求のホストSCSIレイヤのIOタグです。
デバイスインスタンス2は、fnic-tracetool -i
/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 =>交換は入力でアクティブです
- 予想される総バイト数=> tot_bytes_exp 0xa00
- 受信は=> 0x0
- burst_offsetが設定されている=> 0x0
- この要求に対するホストscsi層のIOタグは=> 0xc8です。
- 送信元ID => 0x36010f
- 宛先ターゲットID => 0x50c00
- シーケンスID => 0x0
- rx_id => 0
ステータス
-
ステータス3 =書き込みコマンド
-
ステータス1 =読み取りコマンド
交換タイプ(exch_type):
0.========================
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
0.================================
0x00フレームを受信しない
0x01少なくとも1つのフレームがrecvd
0x02シーケンスはまだアクティブです
0x04シーケンスが完了しました
0x08転送シーケンスの初期化
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
関連情報