mdadm - Eliminar el disco de RAID0


11

Entonces, me gustaría saber si es posible hacer lo siguiente con mdadm:

  1. Comienzo con la configuración RAID0 en 2 discos: sday sdb.
  2. Me gustaría agregar un disco más a la matriz sdcy mover todos los datos sdba ella.
  3. Desconectarse sdb.

En este momento sólo veo una opción - dejo la matriz, copio sdba sdccon ddo cualquier otra herramienta de bloque de copiar e iniciar la parte posterior matriz.

¿Echo de menos algo? ¿Es posible hacer esto con mdadm?


Puede convertir sdb en un espejo temporal y luego sincronizar sdc en segundo plano; esto redujo el tiempo de inactividad necesario, aunque no hice esto como principiante en su lugar.
— peterh - Restablecer Monica

No soy un principiante seguro :) ¿Puedes contarme más sobre el espejo temporal? ¿Es la característica mdadm?
— maniaque

No, es una característica de incursión simple. Pensé en una matriz temporal raid1, que podría ser el lugar de sdb en su matriz raid1. Mientras sincroniza sdb a sdc, también puede usarlo como parte de su matriz raid0.
— peterh - Restablecer Monica

Entonces, ¿te entiendo bien? 1. Detener la matriz. 2. Cree una matriz RAID1 más con sbd y sdc. 3. ¿Y cómo podría preguntar mdadm para iniciar mi RAID0 con md1 en lugar de sdb?
— maniaque

No he investigado mucho, pero ciertamente parece que deberías poder crecer desde un RAID0 -> RAID5. Luego, vuelva a reducir a RAID0.
— Zoredache

Respuestas:


17

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 sddcomo 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";)


1

Hasta donde sé, una vez que configura un RAID0, no puede cambiar uno de los discos. Puede realizar una copia de seguridad y cambiar los discos y restaurar la copia de seguridad. Simplemente RAID5 esos 3 discos que tienes. De esa manera, en el futuro, puede soltar un disco y aún reconstruirlo.


Bueno, sé cómo hacer lo que hablo con RAID5: puedo agregar un nuevo disco a la matriz (como repuesto), luego marcar el disco que me gusta mover como defectuoso y eliminarlo de la matriz, limpiando el superbloque después. Pero estoy interesado en la misma operación con RAID0 :)
— maniaque

@maniaque Se llama RAID 0 porque cero es la cantidad de RAID que obtienes. No se debe colocar absolutamente nada de importancia en un RAID 0.
— Michael Hampton

@MichaelHampton Creo que quiere decir redundancia, no RAID, pero su declaración es 100% correcta.
— joeg1ff

@MichaelHampton Por favor, mira mi respuesta a continuación :)
— maniaque

0

RAID 0 no proporciona redundancia.

Por lo tanto, no es compatible con el reemplazo del disco caliente.


1
Solo mira abajo, por favor. No hay nada imposible, cuando entiendes los niveles de RAID;)
— maniaco
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.