O pool ZFS anexado externamente é interrompido, sem sinais de erros nas unidades

4

Eu tenho uma matriz de 5 unidades WD Red 1TB em um gabinete externo em um multiplexador SATA. Isso está sendo alimentado em uma máquina desktop com um controlador multiplexador SATA.

Após cerca de um ano de serviço (isso aconteceu duas vezes), a matriz começará a ser redefinida como este vídeo . Não há nenhuma indicação de que qualquer unidade específica esteja em falha, apenas que o gabinete é desligado e todas as unidades se desconectam na matriz.

Eu tenho dois desses gabinetes, e a falha sempre acompanha o array redundante quando eu os movo de um para o outro. Os compartimentos permaneceram constantes durante anos, assim como as placas de interface, mas novas unidades instaladas resolveram o problema por mais um ano.

Podem ser dezenas de coisas, desde uma fonte de alimentação barulhenta, matando os circuitos de energia do drive lentamente até uma implementação ruim do sistema operacional do ZFS, mas é difícil saber por onde começar. Qual estratégia me deixaria descobrir qual é o problema?

  • OS: CentOS 7.0, kernel: 3.10.0

  • Gabinete: multiplexador SiI 3726

  • Placa de interface: desmultiplexador SiI 3132

  • Discos rígidos: WD10EFRX

Mensagens:

Quando as redefinições estão ocorrendo:

[ttt.tttt] ata4.03: exception Emask 0x100 SAct 0x0 SErr 0x0 action 0x6 frozen
[ttt.tttt] ata4.03: failed command: WRITE DMA EXT
[ttt.tttt] ata4.03: cmd 35/00:.. ...:00/e0 tag 3 dma 144688 out
[ttt.tttt] ata4.03: status: { Busy }
[ttt.tttt] ata4.03: error: { ICRC UNC AMNF IDNF ABRT }

Quando o zpool parar completamente:

[ttt.tttt] INFO: task txg_sync:xxxxx blocked for more than 120 seconds
[ttt.tttt] INFO: task zpool:xxxxx blocked for more than 120 seconds

Uma vez que o segundo ocorreu em resposta a comandos de terminal como

$ zpool status

o sistema é essencialmente inútil e requer uma reinicialização completa.

O problema não se correlaciona com uma queda nas voltagens das unidades, como pode ser visto no vídeo mais recente . Eu acho que é uma informação chave que a própria caixa está reiniciando, todas as luzes, até mesmo sua própria luz de energia está sendo reinicializada.

As mensagens para o dmesg são vastas, muito longas para serem anexadas.

Saída de badblocks :

$ badblocks -vn /dev/sdp1
irq_stat 0x00060002, device error via SDB FIS
SError: { Handshk }
failed command: WRITE FPDMA QUEUED
cmd 61/...
res 41/... ...Emask 0x410 (ATA bus error) <F>
status: { DRDY ERR }
error: { ICRC ABRT }

E isso ocorre igualmente para todas as 5 unidades na matriz. É como se a caixa estivesse sendo sobrecarregada e se redefinindo.

Atualização: 12/06/2017

Todas as unidades foram movidas para um segundo gabinete na interconexão USB3 em vez de eSATA.

  • Gabinete: ICY BOX IB-3810U3
      Chip de multiplexador: ASMedia ASM1074L
  • Host USB3 da placa-mãe do servidor: Gigabyte GA-B85-HD3 SKT 1150

Com todas as unidades movidas para o novo gabinete, o comando badblocks foi executado em cada unidade sem um único erro. Em seguida, a piscina foi importada e uma corrida de esfoliação. Nenhum erro foi encontrado e o scrub foi concluído com sucesso. Hoje, no entanto, uma mensagem foi listada para todos os 5 drives, (era impossível dizer se eles eram os drives deste pool / tank / array):

WARNING: Your hard drive is failing
Device: /dev/sdk [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sdl [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sdm [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sdn [SAT], unable to open device
WARNING: Your hard drive is failing
Device: /dev/sdo [SAT], unable to open device

Depois disso, uma tentativa de listar o conteúdo da unidade bloqueou o terminal. Um novo terminal bloqueado em qualquer comando zpool . top listas txg_sync e uma horda de z_rd_int_x processa que todos têm algum uso da CPU. Dois outros pools estão servindo arquivos com sucesso através do SAMBA, com um continuando a se resilver (somente evidenciado pelas luzes HD), pois zpool status trava.

smartctl data: 12/12/2017

De acordo com um comentador, o seguinte é o smartctl data para UDMA_CRC_Error_Count .

Para a segunda iteração do array falhando no momento:

4193, 4030, 3939, 2869, 3977

Para o array original (com o drive três sendo trocado):

3003, 3666,    0, 4536, 5309

Para uma faixa RAID0 no mesmo gabinete e conectividade

 523,  504,  526,  553,  476

Para um espelho ZFS com hot spare hospedado dentro da máquina host:

   0,    0,    0

Em uma unidade do Seagate Archive, parece um disparate. :

Temperature_Celsius   UDMA_CRC_Error_Count   Head_Flying_Hours
   40  (0 16 0 0 0)                      0      57501022168585

Isso potencialmente apenas mostra que eSATA e USB 3.0 são inerentemente barulhentos e a corrupção de dados é inevitável.

    
por J Collins 30.11.2017 / 15:21

1 resposta

1

As estatísticas SMART indicam que os discos rígidos detectaram erros de CRC em seus links. (Para verificar se não é um problema que foi resolvido anteriormente, você deve monitorar o valor de UDMA_CRC_Error_Count ao longo do tempo - é um total dos erros durante o tempo de vida do disco)

Os casos em que eu já vi isso anteriormente, envolviam cabos SATA ruins. Trocar o cabo resolveu o problema (os contadores ainda têm seus valores, mas o valor permanece constante). Esta é uma configuração bastante complexa, e o problema pode estar em um cabo, no mux / demux ou em algum lugar no gabinete.

    
por 14.12.2017 / 16:11