Meu servidor de laboratório doméstico estava na metade de uma operação de transformação RAID5 para RAID6 quando uma das minhas placas SAS decidiu fazer um ajuste no meio da noite e fazer com que 2 das unidades fossem marcadas como indisponíveis.
Ao acordar esta manhã e ver o que aconteceu, reiniciei imediatamente o servidor e as unidades voltaram, mas a matriz não iria mais montar ou iniciar.
Primeiro, verifiquei as contagens de eventos nas seis unidades:
~# mdadm --examine /dev/sd[bcdfgi] | egrep 'Event|/dev/sd'
/dev/sdb:
Events : 2691764
/dev/sdc:
Events : 2691764
/dev/sdd:
Events : 2691764
/dev/sdf:
Events : 2691764
/dev/sdg:
Events : 2679506
/dev/sdi:
Events : 2679506
Depois de ver que 4 das unidades tinham uma contagem de eventos maior correspondente e que nenhuma delas era a unidade que estava no meio de ser adicionada para a transformação RAID5 para RAID6 (/ dev / sdg), imaginei que deveria capaz de fazer uma força montar com os 4 bons drives:
~# mdadm --assemble --force /dev/md127 /dev/sdb /dev/sdc /dev/sdd /dev/sdf
mdadm: Failed to restore critical section for reshape, sorry.
Possibly you needed to specify the --backup-file
Felizmente, no início da reformulação, criei um arquivo de backup para:
~# mdadm --assemble --backup-file=/root/raid5backup --force /dev/md127 /dev/sdb /dev/sdc /dev/sdd /dev/sdf
mdadm: restoring critical section
mdadm: failed to RUN_ARRAY /dev/md127: Input/output error
Uma olhada na saída do dmesg não ajudou muito:
[ 1194.472447] md: bind<sdf>
[ 1194.473147] md: bind<sdc>
[ 1194.473274] md: bind<sdb>
[ 1194.503167] md: bind<sdd>
[ 1194.504763] md/raid:md127: reshape will continue
[ 1194.504780] md/raid:md127: device sdd operational as raid disk 0
[ 1194.504781] md/raid:md127: device sdc operational as raid disk 4
[ 1194.504781] md/raid:md127: device sdf operational as raid disk 2
[ 1194.505026] md/raid:md127: allocated 6490kB
[ 1194.505136] md/raid:md127: not enough operational devices (3/6 failed)
[ 1194.505914] RAID conf printout:
[ 1194.505915] --- level:6 rd:6 wd:3
[ 1194.505916] disk 0, o:1, dev:sdd
[ 1194.505917] disk 2, o:1, dev:sdf
[ 1194.505918] disk 4, o:1, dev:sdc
[ 1194.505918] disk 5, o:1, dev:sdb
[ 1194.506113] md/raid:md127: failed to run raid set.
[ 1194.507014] md: pers->run() failed ...
[ 1194.507762] md: md127 stopped.
[ 1194.507766] md: unbind<sdd>
[ 1194.530614] md: export_rdev(sdd)
[ 1194.530653] md: unbind<sdb>
[ 1194.546595] md: export_rdev(sdb)
[ 1194.546637] md: unbind<sdc>
[ 1194.562584] md: export_rdev(sdc)
[ 1194.562625] md: unbind<sdf>
[ 1194.574586] md: export_rdev(sdf)
Achei que talvez funcionasse se eu tentasse montá-lo, incluindo as duas unidades com uma contagem de eventos menor:
~# mdadm --assemble --backup-file=/root/raid5backup --force /dev/md127 /dev/sdb /dev/sdc /dev/sdd /dev/sdf /dev/sdi /dev/sdg
mdadm: restoring critical section
mdadm: failed to RUN_ARRAY /dev/md127: Input/output error
E uma rápida olhada na saída do dmesg mostrou que não gostou disso:
[ 1435.180559] md: bind<sdi>
[ 1435.199716] md: bind<sdf>
[ 1435.200403] md: bind<sdg>
[ 1435.200531] md: bind<sdc>
[ 1435.200660] md: bind<sdb>
[ 1435.200918] sdi:
[ 1435.229950] md: bind<sdd>
[ 1435.230299] md: kicking non-fresh sdg from array!
[ 1435.230302] md: unbind<sdg>
[ 1435.251031] md: export_rdev(sdg)
[ 1435.251074] md: kicking non-fresh sdi from array!
[ 1435.251079] md: unbind<sdi>
[ 1435.267034] md: export_rdev(sdi)
Antes de prosseguir, fiz uma varredura rápida dos discos em um arquivo para o caso de precisar dos detalhes mais tarde:
~# mdadm --examine /dev/sd[bcdfig] >> /root/raid.status
O que me leva ao ponto de estragar tudo, tentei criar uma nova matriz usando as quatro boas unidades, na esperança de que isso veria os dados novamente:
~# mdadm --create --assume-clean --level=6 --raid-devices=6 --chunk=128K /dev/md127 /dev/sdb /dev/sdc /dev/sdd /dev/sdf missing missing
No entanto, depois de fazer isso, um pvscan / vgscan etc não produziu nada, e um rápido dd do início da matriz mostrou que estava em branco:
~# dd if=/dev/md127 bs=512 count=255 skip=1 of=/tmp/md2-raw-start
Neste ponto, parei a matriz novamente antes que qualquer dano fosse feito e nenhum dado deveria ter sido gravado na matriz. Infelizmente isso mudou o RAID UUID para essas quatro unidades, então agora é diferente das duas que estavam fora de sincronia.
Eu agora parei de fazer qualquer coisa no servidor e espero que alguma pessoa boa aqui possa me dar alguma orientação sobre como proceder.
Não é feito o backup deste sistema, pois é o meu servidor de laboratório doméstico, no entanto, ainda há muitos dados na matriz que eu preferiria tentar manter em vez de começar tudo de novo.