Einleitung
In diesem Dokument wird beschrieben, was ein Fibre Channel Network Interface Card (FNIC)-Abort ist, und es werden Antworten auf häufig gestellte Fragen (FAQs) gegeben.
Was ist ein Abbruch?
Fibre Channel (FC) bietet keine Möglichkeit zur Wiederherstellung bei Datenverlusten oder beschädigten Frames. Bei Problemen mit einem Austausch wird eine Abbruchmeldung (ABTS) gesendet. Ein Abbruch ist ein Service auf Verbindungsebene, der entweder vom Initiator oder vom Ziel ausgegeben werden kann. Die Wiederherstellung wird von der SCSI-Schicht (Small Compute System Interface) mit Zeitüberschreitungen von 60-120 Sekunden durchgeführt, die von der Konfiguration des Betriebssystems abhängen.
Wo passt die FNIC in den Stack?
Im Fall von Linux/ESXi befindet sich der FNIC-Treiber zwischen den Bibliotheken libfc, die vom Anbieter des Betriebssystems bereitgestellt werden, und der tatsächlichen Hardware. Die SCSI-Schicht sendet die Anfrage an den fnic-Treiber, der fnic-Treiber sendet die SCSI-Anfrage an die Firmware. Die Firmware generiert FCoE-Frames (Fibre Channel over Ethernet) und sendet diese über die Leitung.
Wird der FNIC-Fehler durch den FNIC-Treiber verursacht?
Nein, FNIC-Abbrüche sind nicht notwendigerweise ein Treiberproblem, sondern eine generische Meldung, dass der Initiator (oder das Ziel) innerhalb der Zeitüberschreitungsfrist keinen Frame erhalten hat und die SCSI-Schicht den Austausch beendet und erneut versucht.
Was kann FC-Abbrüche verursachen?
FC-Abbrüche können aus verschiedenen Gründen verursacht werden, z. B. aufgrund von Überlastung, Geräten mit geringer Leistung (Festplatte, Speicherprozessor, langsame Verbindungen), Firmware-Problemen, Treiberproblemen, Betriebssystemproblemen, Verbindungsverlust, Verbindungsausfall/Verbindungsaufbau usw.
Da Abbrüche generische Nachrichten sind, besteht der erste Schritt darin, den Umfang des Problems mit Fragen wie den folgenden einzugrenzen:
- Kommt es nur auf einer Seite der Storage-Fabric vor, oder auf beiden?
- Kommt es auf einem einzelnen Host oder auf mehreren Hosts vor?
- Wenn mehrere Hosts, was ist üblich zwischen den Hosts, die ein Problem haben, und was ist anders als die Hosts, die kein Problem haben?
- Tritt er auf, wenn er mit einem bestimmten SAN-Ziel (Storage Attached Network) oder einer bestimmten LUN (Logical Unit Number) auf dem SAN-Ziel kommuniziert?
- Gibt es andere SAN-Ziele oder LUNs, bei denen kein Problem auftritt, und wenn ja, welche Unterschiede bestehen zwischen diesen funktionierenden LUNs/Zielen und dem nicht funktionierenden Ziel?
- Gibt es ein Muster für den Fall, dass das Problem auftritt, z. B. bei wöchentlichen Sicherungsaufträgen?
Die Antworten auf diese Fragen helfen Ihnen zu identifizieren, wo sich das Problem möglicherweise befindet und wo Sie mit dem Fokus beginnen können.
Die häufigste Ursache für Abbrüche sind Probleme auf Layer 1. Es wird empfohlen, den gesamten Pfad vom Initiator zum Ziel auf Schnittstellenfehler wie CRC-Fehler (Cyclic Redundancy Check) oder Flapping-Schnittstellen zu überprüfen.
Der nächste häufige Grund für Abbrüche ist die Überbelegung von Verbindungen zwischen Initiator/Ziel oder die Überbelegung von Komponenten auf dem Ziel, z. B. CPU und Festplatte. An dieser Stelle ist eine gute Leistungsgrundlage praktisch.
Was bedeutet diese Abbruchmeldung, dass sie im Protokoll gefunden wurde?
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
In diesem Beispiel wurde am 2017-07-27T14:54:10 UTC-Zeit ein Abbruch auf vmhba2 für FCID 0x50a00 auf LUN 0xa mit Host-Betriebssystem-SCSI-Tag 0xc8 aufgerufen.
Die LUN ID 0 x A wird in Dezimalzahlen umgewandelt, um zu ermitteln, dass die LUN-ID 10 die LUN war, mit der das Betriebssystem auf dem Array kommunizieren wollte.
Das Tag 0xc8 ist das I/O-Tag des Host-SCSI-Layers für die Anforderung, das zum Abgleich mit Protokolleinträgen auf dem VIC-Adapter verwendet werden kann.
Die Geräteinstanz 2 kann mit fnic-tracetool -i an die vmware vmhba-Nummer angepasst werden.
/tmp # ./fnic-tracetool -i
HBA Device
--- ------
vmhba1 fnic1
vmhba2 fnic2
Die FCID 0x50c00 kann einem bestimmten Ziel in der fcns-Datenbank der Northbound-Fabric-Switches zugeordnet werden, wenn das Fabric Interconnect im End-Host-Modus ausgeführt wird.
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-Adapterprotokolle
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 => Keine Frames empfangen
- exch_type 0x1 => Exchange ist "Eingang" und aktiv
- Erwartete Gesamtbytes => tot_bytes_exp 0xa00
- Empfangen: => 0x0
- burst_offset ist gesetzt => 0x0
- Das I/O-Tag der Host-SCSI-Schicht für diese Anforderung lautet => 0xc8
- Quell-ID => 0x36010f
- Ziel-ID des Ziels => 0x50c00
- Seq ID => 0x0
- rx_id => 0
Status
-
Status 3 = Schreibbefehl
-
Status 1 = Befehl lesen
Exchange-Typ (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
Exchange-Statuswerte(s_stat)
================================
0x00 Keine Frames empfangen
0x01 Mindestens ein Frame empfangen
0x02-Sequenz ist noch aktiv
0x04-Sequenz abgeschlossen
0x08 Übertragungssequenz initialisieren
0x10 Ausgangssequenz ist aktiv
0x20 RSP für und Host-Eintrag gesendet
0x40-Exch-Datensequenz ausstehend
Worin besteht der Unterschied zwischen einer Abbruch- und einer FCPIO-Inkongruenz?
FCPIO-Diskrepanzen können auftreten, wenn nicht alle erwarteten Daten empfangen werden.
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
Zugehörige Informationen