Introdução
Este documento descreve o que é uma FNIC (Fibre Channel Network Interface Card, placa de interface de rede Fibre Channel) abortada e fornece respostas às perguntas frequentes (FAQ).
O que é um Aborto?
O Fibre Channel (FC) não tem meios de recuperação para quedas ou quadros corrompidos. A mensagem de anulação (ABTS) é enviada quando há problemas com uma troca. Um abort é um serviço de nível de link que pode ser emitido pelo iniciador ou pelo destino. A recuperação é realizada pela camada da Small Compute System Interface (SCSI) com tempos limite de 60 a 120 segundos, que dependem da configuração do sistema operacional.
Onde o FNIC se encaixa na pilha?
No caso do Linux/ESXi, o driver FNIC fica entre as bibliotecas libfc fornecidas pelo fornecedor do sistema operacional (SO) e o hardware real. A camada SCSI envia a solicitação ao driver da placa de rede, o driver da placa de rede envia a solicitação scsi ao firmware. O firmware gera quadros Fibre Channel over Ethernet (FCoE) e os envia pelo fio.
As anulações de FNIC são causadas pelo driver de FNIC?
Não, as anulações de FNIC não são necessariamente um problema de driver, mas sim uma mensagem genérica de que o iniciador (ou destino) não recebeu um quadro dentro do período de timeout e a camada SCSI encerra a troca e tenta novamente.
O que pode causar cancelamentos de FC?
As anulações de FC podem ser causadas por vários motivos, como congestionamento, dispositivos de baixo desempenho (disco rígido, processador de armazenamento, links de baixa velocidade), problemas de firmware, problemas de driver, problemas de SO, perda de link, link inativo/ativo e assim por diante.
Como aborts são mensagens genéricas, a primeira etapa é restringir o escopo do problema com perguntas como:
- Ele ocorre apenas em um lado da malha de armazenamento ou em ambos?
- Isso ocorre em um único host ou em vários hosts?
- Se houver vários hosts, o que é comum entre os hosts que têm um problema e o que é diferente dos hosts que não têm um problema?
- Ele ocorre quando se comunica com um destino específico de SAN (Storage Attached Network, rede conectada a armazenamento) ou LUN (Logical Unit Number, número de unidade lógica) específico no destino de SAN?
- Há outros destinos SAN ou LUNs que não apresentam problemas? Em caso afirmativo, quais são as diferenças entre esses LUNs/destinos em funcionamento e o destino fora de funcionamento?
- Há um padrão para quando o problema ocorre, por exemplo, durante trabalhos de backup semanais?
As respostas a essas perguntas ajudam a isolar onde o problema pode residir e onde começar seu foco.
A causa mais comum de abortos é devido a problemas na camada 1 e é recomendável verificar todo o caminho do iniciador ao destino para verificar se há erros de interface, como erros de verificação de redundância cíclica (CRC) ou interfaces não sincronizadas.
A próxima razão comum para cancelamentos é devido à assinatura em excesso de links entre o iniciador/destino ou a assinatura em excesso de componentes no destino, como a CPU e o disco. É aí que uma boa linha de base de desempenho se torna útil.
O que essa mensagem de anulação indica que foi encontrado no 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
Neste exemplo, em 2017-07-27T14:54:10 hora UTC uma anulação foi chamada em vmhba2 para FCID 0x50a00 no LUN 0xa com a tag SCSI do SO do host 0xc8.
O LUN ID 0xA é convertido em decimal para determinar se o LUN ID 10 era o LUN com o qual o sistema operacional tentou se comunicar no array.
A marca 0xc8 é a marca de E/S da camada scsi do host para a solicitação que pode ser usada para correspondência com entradas de log no adaptador VIC.
A instância do dispositivo 2 pode ser combinada ao número vmware vmhba com fnic-tracetool -i
/tmp # ./fnic-tracetool -i
HBA Device
--- ------
vmhba1 fnic1
vmhba2 fnic2
A FCID 0x50c00 pode ser combinada com um destino específico no banco de dados fcns nos switches de estrutura ascendente se a interconexão de estrutura for executada no 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 do 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 => Nenhum quadro é recebido
- exch_type 0x1 => O Exchange está em andamento e está ativo
- Total de bytes esperados é => tot_bytes_exp 0xa00
- Recebido é => 0x0
- burst_offset é definido => 0x0
- A marca de E/S da camada scsi do host para esta solicitação é => 0xc8
- ID de Origem => 0x36010f
- ID de destino de teste => 0x50c00
- ID Seq => 0x0
- rx_id => 0
Status
-
Status 3 = comando write
-
Status 1 = ler comando
Tipo de intercâmbio(exch_type):
========================
EXCH_NOT_IN_USE = 0,
EXCH_INITIATOR_INGRESS_ATIVE = 1
EXCH_TARGET_INGRESS_ATIVE = 2
EXCH_EGRESS_ATIVE = 3
EXCH_ABORTED = 4
EXCH_DEBUG = 5
Valores de status do Exchange (s_stat)
================================
0x00 Nenhum quadro é recebido
0x01 Pelo menos um quadro recebido
A sequência 0x02 ainda está ativa
A sequência 0x04 está concluída
0x08 init de sequência de transferência
A sequência de saída 0x10 está ativa
0x20 rsp para e entrada de host enviada
0x40 exch data sequence pending
Qual é a diferença entre uma mensagem de incompatibilidade de abort e FCPIO?
A incompatibilidade de FCPIO pode ocorrer quando nem todos os dados esperados são recebidos.
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
Informações Relacionadas