Primeiro de tudo: para aqueles que ainda acreditam em "RAID0 não tem hot spare". Pode ter uma reserva manual, feita por humanos, que entendem os níveis de RAID e o mdadm. O mdadm é um software RAID, por isso pode fazer muitas coisas interessantes.
Créditos para Zoredache para a ideia!
Então, a situação:
- você tem uma matriz RAID0 de dois discos
- você gostaria de substituir um deles sem tempo de inatividade da matriz
Se o tempo de inatividade for aceitável, você sempre pode apenas fazer uma cópia em bloco do disco com o dd e remontar a matriz, o mdadm fará OK.
Solução: use o RAID4 como solução intermediária
RAID0 - > RAID4 - > RAID0
Então, se você não se lembra do RAID4, é simples. Tem um bloco de paridade, mas ao contrário do RAID5, ele não é distribuído pela matriz, mas reside em um disco. Esse é o ponto, isso é importante e esta é a razão pela qual o RAID5 não funcionará.
Do que você precisa: mais dois discos do mesmo tamanho que o disco que você deseja substituir.
Ambiente:
- Ubuntu 14.04 Thrusty Thar
- mdadm - v3.2.5 - 18 de maio de 2012
- / dev / sdb - comece com isso, irá substituí-lo
- / dev / sdc - comece com
- / dev / sdd - será usado temporariamente
- / dev / sde - será usado em vez de sdb
O último guia mdadm hot-spare RAID0;)
sudo mdadm -C /dev/md0 -l 0 -n 2 /dev/sd[bc]
md0 : active raid0 sdc[1] sdb[0]
2096128 blocks super 1.2 512k chunks
Criamos o array raid0, parece doce.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
Este é o nosso ponto de verificação - se mesmo um bit diferir em /dev/md0
resultante - falhamos.
sudo mdadm /dev/md0 --grow --level=4
md0 : active raid4 sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
Então, crescemos nossa matriz para ser RAID4. Nós ainda não adicionamos o disco de paridade, então vamos fazer isso. O crescimento será instantâneo - não há nada para recompilar ou recalcular.
sudo mdadm /dev/md0 -a /dev/sdd
md0 : active raid4 sdd[3] sdc[1] sdb[0]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[===>.................] recovery = 19.7% (207784/1048064) finish=0.2min speed=51946K/sec
Adicionamos sdd
como disco de paridade. Isso é importante lembrar - a ordem dos discos na primeira linha não é sincronizada com a imagem na segunda linha! [UU _]
sdd
é exibido primeiro, mas na verdade é o último e não contém os dados, mas a paridade.
sudo mdadm /dev/md0 -f /dev/sdb
md0 : active raid4 sdd[3] sdc[1] sdb[0](F)
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
Tornamos nosso disco sdb com falha, para removê-lo nas próximas etapas.
sudo mdadm --detail /dev/md0
State : clean, degraded
Number Major Minor RaidDevice State
0 0 0 0 removed
1 8 32 1 active sync /dev/sdc
3 8 48 2 active sync /dev/sdd
0 8 16 - faulty spare /dev/sdb
Detalhes nos mostram a remoção do primeiro disco e aqui podemos ver a verdadeira ordem dos discos na matriz. É importante rastrear o disco com paridade, não devemos deixá-lo no array quando voltarmos ao RAID0.
sudo mdadm /dev/md0 -r /dev/sdb
md0 : active raid4 sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
sdb
é completamente removido, pode ser removido.
sudo mdadm /dev/md0 -a /dev/sde
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [_UU]
[==>..................] recovery = 14.8% (156648/1048064) finish=0.2min speed=52216K/sec
Adicionamos o substituto para o nosso disco sdb. E aqui vamos nós: agora os dados de sdb estão sendo recuperados usando paridade. Sweeeeet.
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]
Concluído. Neste momento estamos completamente seguros - todos os dados do sdb são recuperados, e agora temos que remover o sdd (lembre-se, ele contém paridade).
sudo mdadm /dev/md0 -f /dev/sdd
md0 : active raid4 sde[4] sdd[3](F) sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
Made sdd com defeito.
sudo mdadm /dev/md0 -r /dev/sdd
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
Removido o sdd da nossa matriz. Estamos prontos para nos tornar RAID0 novamente.
sudo mdadm /dev/md0 --grow --level=0 --backup-file=backup
md0 : active raid4 sde[4] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/2] [UU_]
[=>...................] reshape = 7.0% (73728/1048064) finish=1.5min speed=10532K/sec
Aaaaaa e bang!
md0 : active raid0 sde[4] sdc[1]
2096128 blocks super 1.2 512k chunks
Concluído. Vamos ver a soma de verificação do MD5.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
Mais alguma pergunta? Então o RAID0 poderia ter um hot spare. É chamado "usuário";)