Dell Unity/VNX: Perda temporária aleatória de conexão e/ou degradação do desempenho em hosts do ESXi da versão 5.5 u2 e posterior (corrigível pelo usuário)
Summary: Arrays, redes ou fabrics muito carregados podem tornar os comandos ATS lentos o suficiente para que o array retorne uma condição de verificação de comparação incorreta em um comando ATS que o ESXi não espera. Devido a essa comparação incorreta do ATS em um slot VMFS HeartBeat, o host do ESXi tenta recuperar o controle do dispositivo. Para fazer isso, o host emite uma redefinição do dispositivo SCSI na LUN que mantém o VMFS. Toda a E/S ativa nessa LUN é cancelada e o dispositivo SCSI é redefinido. Uma perda temporária de conectividade é exibida nos logs do VMkernel. ...
Symptoms
CENÁRIO:
- Upgrade do host para o ESXi 5.5 atualização 2 ou ESXi 6.0
- Um ou mais hosts do ESXi perdem a conexão com o datastore VMFS por um curto período. Todas as VMs no datastore podem travar ou ter erros de E/S.
- Devido a uma comparação incorreta entre Atomic Test and Set (ATS) em um slot VMFS HeartBeat, o host do ESXi tenta recuperar o controle do dispositivo emitindo uma redefinição do dispositivo SCSI na LUN que mantém o VMFS.
- Todas as E/Ss ativas nesta LUN serão abortadas e o dispositivo SCSI será redefinido.
- Uma perda temporária de conectividade é exibida nos logs do VMkernel.
Pode ocorrer uma comparação incorreta de ATS com NMP e PowerPath.
Mensagens de erro indicando uma comparação incorreta do ATS semelhante a essa aparecem em /var/log/vmkernel.log:
2015-11-20T22:12:47.194Z cpu13:33467)ScsiDeviceIO: 2645: Cmd(0x439dd0d7c400) 0x89, CmdSN 0x2f3dd6 from world 3937473 to dev "naa.50002ac0049412fa" failed H:0x0 D:0x2 P:0x0 Valid sense data: 0xe 0x1d 0x0.
Outros problemas que podem ocorrer:
- Desconexão de hosts do vSphere vCenter
- Máquinas virtuais travando em operações de E/S
Cause
Esse problema foi observado em arrays, redes ou fabrics que estão sobrecarregados o suficiente para que os hosts cancelem solicitações de E/S.
Vários fornecedores de array (incluindo a Dell) estão tendo problemas com o recurso de heartbeat do ATS, que foi introduzido no ESXi 5.5u2.
Nota: De acordo com o 326437 (link externo ) da KB da Broadcom (VMware), esse problema afeta as versões do ESXi VMware ESXi 5.5.x e VMware ESXi 6.0.x, não fornecendo todas as versões específicas. Portanto, esta KB pressupõe que todos os hosts do ESXi com a versão 5.5u2 em diante e todas as versões do ESXi 6.0 sejam afetados.
Um host indica sua vivacidade executando periodicamente E/S em seu heartbeat em um determinado volume. Portanto, se nenhuma atividade for vista no slot de heartbeat do host por um período, podemos concluir que o host perdeu a conectividade com o volume.
A E/S de heartbeat do ATS tem um valor de tempo limite muito baixo que pode levar a desconexões de host e paralisações de aplicativos, traduzindo-se em perda de conexão em discos e/ou degradação do desempenho nos hosts.
Em seguida, o host registra a comparação incorreta no slot de heartbeat e aborta toda a E/S ativa na LUN enquanto emite a redefinição. Todas as E/S pendentes nesta LUN falharão com o sentido de host 8 (redefinição de SCSI H:0x8).
Resolution
Se essa condição for observada, a solução temporária recomendada é desativar o mecanismo de heartbeat do VAAI ATS. Consulte Broadcom (VMware) KB 326437 (link externo) para obter mais informações. Desabilitar o mecanismo de heartbeat ATS reverterá o host para o modo legado. Depois que a carga tiver sido resolvida, reative o mecanismo de heartbeat do ATS.
Entre em contato com a VMware para confirmar o problema ou forneça um emcgrab do ESXi com vmsupport para confirmação. A desativação da funcionalidade de heartbeat do VAAI ATS no servidor ESX é RECOMENDADA apenas para clientes afetados até que os problemas de carga possam ser resolvidos.
Additional Information
Os logs do Unity podem ser usados para identificar esse tipo específico de anulação (chave de status = 0e, ASC = 1d, ASCQ = 00)
O local do log nos logs extraídos é:
Para verificar os logs, extraia todos os logs c4_safe_ktrace.log* no local acima e procure "SK = 0x0e, ASC/Q = 0x1d00".
Exemplo com um sistema Linux ou similar:
grep -i "SK = 0x0e, ASC/Q = 0x1d00" spa/EMC/C4Core/log/c4_safe_ktrace.* | wc -l 15744 <<<< count of aborts on SPA in this example.
Se os logs ktrace não forem extraídos, basta usar zgrep:
zgrep -i "SK = 0x0e, ASC/Q = 0x1d00" spa/EMC/C4Core/log/c4_safe_ktrace.* | wc -l 15744 <<<< count of aborts on SPA in this example.