En primer lugar: para aquellos que todavía creen en "RAID0 no tiene repuesto". Podría tener un repuesto manual, hecho por humanos, que entienden los niveles RAID y mdadm. mdadm es RAID de software, por lo que podría hacer muchas cosas interesantes.
¡Créditos a Zoredache por la idea!
Entonces, la situación:
- tienes una matriz RAID0 de dos discos
- desea reemplazar uno de ellos sin tiempo de inactividad de la matriz
Si el tiempo de inactividad es aceptable, siempre puede hacer una copia en bloque del disco con dd y volver a ensamblar la matriz, mdadm funcionará correctamente.
Solución: use RAID4 como solución intermedia
RAID0 -> RAID4 -> RAID0
Entonces, si no recuerda RAID4, es simple. Tiene un bloque de paridad, pero a diferencia de RAID5 no se distribuye a través de la matriz, sino que reside en UN disco. Ese es el punto, esto es importante y esta es la razón por la cual RAID5 no funcionará.
Lo que necesitará: dos discos más del mismo tamaño, como el disco que desea reemplazar.
Medio ambiente:
- Ubuntu 14.04 Thrusty Thar
- mdadm - v3.2.5 - 18 de mayo de 2012
- / dev / sdb: comienza con él, lo reemplazará
- / dev / sdc - comienza con eso
- / dev / sdd: se usará temporalmente
- / dev / sde: se usará en lugar de sdb
La mejor guía mdadm de repuesto en caliente 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
Hemos creado la matriz raid0, se ve dulce.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
Este es nuestro punto de control: si incluso un bit difiere en el resultado /dev/md0
, hemos fallado.
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_]
Entonces, crecimos nuestra matriz para que sea RAID4. Todavía no hemos agregado el disco de paridad, así que hagámoslo. El crecimiento será instantáneo: no hay nada que volver a calcular o 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
Hemos agregado sdd
como disco de paridad. Es importante recordar esto: ¡el orden de los discos en la primera fila no está sincronizado con la imagen en la segunda fila! [UU_]
sdd
se muestra primero, pero de hecho es el último, y no contiene los datos, sino la paridad.
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]
Hemos hecho que nuestro disco sdb sea defectuoso, para eliminarlo en los próximos pasos.
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
Los detalles nos muestran la eliminación del primer disco y aquí podemos ver el verdadero orden de los discos en la matriz. Es importante rastrear el disco con paridad, no debemos dejarlo en la matriz cuando regresemos a 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
se elimina por completo, podría ser quitado.
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
Hemos agregado el reemplazo para nuestro disco sdb. Y aquí vamos: ahora los datos de SDB se están recuperando utilizando la paridad. Sweeeeet
md0 : active raid4 sde[4] sdd[3] sdc[1]
2096128 blocks super 1.2 level 4, 512k chunk, algorithm 5 [3/3] [UUU]
Hecho. En este momento estamos completamente seguros: todos los datos de sdb se recuperan y ahora tenemos que eliminar sdd (recuerde, tiene paridad).
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_]
Hecho sdd defectuoso.
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_]
Se eliminó sdd de nuestra matriz. Estamos listos para convertirnos en RAID0 nuevamente.
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 y bang!
md0 : active raid0 sde[4] sdc[1]
2096128 blocks super 1.2 512k chunks
Hecho. Veamos la suma de comprobación md5.
sudo md5sum /dev/md0
b422ba644a3c83cdf28adfa94cb658f3 /dev/md0
¿Alguna pregunta más? Entonces RAID0 podría tener un repuesto dinámico. Se llama "usuario";)