Eu tenho um array raid-5 com falha que não consigo recuperar. Basicamente, a história é que eu tinha esses dados no raid 5 e estava usando o LVM, que agora possui raid integrado. Percebi que um dos discos estava com defeito, então comprei um novo e enviei pvmove
para mover as extensões do disco com falha para o novo disco. Em algum momento durante a migração, o disco antigo falhou e parou completamente de responder (não sei por que isso causaria isso). Então eu reiniciei e agora a matriz não aparece. Tudo parece bem o suficiente, por exemplo, 3/4 discos estão funcionando, e tenho certeza que mesmo o que falhou está de volta temporariamente (embora não confie nisso). Mas quando eu emito lvchange -a y vg-array/array-data
, recebo uma falha com o seguinte no dmesg
not clean -- starting background reconstruction
device dm-12 operational as raid disk 1
device dm-14 operational as raid disk 2
device dm-16 operational as raid disk 3
cannot start dirty degraded array.
Tenho certeza de que existem maneiras de forçar o início usando o mdadm, mas não vi nada para o lvm. Mas como tenho três discos, todos os meus dados estão lá , portanto devem ser recuperáveis. Alguém sabe como fazer?
A solução para isso é adicionar o parâmetro de inicialização do kernel
Para o seu
/etc/default/grub
entãoupdate-grub
e reinicie. Eu ainda tive que ativar o volume manualmente, mas depois de adicionar esse parâmetro, as matrizes degradadas sujas agora são um aviso e não um erro.Isso está documentado em https://www.kernel.org/doc/html/latest/admin-guide/md.html#boot-time-assembly-of-degraded-dirty-arrays
Depois de adicionar um novo dispositivo, crie um PV nele, adicione o PV ao volumegroup com
vgextend
e remova os PVs ausentes usandovgreduce --remove --force
, eu poderia reparar minha matriz raid6 no LVM usando o seguinte comandoPodemos ver o progresso do reparo por
lvs
, que o mostrará em Cpy%Sync.