En temps que particulier, on a rarement tous les disques de la même taille. Dans mon cas, j’ai des disques de 1To, 1,5To et 2To. Et je compte remplacer le 1To. Le but est d’avoir un RAID sur une base de 1,5To et plus 1To. Voici la configuration en RAID5 :

  • 1To
  • 1,5To
  • 2To
  • 2To

Ce qui me donnait donc en RAID5 : (4-1 disques)*1To = 3To

Le dernier disque de 1To est à remplacer et je me présente donc avec des disques de 1,5To et 2To. On peut donc envisager d’utiliser toute l’espace disponible c’est à dire (4-1 disques)*1,5To=4,5To.

Pourquoi se priver de ces 1,5To supplémentaires sans trop de souci ?

Étapes à suivre pour éviter la perte de données

Voici donc la manip basée en machine virtuelle sur des disques de 10Go, 15Go, et 4 de 20Go. Je change le disque de 10Go pour un 20Go. J’aurai donc 15Go et 5 de 20Go.

  1. Vérifier l’état de son raid
  2. Vérifier le système de fichier
  3. Remplacer le disque dur
  4. Augmenter l’array
  5. Augmenter le système de fichier

Vérifier l’état de son raid

Vérifier que votre RAID n’a pas de secteur défectueux avant tout!

root@omv:~# cat /sys/block/md0/md/sync_action
idle
root@omv:~# echo check > /sys/block/md0/md/sync_action 
root@omv:~# cat /sys/block/md0/md/sync_action
check

Vous pouvez voir l’état d’avancement du check via mdstat :

root@omv:~# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdb[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1]
      52385280 blocks super 1.2 level 5, 512k chunk, algorithm 2 [6/6] [UUUUUU]
      [>....................]  check =  1.0% (108552/10477056) finish=7.9min speed=21710K/sec
      
unused devices: <none>

Les disques du test sont en RAID5 avec 6 disques avec le plus petit de 10Go, donc 50Go sur le RAID.

Vérifier les caractéristiques de votre RAID :

root@omv:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu May  7 20:53:42 2015
     Raid Level : raid5
     Array Size : 52385280 (49.96 GiB 53.64 GB)
  Used Dev Size : 10477056 (9.99 GiB 10.73 GB)
   Raid Devices : 6
  Total Devices : 6
    Persistence : Superblock is persistent

    Update Time : Tue May 12 00:14:17 2015
          State : clean 
 Active Devices : 6
Working Devices : 6
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : omv:data  (local to host omv)
           UUID : 66136108:2ba95ce4:6f028202:33e061ea
         Events : 411

    Number   Major   Minor   RaidDevice State
       7       8       96        0      active sync   /dev/sdg
       6       8      112        1      active sync   /dev/sdh
       2       8       32        2      active sync   /dev/sdc
       3       8       48        3      active sync   /dev/sdd
       4       8       64        4      active sync   /dev/sde
       5       8       80        5      active sync   /dev/sdf

Vérifier le système de fichier

Vu que vous aller augmenter le système de fichiers, pensez à le vérifier et corriger les problèmes :

fsck.ext4 -fy /dev/md0

Remplacer le disque dur

Mettez le disque de plus petite taille en fault et retirez le du RAID :

mdadm /dev/md0 -f /dev/sdc
mdadm /dev/md0 -r /dev/sdc

Vous pouvez maintenant retirer physiquement le disque dur pour y mettre le nouveau.

Il ne reste plus qu’à faire un add du nouveau disque et attendre la synchronisation mdadm.

mdadm /dev/md0 -a /dev/sdb

Augmenter l’array RAID mdadm

Une fois que le RAID a été reconstruit suite à l’ajout d’un nouveau disque de 20Go, il reste donc un disque de 15Go et des disques de 20Go. Je peux donc passer de 50Go de RAID à 75Go : 6 disques en RAID5 15Go*5=75Go.

Avec grow on peut soit ajouter un nouveau disque au RAID, soit comme ici prendre en compte que la taille des disques a changé. On peut réduire un array RAID en lui mettant une taille définie, pour supprimer un disque p.e. Mais dans notre cas on veut augmenter au maximum et donc on utilise le mot clé « max » :

root@omv:~# mdadm --grow /dev/md0 --size=max
mdadm: component size of /dev/md0 has been set to 15720448K
root@omv:~# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdg[7] sdf[5] sde[4] sdd[3] sdc[2] sdh[6]
      78602240 blocks super 1.2 level 5, 512k chunk, algorithm 2 [6/6] [UUUUUU]
      [==============>......]  resync = 73.0% (11488508/15720448) finish=0.9min speed=72246K/sec
      
unused devices: <none>
root@omv:~# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdg[7] sdf[5] sde[4] sdd[3] sdc[2] sdh[6]
      78602240 blocks super 1.2 level 5, 512k chunk, algorithm 2 [6/6] [UUUUUU]

On voit que l’on passe à 15Go d’espace par disques au lieu de 10Go : 15720448K

On vérifie que l’on dispose bien de 75Go dans notre RAID mdadm :

root@omv:~# mdadm --detail /dev/md0
/dev/md0:
        Version : 1.2
  Creation Time : Thu May  7 20:53:42 2015
     Raid Level : raid5
     Array Size : 78602240 (74.96 GiB 80.49 GB)
  Used Dev Size : 15720448 (14.99 GiB 16.10 GB)
   Raid Devices : 6
  Total Devices : 6
    Persistence : Superblock is persistent

    Update Time : Tue May 12 00:33:14 2015
          State : active 
 Active Devices : 6
Working Devices : 6
 Failed Devices : 0
  Spare Devices : 0

         Layout : left-symmetric
     Chunk Size : 512K

           Name : omv:data  (local to host omv)
           UUID : 66136108:2ba95ce4:6f028202:33e061ea
         Events : 420

    Number   Major   Minor   RaidDevice State
       7       8       96        0      active sync   /dev/sdg
       6       8      112        1      active sync   /dev/sdh
       2       8       32        2      active sync   /dev/sdc
       3       8       48        3      active sync   /dev/sdd
       4       8       64        4      active sync   /dev/sde
       5       8       80        5      active sync   /dev/sdf

Augmenter le système de fichier

On vérifie la taille actuelle avant, ici j’avais 50Go :

root@omv:~# df -h
Sys. fich.                                             Taille Util. Dispo Uti% Monté sur
rootfs                                                   7,6G  1,1G  6,1G  15% /
udev                                                      10M     0   10M   0% /dev
tmpfs                                                    303M  484K  302M   1% /run
/dev/disk/by-uuid/0caa296b-e542-4302-a240-7faaee84af1a   7,6G  1,1G  6,1G  15% /
tmpfs                                                    5,0M     0  5,0M   0% /run/lock
tmpfs                                                    682M     0  682M   0% /run/shm
tmpfs                                                    1,5G     0  1,5G   0% /tmp
/dev/md0                                                  50G  180M   49G   1% /mnt

Et on fait un simple resize2fs et on vérifie que l’on à bien 75Go après.

root@omv:~# resize2fs /dev/md0
resize2fs 1.42.5 (29-Jul-2012)
Le système de fichiers de /dev/md0 est monté sur /mnt ; le changement de taille doit être effectué en ligne
old_desc_blocks = 7, new_desc_blocks = 10
En train d'effectuer un changement de taille en ligne de /dev/md0 vers 19650560 (4k) blocs.
Le système de fichiers /dev/md0 a maintenant une taille de 19650560 blocs.

root@omv:~# df -h
Sys. fich.                                             Taille Util. Dispo Uti% Monté sur
rootfs                                                   7,6G  1,1G  6,1G  15% /
udev                                                      10M     0   10M   0% /dev
tmpfs                                                    303M  484K  302M   1% /run
/dev/disk/by-uuid/0caa296b-e542-4302-a240-7faaee84af1a   7,6G  1,1G  6,1G  15% /
tmpfs                                                    5,0M     0  5,0M   0% /run/lock
tmpfs                                                    682M     0  682M   0% /run/shm
tmpfs                                                    1,5G     0  1,5G   0% /tmp
/dev/md0                                                  74G  180M   74G   1% /mnt

 

Voilà tout cela a été fait avec le plus de précaution possible afin d’avoir une augmentation de l’espace disque gratuite! Et tout cela en ligne sans interruption de service! Je vous conseille toutefois d’éviter d’avoir de la charge sur le serveur durant l’opération et n’oubliez jamais de faire un backup avant toute modification à votre RAID mdadm!