Creación de la matriz RAID 10 de ejemplo

Creación de la matriz RAID 10 de ejemplo

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 mdadmRAID 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/rtest1sobre rtest6los 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 rtestXvolú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 --addel 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 mdadmtermine 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:

  1. 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.
  2. 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.

mdadmno soporta el crecimiento de RAID10

información relacionada