Ok, acho que consertei. Eu vou seguir os passos que dei caso alguém mais tenha esse problema. Além disso, essa técnica é arriscada, já que estou executando um Raid6 Array degradado de 3 partions de 5.
Pare o Array:
$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0
Zerar o superbloco do primeiro disco na matriz Raid5 obsoleta
$ sudo mdadm --zero-superblock /dev/sdf
Examine as matrizes para ver se ela foi removida:
$ sudo mdadm --examine --scan -v
ARRAY /dev/md/1 level=raid0 metadata=1.2 num-devices=2 UUID=913834a2:63afa2cd:a84e864a:96353af5 name=fileserver:1
devices=/dev/sdd1,/dev/sda1
ARRAY /dev/md/0 level=raid5 metadata=1.2 num-devices=2 UUID=18235f5c:bd4892c0:7616a677:626ae2e8 name=team-canfield:0
spares=1 devices=/dev/sde
ARRAY /dev/md/0 level=raid6 metadata=1.2 num-devices=5 UUID=18235f5c:bd4892c0:7616a677:626ae2e8 name=team-canfield:0
devices=/dev/sdg1,/dev/sdh1,/dev/md/1
Estranhamente eu perdi ambas as partições (sd [ef] 1) do meu Raid6 neste momento. Mas a coisa boa foi que o Raid5 estava apenas indo com um sobressalente.
Zere o superbloco restante:
$ sudo mdadm --zero-superblock /dev/sde
Verifique novamente:
$ sudo mdadm --examine --scan -v
ARRAY /dev/md/1 level=raid0 metadata=1.2 num-devices=2 UUID=913834a2:63afa2cd:a84e864a:96353af5 name=fileserver:1
devices=/dev/sdd1,/dev/sda1
ARRAY /dev/md/0 level=raid6 metadata=1.2 num-devices=5 UUID=18235f5c:bd4892c0:7616a677:626ae2e8 name=team-canfield:0
devices=/dev/sdg1,/dev/sdh1,/dev/md/1
Obsoleto Raid5 desapareceu agora. Agora, o momento da verdade, é possível recuperar as partições de volta ao Raid6:
$ sudo mdadm --assemble /dev/md0 /dev/sdg1 /dev/sdh1 /dev/md1 /dev/sde1 /dev/sdf1 --force
mdadm: cannot open device /dev/sde1: No such file or directory
mdadm: /dev/sde1 has no superblock - assembly aborted
$ sudo mdadm --assemble /dev/md0 /dev/sdg1 /dev/sdh1 /dev/md1 /dev/sdf1 --force
mdadm: cannot open device /dev/sdf1: No such file or directory
mdadm: /dev/sdf1 has no superblock - assembly aborted
Não, não é: / Esta é uma má notícia e temo o pior pelos meus dados. Tente montar as 3 partições restantes:
$ sudo mdadm --assemble /dev/md0 /dev/sdg1 /dev/sdh1 /dev/md1 --force
mdadm: /dev/md0 has been started with 3 drives (out of 5).
Ufa! Sucesso!
$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdg1[0] md1[5] sdh1[2]
5860145664 blocks super 1.2 level 6, 512k chunk, algorithm 2 [5/3] [UU__U]
md1 : active raid0 sdd1[1] sda1[0]
1953522688 blocks super 1.2 512k chunks
Ok, estamos seriamente degradados, mas pelo menos é construído. Eu montei o array para ter certeza de que meus dados estão intactos e respirei um enorme suspiro de alívio quando vejo que ainda está tudo lá. NB: Pode ser sábio não montar o array neste momento. Eu acho que isso pode ser a diferença entre ser capaz de emitir um --re-add ao invés de um --add mais tarde nestes passos.
Eu sinto que seria uma boa ideia reiniciar, então eu faço. Eu ainda tenho um jeito na inicialização, mas isso não é surpresa, pois minha matriz está degradada.
Quando voltar a ser on-line, eu examino novamente:
$ sudo mdadm --examine --scan -v
ARRAY /dev/md/1 level=raid0 metadata=1.2 num-devices=2 UUID=913834a2:63afa2cd:a84e864a:96353af5 name=fileserver:1
devices=/dev/sdd1,/dev/sda1
ARRAY /dev/md/0 level=raid6 metadata=1.2 num-devices=5 UUID=18235f5c:bd4892c0:7616a677:626ae2e8 name=team-canfield:0
devices=/dev/sdg1,/dev/sdh1,/dev/sdf1,/dev/sde1,/dev/md/1
Poderia ser isso? Agora, vê todas as 5 partições do Raid6 e o Raid5 não está em lugar algum.
$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : inactive sdg1[0](S) sdh1[2](S) sde1[4](S) sdf1[3](S)
7813529952 blocks super 1.2
md1 : active raid0 sdd1[1] sda1[0]
1953522688 blocks super 1.2 512k chunks
unused devices: <none>
Oh querida, claro que isso era bom demais para ser verdade. Estou perdendo uma partição da matriz e todos os membros presentes estão listados como peças de reposição.
Bem, chegamos até aqui. Vamos parar o array:
$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0
E tente montar a verificação:
$ sudo mdadm --assemble --scan
$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdg1[0] md1[5] sdh1[2]
5860145664 blocks super 1.2 level 6, 512k chunk, algorithm 2 [5/3] [UU__U]
md1 : active raid0 sdd1[1] sda1[0]
1953522688 blocks super 1.2 512k chunks
Incrível! Estamos on-line novamente e é a primeira vez que consegui emitir esse comando com sucesso desde que fiz o upgrade de Raid5 para Raid6. No entanto, ainda estamos degradados com / dev / sd [ef] 1 em lugar nenhum para ser visto.
Vou parar o array e tentar reunir uma força para nomear explicitamente as partições membro:
$ sudo mdadm --stop /dev/md0
mdadm: stopped /dev/md0
$ sudo mdadm --assemble /dev/md0 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/md1 -v --force
mdadm: looking for devices for /dev/md0
mdadm: /dev/sde1 is identified as a member of /dev/md0, slot 2.
mdadm: /dev/sdf1 is identified as a member of /dev/md0, slot 3.
mdadm: /dev/sdg1 is identified as a member of /dev/md0, slot 0.
mdadm: /dev/sdh1 is identified as a member of /dev/md0, slot 1.
mdadm: /dev/md1 is identified as a member of /dev/md0, slot 4.
mdadm: added /dev/sdh1 to /dev/md0 as 1
mdadm: added /dev/sde1 to /dev/md0 as 2 (possibly out of date)
mdadm: added /dev/sdf1 to /dev/md0 as 3 (possibly out of date)
mdadm: added /dev/md1 to /dev/md0 as 4
mdadm: added /dev/sdg1 to /dev/md0 as 0
mdadm: /dev/md0 has been started with 3 drives (out of 5).
Ok, isso é uma ótima notícia. Aparentemente, o superbloco ainda existe nessas partições, mesmo que as duas partições não possam ser adicionadas em um estado ativo no momento.
$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdg1[0] md1[5] sdh1[2]
5860145664 blocks super 1.2 level 6, 512k chunk, algorithm 2 [5/3] [UU__U]
md1 : active raid0 sdd1[1] sda1[0]
1953522688 blocks super 1.2 512k chunks
unused devices: <none>
$ sudo mdadm --detail /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Sep 4 00:57:56 2015
Raid Level : raid6
Array Size : 5860145664 (5588.67 GiB 6000.79 GB)
Used Dev Size : 1953381888 (1862.89 GiB 2000.26 GB)
Raid Devices : 5
Total Devices : 3
Persistence : Superblock is persistent
Update Time : Thu Oct 1 23:57:14 2015
State : clean, degraded
Active Devices : 3
Working Devices : 3
Failed Devices : 0
Spare Devices : 0
Layout : left-symmetric
Chunk Size : 512K
Name : team-canfield:0 (local to host team-canfield)
UUID : 18235f5c:bd4892c0:7616a677:626ae2e8
Events : 1231860
Number Major Minor RaidDevice State
0 8 97 0 active sync /dev/sdg1
2 8 113 1 active sync /dev/sdh1
2 0 0 2 removed
3 0 0 3 removed
5 9 1 4 active sync /dev/md/1
Então eles voltaram em um estado removido. Vamos tentar adicioná-los novamente:
$ sudo mdadm --manage /dev/md0 --re-add /dev/sd[ef]1
mdadm: --re-add for /dev/sde1 to /dev/md0 is not possible
$ sudo mdadm --manage /dev/md0 --re-add /dev/sdf1
mdadm: --re-add for /dev/sdf1 to /dev/md0 is not possible
Porra, claro que não. Bem, vamos examinar os eventos nas partições para ver se eles não são realmente reconhecidos como parte da matriz:
$ sudo mdadm --examine /dev/sd[a-z]1 | egrep 'Event|/dev/sd'
mdadm: No md superblock detected on /dev/sdb1.
mdadm: No md superblock detected on /dev/sdc1.
/dev/sda1:
Events : 0
/dev/sdd1:
Events : 0
/dev/sde1:
Events : 1231852
/dev/sdf1:
Events : 1231852
/dev/sdg1:
Events : 1231860
/dev/sdh1:
Events : 1231860
Ok, aparentemente apenas 8 eventos de 1.2m são suficientes para tornar um --re-add impossível. Isso é uma vergonha, e é provavelmente de mim montar o ataque para verificar se ele ainda estava intacto no início do processo, caso contrário, parece que eu realmente consegui zerar os superblocos dos discos periféricos enquanto deixo os superblocos e dados nas partições intactos (Eu obviamente não sei como superblocos funcionam).
Bem, a essa altura, não há escolha real além de adicionar as duas partições de volta ao array e deixá-lo reconstruir:
$ sudo mdadm --manage /dev/md0 --add /dev/sd[ef]1
mdadm: added /dev/sde1
mdadm: added /dev/sdf1
Excelente! Agora vamos verificar o progresso:
$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdf1[7] sde1[6] sdg1[0] md1[5] sdh1[2]
5860145664 blocks super 1.2 level 6, 512k chunk, algorithm 2 [5/3] [UU__U]
[>....................] recovery = 0.0% (84312/1953381888) finish=1930.4min speed=16862K/sec
md1 : active raid0 sdd1[1] sda1[0]
1953522688 blocks super 1.2 512k chunks
Um dia para compilar não é muito ruim, já que levou 7 dias para migrar de Raid5 para Raid6. Isso vai ser assustador às 24 horas, já que não rezo para que nada aconteça ao meu array durante o processo de reconstrução, mas parece que é um sucesso.
Então aprendemos:
- Raid6 é, como esperado, perfeitamente funcional quando perde 2 partições de 5
- Não misture suas unidades e partições ao usar o mdadm.