Sommario

Introduzione

Che cos'è un'interruzione?

In che modo la scheda NIC si adatta allo stack?

Gli interruzioni FNIC sono causate dal driver FNIC?

Cosa può causare l'interruzione di FC?

Cosa indica questo messaggio di interruzione trovato nel registro?

Differenza tra un messaggio di interruzione e un messaggio di mancata corrispondenza FCPIO

Informazioni correlate

Introduzione

Questo documento descrive la funzione di interruzione di una scheda di interfaccia di rete (FNIC, Network Interface Card) Fibre Channel e fornisce le risposte alle domande frequenti (FAQ).

Che cos'è un'interruzione?

La tecnologia Fibre Channel (FC) non consente il ripristino in caso di cadute o danneggiamento dei frame. Il messaggio Abort (ABTS) viene inviato quando si verificano problemi con uno scambio. Un'interruzione è un servizio a livello di collegamento che può essere emesso dall'iniziatore o dalla destinazione. Il ripristino viene gestito dal layer SCSI (Small Compute System Interface) con timeout di 60-120 secondi, a seconda della configurazione del sistema operativo.

In che modo la scheda NIC si adatta allo stack?

Nel caso di Linux/ESXi, il driver FNIC si trova tra le librerie libfc fornite dal fornitore del sistema operativo e l'hardware effettivo.  Il layer SCSI invia la richiesta al driver fnic, il driver fnic invia la richiesta scsi al firmware. Il firmware genera frame Fibre Channel over Ethernet (FCoE) e li invia via cavo.

Gli interruzioni FNIC sono causate dal driver FNIC?

No, le interruzioni FNIC non sono necessariamente un problema di driver, ma sono piuttosto un messaggio generico che l'iniziatore (o la destinazione) non ha ricevuto un frame entro il periodo di timeout e il livello SCSI termina lo scambio e riprova.

Cosa può causare l'interruzione di FC?

L'interruzione di FC può essere causata da vari motivi, quali congestione, dispositivi a basse prestazioni (disco rigido, processore di storage, collegamenti a bassa velocità), problemi di firmware, problemi di driver, problemi del sistema operativo, perdita di collegamenti, collegamento non attivo/attivo e così via.

Poiché gli aborti sono messaggi generici, il primo passo consiste nel limitare l'ambito del problema con domande quali:

- Si verifica solo su un lato del fabric di storage o su entrambi?

- Si verifica su uno o più host?

- Se si usano più host, quali sono le differenze tra gli host che hanno un problema e quali sono le differenze rispetto agli host che non hanno problemi?

- Si verifica quando comunica con una destinazione SAN (Storage Attached Network) o un LUN (Logical Unit Number) specifico sulla destinazione SAN?

- Esistono altre destinazioni SAN o LUN che non presentano problemi e, in caso affermativo, quali sono le differenze tra queste LUN/destinazioni funzionanti e la destinazione non funzionante?

- Esiste un modello per il momento in cui si verifica il problema, ad esempio durante i processi di backup settimanali?

Le risposte a queste domande consentono di individuare la posizione in cui il problema potrebbe risiedere e la posizione in cui concentrarsi.

La causa più comune delle interruzioni è dovuta a problemi del layer 1. Si consiglia di controllare l'intero percorso dall'iniziatore alla destinazione per individuare eventuali errori di interfaccia, ad esempio errori CRC (Cyclic Redundancy Check) o interfacce con flapping.

La causa comune successiva delle interruzioni è la sovrassegnazione dei collegamenti tra l'iniziatore/destinazione o la sovrassegnazione dei componenti sulla destinazione, ad esempio CPU e disco.  In questo caso si rivela utile disporre di un buon livello di prestazioni.

Che cosa indica questo messaggio di interruzione trovato nel registro?

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 questo esempio, in data 2017-07-27T14:54:10 UTC è stata chiamata un'interruzione su vmhba2 per FCID 0x50a00 sulla LUN 0xa con tag SCSI del sistema operativo host 0xc8.

LUN ID 0xA viene convertito in decimal per determinare che l'ID LUN 10 è il LUN con cui il sistema operativo ha tentato di comunicare sull'array.

Il tag 0xc8 è il tag IO del livello SCSI host per la richiesta che può essere utilizzato per far corrispondere le voci di log sull'adattatore VIC.

L'istanza del dispositivo 2può corrispondere al numero vmware vmhba con fnic-tracetool -i

/tmp # ./fnic-tracetool -i

HBA             Device

---             ------

vmhba1          fnic1

vmhba2          fnic2

È possibile far corrispondere l'FCID 0x50c00 fino a una destinazione specifica nel database fcns sugli switch fabric verso nord se l'interconnessione fabric è in esecuzione in modalità host finale.

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

Registri scheda 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 => Nessun frame ricevuto

- exch_type 0x1 => Exchange è in ingresso ed è attivo

- Totale byte previsti => tot_bytes_exp 0xa00

- Ricevuto => 0x0

- burst_offset è impostato => 0x0

- Il tag IO del livello SCSI host per questa richiesta è => 0xc8

- ID origine => 0x36010f

- ID destinazione destinazione destinazione destinazione => 0x50c00

- ID sequenza => 0x0

- rx_id => 0

Stato

- Status 3 = comando write

- Status 1 = comando read

Tipo di scambio (exch_type):

======================

EXCH_NOT_IN_USE = 0,

EXCH_INITIATOR_INGRESS_ACTIVE = 1

EXCH_TARGET_INGRESS_ACTIVE = 2

EXCH_ROUTE_ACTIVE = 3

EXCH_ABORTED = 4

EXCH_DEBUG = 5

Valori stato scambio(s_stat

================================

0x00 Nessun frame ricevuto

0x01 Almeno un frame ricevuto

La sequenza 0x02 è ancora attiva

Sequenza 0x04 completata

0x08 inizializzazione sequenza di trasferimento

0x10 sequenza di uscita attiva

0x20 rsp fr e voce host inviata

0x40 sequenza dati di scambio in sospeso

Differenza tra un messaggio di interruzione e un messaggio di mancata corrispondenza FCPIO

È possibile che si verifichi una mancata corrispondenza FCPIO quando non vengono ricevuti tutti i dati previsti.

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

Informazioni correlate

- Cisco UCS Fnic Tunables

- Utilizzo di LIBfc con VMware e Cisco VIC per la risoluzione dei problemi di comunicazione iniziatore/destinazione

- Congestione SAN! Comprensione, risoluzione dei problemi, mitigazione in un fabric Cisco

- Documentazione e supporto tecnico – Cisco Systems