Introducción
Este documento describe qué es una anulación de la tarjeta de interfaz de red de canal de fibra (FNIC) y proporciona respuestas a las preguntas más frecuentes (FAQ).
¿Qué es un aborto?
Fibre Channel (FC) no tiene medios de recuperación para caídas o tramas dañadas. El mensaje Abort (ABTS) se envía cuando hay problemas con un intercambio. Un abort es un servicio de nivel de link que puede ser emitido por el iniciador o el destino. La recuperación se gestiona mediante la capa de interfaz de sistema informático pequeño (SCSI) con tiempos de espera de entre 60 y 120 segundos, que dependen de la configuración del sistema operativo.
¿Dónde encaja el FNIC en la pila?
En el caso de Linux/ESXi, el controlador FNIC se sitúa entre las bibliotecas libfc proporcionadas por el proveedor del sistema operativo (SO) y el hardware real. La capa SCSI envía la solicitud al controlador fnic, el controlador fnic envía la solicitud scsi al firmware. El firmware genera tramas de canal de fibra sobre Ethernet (FCoE) y las envía en el cable.
¿Las anulaciones de FNIC son causadas por el controlador FNIC?
No, las anulaciones de FNIC no son necesariamente un problema de controlador, sino más bien un mensaje genérico de que el iniciador (o el destino) no recibió una trama dentro del período de tiempo de espera y la capa SCSI termina el intercambio y vuelve a intentarlo.
¿Qué puede causar abortos de FC?
Los abortos de FC pueden deberse a varias razones, como congestión, dispositivos de bajo rendimiento (disco duro, procesador de almacenamiento, links de baja velocidad), problemas de firmware, problemas de controladores, problemas de SO, pérdida de link, link inactivo/activo, etc.
Dado que los abortos son mensajes genéricos, el primer paso consiste en reducir el alcance del problema con preguntas como:
- ¿Ocurre en un solo lado del fabric de almacenamiento o en ambos?
- ¿Ocurre en un solo host o en varios?
- Si hay varios hosts, ¿qué es común entre los hosts que tienen un problema y qué es diferente de los hosts que no experimentan un problema?
- ¿Se produce cuando se comunica con un destino de red conectada a almacenamiento (SAN) específico o con un número de unidad lógica (LUN) específico del destino de SAN?
- ¿Existen otros objetivos SAN o LUN que no experimenten ningún problema? En caso afirmativo, ¿cuáles son las diferencias entre estos LUN/objetivos en funcionamiento y el objetivo que no funciona?
- ¿Existe un patrón para cuando ocurre el problema, como durante los trabajos de copia de seguridad semanales?
Las respuestas a estas preguntas le ayudan a aislar dónde podría residir el problema y dónde empezar a centrarse.
La causa más común de abortos se debe a problemas de capa 1 y se recomienda verificar la trayectoria completa desde el iniciador hasta el destino para detectar cualquier error de interfaz como errores de Verificación por redundancia cíclica (CRC) o interfaces inestables.
La siguiente razón común para abortar es debido a la sobresuscripción de links entre el iniciador/destino o la sobresuscripción de componentes en el destino como la CPU y el disco. Aquí es donde una buena línea de base de rendimiento es útil.
¿Qué indica este mensaje de anulación que se ha encontrado en el 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
En este ejemplo, en 2017-07-27T14:54:10 hora UTC, se llamó a una anulación en vmhba2 para FCID 0x50a00 en LUN 0xa con la etiqueta SCSI del sistema operativo del host 0xc8.
El LUN ID 0xA se convierte a decimal para determinar que el ID de LUN 10 era el LUN con el que el sistema operativo intentó comunicarse en la matriz.
La etiqueta 0xc8 es la etiqueta de E/S de la capa scsi del host para la solicitud que se puede utilizar para hacer coincidir las entradas de registro en el adaptador VIC.
La instancia del dispositivo 2se puede comparar con el número vmware vmhba con fnic-tracetool -i
/tmp # ./fnic-tracetool -i
HBA Device
--- ------
vmhba1 fnic1
vmhba2 fnic2
El FCID 0x50c00 se puede emparejar con un destino específico en la base de datos fcns en los switches de fabric ascendentes si la fabric interconectada se ejecuta en el modo de host final.
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
Registros del adaptador 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 => No se reciben tramas
- exch_type 0x1 => Exchange es Ingress y está activo
- El total de bytes esperados es => tot_bytes_exp 0xa00
- Recibido es => 0x0
- burst_offset está configurado => 0x0
- La etiqueta IO de la capa scsi del host para esta solicitud es => 0xc8
- ID de origen => 0x36010f
- ID de destino de destino => 0x50c00
- Seq ID => 0x0
- rx_id => 0
Estado
Tipo de intercambio(exchange_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
Valores de estado de Exchange (s_stat)
================================
0x00 No se reciben tramas
0x01 Al menos una trama recibida
La secuencia 0x02 sigue activa
La secuencia 0x04 ha finalizado
0x08 transfer sequence init
La secuencia de salida 0x10 está activa
0x20 rsp fr y entrada de host enviada
Secuencia de datos de intercambio 0x40 pendiente
¿Cuál es la diferencia entre un mensaje de discordancia FCPIO y abortado?
La discordancia FCPIO puede ocurrir cuando no se reciben todos los datos esperados.
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
Información Relacionada