Actualmente tengo 8 discos cada uno de tamaño 32G que forman un RAID 10. Ahora, quiero aumentar el tamaño de este RAID agregando discos adicionales. Este es un dispositivo de producción, por lo que ya hay datos críticos en el RAID. El sistema de archivos es XFS. ¿Hay alguna forma de aumentar el tamaño de este RAID sin afectar las lecturas/escrituras en ejecución en ese RAID? Si no, ¿cómo hacer esto con un tiempo mínimo sin conexión?
Respuesta1
Las respuestas existentes están bastante desactualizadas. Aquí, en 2020, ahora es posible hacer crecer un mdadm
RAID 10 por software, simplemente agregando 2 o más discos del mismo tamaño.
Creación de la matriz RAID 10 de ejemplo
Para fines de prueba, en lugar de unidades físicas, creé 6 volúmenes LVM de 10 GB, /dev/vg0/rtest1
sobre rtest6
los cuales mdadm no tuvo quejas.
# Using the thinpool lvthin on VG vg0 - I created 6x 10G volumes
lvcreate -T vg0/lvthin -V 10G -n rtest1
lvcreate -T vg0/lvthin -V 10G -n rtest2
...
A continuación, creé una matriz RAID 10 mdadm usando los primeros 4 rtestX
volúmenes.
mdadm --create --verbose /dev/md0 --level=10 --raid-devices=4 /dev/vg0/rtest[1-4]
Usando mdadm -D
(igual a --detail
), podemos ver que la matriz tiene 4x "unidades", con una capacidad de 20 GB de los 40 GB de volúmenes, como se espera con RAID 10.
root@host ~ # mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Nov 20 09:02:39 2020
Raid Level : raid10
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 4
Total Devices : 4
Persistence : Superblock is persistent
Update Time : Fri Nov 20 09:04:24 2020
State : clean
Active Devices : 4
Working Devices : 4
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : someguy123:0 (local to host someguy123)
UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
Events : 23
Number Major Minor RaidDevice State
0 253 9 0 active sync set-A /dev/dm-9
1 253 10 1 active sync set-B /dev/dm-10
2 253 11 2 active sync set-A /dev/dm-11
3 253 12 3 active sync set-B /dev/dm-12
Ampliación del RAID10 con 2 nuevos volúmenes/discos de igual tamaño
Para hacer crecer la matriz, primero necesita --add
el par de discos de la matriz, luego use --grow --raid-devices=X
(donde X es el nuevo número total de discos en el RAID) para solicitar que mdadm remodele el RAID10 para usar los 2 discos de repuesto como parte de la matriz.
mdadm --add /dev/md0 /dev/vg0/rtest5 /dev/vg0/rtest6
mdadm --grow /dev/md0 --raid-devices=6
Supervisar el proceso de resincronización
Aquí está la parte aburrida: esperar desde minutos, horas, días o incluso semanas, dependiendo del tamaño de su RAID, hasta que mdadm termine de remodelar las nuevas unidades.
Si lo comprobamos mdadm -D
, podemos ver que el RAID se está remodelando actualmente.
mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Nov 20 09:02:39 2020
Raid Level : raid10
Array Size : 20953088 (19.98 GiB 21.46 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Fri Nov 20 09:15:05 2020
State : clean, reshaping
Active Devices : 6
Working Devices : 6
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Reshape Status : 0% complete
Delta Devices : 2, (4->6)
Name : someguy123:0 (local to host someguy123)
UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
Events : 31
Number Major Minor RaidDevice State
0 253 9 0 active sync set-A /dev/dm-9
1 253 10 1 active sync set-B /dev/dm-10
2 253 11 2 active sync set-A /dev/dm-11
3 253 12 3 active sync set-B /dev/dm-12
5 253 14 4 active sync set-A /dev/dm-14
4 253 13 5 active sync set-B /dev/dm-13
¡Disfrute de su matriz RAID10 más grande!
Finalmente, una vez que mdadm
termine de remodelar, ahora podemos ver que el tamaño de la matriz es ~30G en lugar de ~20G, lo que significa que la remodelación fue exitosa y relativamente sencilla de realizar :)
mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Fri Nov 20 09:02:39 2020
Raid Level : raid10
Array Size : 31429632 (29.97 GiB 32.18 GB)
Used Dev Size : 10476544 (9.99 GiB 10.73 GB)
Raid Devices : 6
Total Devices : 6
Persistence : Superblock is persistent
Update Time : Fri Nov 20 09:25:01 2020
State : clean
Active Devices : 6
Working Devices : 6
Failed Devices : 0
Spare Devices : 0
Layout : near=2
Chunk Size : 512K
Consistency Policy : resync
Name : someguy123:0 (local to host someguy123)
UUID : e49ab53b:c66321f0:9a4e272e:09dc25b1
Events : 93
Number Major Minor RaidDevice State
0 253 9 0 active sync set-A /dev/dm-9
1 253 10 1 active sync set-B /dev/dm-10
2 253 11 2 active sync set-A /dev/dm-11
3 253 12 3 active sync set-B /dev/dm-12
5 253 14 4 active sync set-A /dev/dm-14
4 253 13 5 active sync set-B /dev/dm-13
Respuesta2
Hay 2 casos:
- agrega nuevas unidades. La forma más fácil y segura es crear una nueva matriz en las nuevas unidades, crear un volumen físico en la nueva matriz y aquí está. No hay pérdida de rendimiento aquí. Como beneficio adicional, puede crear un nuevo grupo de volúmenes para colocar sus datos en una matriz u otra.
- Reemplaza las unidades existentes por otras más grandes. Reemplácelas una por una, cada vez cree 2 particiones en el disco. Agrega la primera (por ejemplo, sdX1 a la matriz existente (debería recuperarse automáticamente) y luego puede crear una nueva matriz en todas las segundas particiones (la sdX2). Dependiendo de su uso, puede haber un impacto en el rendimiento de algunas operaciones ( básicamente si copias datos entre ambas matrices).
En ambos casos no perderá datos y si su hardware permite la conexión en caliente no tendrá tiempo de inactividad.
Por cierto, incluso si mdadm permitiera un cambio de tamaño dinámico de la matriz, no me arriesgaría con los datos de producción.
Respuesta3
Suponiendo que esto esté en Linux mdadm
, no puedes.
mdadm
no soporta el crecimiento de RAID10