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 emiti pvmove
para mover as extensões do disco com falha para o novo disco. Algum tempo 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 o array não aparece. Tudo parece bem, por exemplo, 3/4 dos discos estão funcionando, e tenho certeza de que até mesmo o que falhou está fazendo backup temporariamente (embora não confie nele). 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 do uso do mdadm, mas não vi nada para o lvm. Mas como tenho três discos, todos os meus dados estãoláportanto, deve ser recuperável. Alguém sabe como fazer isso?
Responder1
A solução para isso é adicionar o parâmetro de inicialização do kernel
md-mod.start_dirty_degraded=1
Para o seu /etc/default/grub
então update-grub
e reinicie. Eu ainda tive que ativar o volume manualmente, mas depois de adicionar esse parâmetro, matrizes sujas e degradadas agora são um aviso e não um erro.
Isto está documentado emhttps://www.kernel.org/doc/html/latest/admin-guide/md.html#boot-time-assembly-of-degraded-dirty-arrays
Responder2
Depois de adicionar um novo dispositivo, crie um PV nele, adicione o PV ao grupo de volumes com vgextend
e remova os PVs ausentes usando vgreduce --remove --force
, eu poderia reparar meu array raid6 no LVM usando o seguinte comando
lvconvert --repair <vgname>/<lvname>
Podemos ver o andamento do reparo por lvs
, que irá mostrá-lo em Cpy%Sync.