Primeiro de tudo: para aqueles que ainda acreditam em "RAID0 não tem hot spare". Poderia ter uma reposição manual, feita por humanos, que entendem os níveis de RAID e o mdadm. O mdadm é um RAID de software, por isso pode fazer muitas coisas interessantes.
Créditos à Zoredache pela 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 poderá fazer uma cópia em bloco do disco com dd e remontar a matriz, o mdadm funcionará bem.
Solução: use RAID4 como solução intermediária
RAID0 -> RAID4 -> RAID0
Portanto, se você não se lembra do RAID4, é simples. Ele possui um bloco de paridade, mas, diferentemente do RAID5, não é distribuído pela matriz, mas reside em UM disco. Esse é o ponto, isso é importante e é por isso que o RAID5 não funcionará.
O que você precisará: mais dois discos do mesmo tamanho, como o disco que você deseja substituir.
Meio Ambiente:
- Ubuntu 14.04 Thrusty Thar
- mdadm - v3.2.5 - 18 de maio de 2012
- / dev / sdb - começa com ele, substitui-o
- / dev / sdc - comece com ele
- / dev / sdd - será usado temporariamente
- / dev / sde - será usado no lugar do sdb
O melhor guia mdadm de reposição a quente 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 uma matriz raid0, parece legal.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
Este é o nosso ponto de verificação - se um bit diferir no resultado /dev/md0
- 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, aumentamos nossa matriz para RAID4. Ainda não adicionamos o disco de paridade, então vamos fazê-lo. O crescimento será instantâneo - não há nada para recalcular 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. É 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 mantém não 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]
Fizemos o disco sdb com defeito, 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
Os 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 na matriz ao retornar 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 retirado.
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 a substituição do nosso disco sdb. E aqui vamos nós: agora os dados do 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]
Feito. No momento, estamos completamente seguros - todos os dados do sdb são recuperados e agora temos que remover o sdd (lembre-se, ele mantém a 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_]
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 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
Aaaaaaand bang!
md0 : active raid0 sde[4] sdc[1]
2096128 blocks super 1.2 512k chunks
Feito. Vejamos a soma de verificação MD5.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
Mais alguma pergunta? Portanto, o RAID0 poderia ter um hot spare. É chamado de "usuário";)