Pregunta:
mdadm
no parece admitir el crecimiento de una matriz del nivel 1 al nivel 10.
Tengo dos discos en RAID 1. Quiero agregar dos discos nuevos y convertir la matriz en una matriz RAID 10 de cuatro discos.
Mi estrategia actual:
- Haz una buena copia de seguridad.
- Cree una matriz RAID 10 de 4 discos degradados con dos discos faltantes.
-
rsync
the RAID 1 array with the RAID 10 array.
- fallar y quitar un disco de la matriz RAID 1.
- Agregue el disco disponible a la matriz RAID 10 y espere a que se complete la resincronización.
- Destruya la matriz RAID 1 y agregue el último disco a la matriz RAID 10.
El problema es la falta de redundancia en el paso 5.
¿Existe una forma mejor?
Respuesta:
Con linux softraid puede crear una matriz RAID 10 con solo dos discos.
Nombres de dispositivos que se utilizan a continuación:
-
md0
es la antigua matriz de tipo / nivel RAID1. -
md1
es la nueva matriz de tipo / nivel RAID10. -
sda1
ysdb2
son particiones nuevas y vacías (sin datos). -
sda2
ysdc1
son particiones antiguas (con datos cruciales).
Reemplace los nombres para que se ajusten a su caso de uso. Utilice, por ejemplo, lsblk
para ver su diseño actual.
0) Copia de seguridad, copia de seguridad, copia de seguridad, copia de seguridad oh y BACKUP
1) Cree la nueva matriz (4 dispositivos: 2 existentes, 2 faltantes):
mdadm -v --create /dev/md1 --level=raid10 --raid-devices=4 /dev/sda1 missing /dev/sdb2 missing
Tenga en cuenta que en este diseño de ejemplo, sda1
tiene una contraparte que falta y sdb2
tiene otra contraparte que falta. Sus datos en md1
no están seguros en este punto (efectivamente es RAID0 hasta que agregue miembros faltantes).
Para ver el diseño y otros detalles del uso de la matriz creada:
mdadm -D /dev/md1
¡Nota! Debe guardar el diseño de la matriz:
# View current mdadm config:
cat /etc/mdadm/mdadm.conf
# Add new layout (grep is to make sure you don't re-add md0):
mdadm --detail --scan | grep "/dev/md1" | tee -a /etc/mdadm/mdadm.conf
# Save config to initramfs (to be available after reboot)
update-initramfs -u
2) Formatee y monte. El /dev/md1
debería poder utilizarse inmediatamente, pero es necesario formatearlo y luego montarlo.
3) Copie archivos. Utilice, por ejemplo, rsync para copiar datos del antiguo RAID 1 al nuevo RAID 10. (este es solo un comando de ejemplo, lea las páginas del manual de rsync)
rsync -arHx / /where/ever/you/mounted/the/RAID10
4) Falla la primera parte del antiguo RAID1 (md0) y agréguelo al nuevo RAID10 (md1)
mdadm /dev/md0 --fail /dev/sda2 --remove /dev/sda2
mdadm /dev/md1 --add /dev/sda2
¡Nota! Esto borrará los datos de sda2
. El md0
aún debería ser utilizable, pero solo si el otro miembro de la incursión estaba completamente operativo.
También tenga en cuenta que esto comenzará con los procesos de sincronización / recuperación en md1
. Para verificar el estado, use uno de los siguientes comandos:
# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1
Espere hasta que finalice la recuperación.
5) Instale GRUB en la nueva matriz (suponiendo que esté iniciando desde ella). Algunos CD de arranque / rescate de Linux funcionan mejor.
6) Arranque en una nueva matriz. SI FUNCIONÓ CORRECTAMENTE Destruya la matriz anterior y agregue el disco restante a la nueva matriz.
PUNTO SIN RETORNO
En este punto, destruirá los datos del último miembro de la matriz md0 anterior. Esté absolutamente seguro de que todo está funcionando.
mdadm --stop /dev/md0
mdadm /dev/md0 --remove /dev/sdc1
mdadm /dev/md1 --add /dev/sdc1
Y nuevamente, espere hasta que md1
recuperación en md1
.
# status of sync/recovery
cat /proc/mdstat
# details
mdadm -D /dev/md1
7) Actualizar la configuración de mdadm
Recuerde actualizar /etc/mdadm/mdadm.conf
(eliminar md0).
Y guarde la configuración en initramfs (estará disponible después del reinicio)
update-initramfs -u