Como recuperar uma matriz mdadm no Synology NAS com a unidade no estado "E"?

12

A Synology possui uma versão personalizada do driver md e dos conjuntos de ferramentas mdadm que adicionam um sinalizador 'DriveError' à estrutura de sinalizadores rdev-> no kernel.

Efeito líquido - se você tiver a infelicidade de obter uma falha na matriz (primeira unidade), combinada com um erro em uma segunda unidade - a matriz entra no estado de não permitir reparar / reconstruir a matriz, mesmo que as leituras da unidade estejam funcionando bem.

Neste ponto, não estou realmente preocupado com essa questão do ponto de vista dessa matriz, pois já retirei o conteúdo e pretendo reconstruir, mas mais por querer ter um caminho de resolução para isso no futuro , já que é a segunda vez que eu passo por isso e sei que já vi outras pessoas fazendo perguntas semelhantes em fóruns.

O suporte a Synology tem sido pouco útil (e geralmente não responde) e não compartilha nenhuma informação sobre como lidar com os ataques da caixa.

Conteúdo de / proc / mdstat:

ds1512-ent> cat /proc/mdstat 
Personalities : [linear] [raid0] [raid1] [raid10] [raid6] [raid5] [raid4] 
md2 : active raid5 sdb5[1] sda5[5](S) sde5[4](E) sdd5[3] sdc5[2]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUE]

md1 : active raid1 sdb2[1] sdd2[3] sdc2[2] sde2[4] sda2[0]
      2097088 blocks [5/5] [UUUUU]

md0 : active raid1 sdb1[1] sdd1[3] sdc1[2] sde1[4] sda1[0]
      2490176 blocks [5/5] [UUUUU]

unused devices: <none>

Status de um mdadm --detail / dev / md2:

/dev/md2:
        Version : 1.2
  Creation Time : Tue Aug  7 18:51:30 2012
     Raid Level : raid5
     Array Size : 11702126592 (11160.02 GiB 11982.98 GB)
  Used Dev Size : 2925531648 (2790.00 GiB 2995.74 GB)
   Raid Devices : 5
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Fri Jan 17 20:48:12 2014
          State : clean, degraded
 Active Devices : 4
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 1

         Layout : left-symmetric
     Chunk Size : 64K

           Name : MyStorage:2
           UUID : cbfdc4d8:3b78a6dd:49991e1a:2c2dc81f
         Events : 427234

    Number   Major   Minor   RaidDevice State
       0       0        0        0      removed
       1       8       21        1      active sync   /dev/sdb5
       2       8       37        2      active sync   /dev/sdc5
       3       8       53        3      active sync   /dev/sdd5
       4       8       69        4      active sync   /dev/sde5

       5       8        5        -      spare   /dev/sda5

Como você pode ver - / dev / sda5 foi adicionado novamente à matriz. (Foi a unidade que falhou completamente) - mas mesmo que o md veja a unidade como uma reposição, ela não será reconstruída. / dev / sde5, nesse caso, é a unidade problemática com o estado (E) DiskError.

Eu tentei parar o dispositivo md, executar remontagens de força, remover / ler sda5 do dispositivo / etc. Nenhuma mudança de comportamento.

Consegui recriar completamente a matriz com o seguinte comando:

mdadm --stop /dev/md2
mdadm --verbose \
   --create /dev/md2 --chunk=64 --level=5 \
   --raid-devices=5 missing /dev/sdb5 /dev/sdc5 /dev/sdd5 /dev/sde5

que trouxe a matriz de volta a esse estado:

md2 : active raid5 sde5[4] sdd5[3] sdc5[2] sdb5[1]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]

Em seguida, adicionei novamente / dev / sda5:

mdadm --manage /dev/md2 --add /dev/sda5

após o qual iniciou uma reconstrução:

md2 : active raid5 sda5[5] sde5[4] sdd5[3] sdc5[2] sdb5[1]
      11702126592 blocks super 1.2 level 5, 64k chunk, algorithm 2 [5/4] [_UUUU]
      [>....................]  recovery =  0.1% (4569508/2925531648) finish=908.3min speed=53595K/sec

Observe a posição da unidade "ausente" que corresponde à posição exata do slot ausente.

Quando isso terminar, acho que provavelmente puxarei a unidade questionável e a reconstruiremos novamente.

Estou procurando sugestões para saber se existe alguma maneira "menos assustadora" de fazer esse reparo - ou se alguém passou por essa experiência com uma matriz Synology e sabe como forçá-la a reconstruir, além de colocar o dispositivo md offline e recriar a matriz do zero.

Nathan Neulinger
fonte
Eu me encontro em uma situação semelhante. Você resolveu isso com sucesso?
Dvorak
Sim, consegui reconstruir a matriz seguindo as etapas acima. No entanto, eu o acompanhei limpando e mudando de R5 para R6 - neste momento, estou seriamente infeliz com o comportamento da Synology "tank the array array" que eu queria garantir que tolerasse mais de uma unidade "falhando " No nosso caso, a segunda unidade que apresentava o erro "falha" passou por testes inteligentes estendidos sem um único problema.
Nathan Neulinger 31/01
Obrigado pelo guia útil. Não estou muito confiante brincando com tudo isso, não sou especialista em ataques. Agora, enfrento o mesmo problema, mas no meu caso, tenho uma matriz RAID 1 de disco único (/ dev / md3) com / dev / sde3 sendo marcado com o temido [E]. Suponho que seja possível seguir os mesmos passos que você seguiu, mas como esse é o único disco da matriz, não sei o que ele fará ;-). De qualquer forma, o comando mdadm --stop / dev / md3 falha (dispositivo ou recurso ocupado). Eu acho que vou
procurar
Se você não pode parar a matriz, parece que algo está sendo usado - ou seja, está montado ou há alguma outra tarefa em execução nesse dispositivo.
Nathan Neulinger
2
Felizmente para mim, a Synology me ajudou a resolver o problema. Eles tiveram a gentileza de me fornecer os comandos que executaram. Coloquei as informações no meu blog para o caso de alguém encontrar esse problema: dsebastien.net/2015/05/19/…
dSebastien

Respostas:

3

Apenas uma adição à solução que encontrei após o mesmo problema. Segui o post do dSebastien no blog sobre como recriar a matriz:

Descobri que esse método de recriar a matriz funcionava melhor que o método acima. No entanto, após recriar a matriz, o volume ainda não estava aparecendo na interface da web. Nenhum dos meus LUNs estava aparecendo. Basicamente, mostrando uma nova matriz com nada configurado. Entrei em contato com o suporte da Synology e eles remotaram para corrigir o problema. Infelizmente, eles foram remotados enquanto eu estava longe do console. Eu consegui capturar a sessão e examinei o que eles fizeram. Enquanto tentava recuperar alguns dos meus dados, a unidade travou novamente e eu estava de volta na mesma situação. Recriei a matriz como no blog do dSebastien e depois examinei a sessão de sinologia para realizar sua atualização. Depois de executar os comandos abaixo, minha matriz e os LUNs apareceram na interface da web e eu pude trabalhar com eles. Eu tenho praticamente nenhuma experiência no linux, mas esses foram os comandos que eu executei na minha situação. Espero que isso possa ajudar outra pessoa, mas use isso por sua conta e risco. É melhor entrar em contato com o suporte da Synology e pedir que eles resolvam isso para você, pois essa situação pode ser diferente da sua.

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Pass 

DiskStation> synocheckshare
synocheckshare: Pass SYNOICheckShare()
synocheckshare: Pass SYNOICheckShareExt()
synocheckshare: Pass SYNOICheckServiceLink()
synocheckshare: Pass SYNOICheckAutoDecrypt()
synocheckshare: Pass SYNOIServiceShareEnableDefaultDS()

DiskStation> spacetool --synoblock-enum
****** Syno-Block of /dev/sda ******
//I've removed the output. This should display info about each disk in your array

DiskStation> vgchange -ay
  # logical volume(s) in volume group "vg1" now active

DiskStation> dd if=/dev/vg1/syno_vg_reserved_area of=/root/reserved_area.img
24576+0 records in
24576+0 records out

DiskStation> synospace --map_file -d
Success to dump space info into '/etc/space,/tmp/space'

DiskStation> synocheckshare
synocheckshare: Pass SYNOICheckShare()
synocheckshare: Pass SYNOICheckShareExt()
synocheckshare: Pass SYNOICheckServiceLink()
synocheckshare: Pass SYNOICheckAutoDecrypt()
synocheckshare: Pass SYNOIServiceShareEnableDefaultDS()

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Not Pass, # conflict 

DiskStation> synocheckiscsitrg
synocheckiscsitrg: Pass 
Nirvaan
fonte
1

Outra adição: eu encontrei um problema muito semelhante com o meu dispositivo de disco único / RAID nível 0.

O suporte à Synology foi muito útil e restaurou meu dispositivo. Aqui está o que aconteceu, espero que isso ajude outras pessoas:

Meu disco tinha erros de leitura em um bloco específico, as mensagens no log do sistema ( dmesg) eram:

[4421039.097278] ata1.00: read unc at 105370360
[4421039.101579] lba 105370360 start 9437184 end 5860528064
[4421039.106917] sda3 auto_remap 0
[4421039.110097] ata1.00: exception Emask 0x0 SAct 0x2 SErr 0x0 action 0x6
[4421039.116744] ata1.00: edma_err_cause=00000084 pp_flags=00000003, dev error, EDMA self-disable
[4421039.125410] ata1.00: failed command: READ FPDMA QUEUED
[4421039.130767] ata1.00: cmd 60/00:08:b8:d2:47/02:00:06:00:00/40 tag 1 ncq 262144 in
[4421039.130772]          res 41/40:00:f8:d2:47/00:00:06:00:00/40 Emask 0x409 (media error) <F>
[4421039.146855] ata1.00: status: { DRDY ERR }
[4421039.151064] ata1.00: error: { UNC }
[4421039.154758] ata1: hard resetting link
[4421039.667234] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl F300)
[4421039.887286] ata1.00: configured for UDMA/133
[4421039.891777] ata1: UNC RTF LBA Restored
[4421039.895745] ata1: EH complete

Alguns segundos depois, recebi as Volume 1 has crashedmensagens terríveis do meu dispositivo.

- Isenção de responsabilidade: Substitua o nome do dispositivo pelo seu e não copie e cole esses comandos, pois isso pode piorar as coisas! -

Depois de parar o smb, eu pude montar novamente a partição somente leitura e executar o e2fsk com badblocks check ( -c):

umount /dev/md2
e2fsck -C 0 -v -f -c /dev/md2

(também era e2fsck -C 0 -p -v -f -c /dev/md2possível executar o mais autônoma possível, embora isso não tenha funcionado no meu caso, porque os erros precisavam ser corrigidos manualmente. Portanto, tive que reiniciar o e2fsck. Conclusão: -p não faz muito sentido em caso de erro no disco)

Embora o e2fsck tenha conseguido corrigir os erros e o smartctl também não tenha mostrado mais aumento no Raw_Read_Error_Rate, o volume ainda não seria montado no modo de leitura e gravação pelo dispositivo. O DSM ainda mostrou "o volume travou"

Então eu abri um ticket com suporte. Demorou um pouco para que as coisas funcionassem primeiro, mas no final elas o consertaram, reconstruindo a matriz RAID com:

synospace --stop-all-spaces
syno_poweroff_task -d 
mdadm -Sf /dev/md2
mdadm -AfR /dev/md2 /dev/sda3

Certifique-se de verificar o nome do seu dispositivo ( /dev/mdXe /dev/sdaX) antes de fazer qualquer coisa. cat /proc/mdstatmostrará as informações relevantes.

GWu
fonte