Table des matières

, , ,

Extension du RAID1 logiciel

Etat initial

La machine dispose d'un RAID logiciel de niveau 1 composé par deux disques SATA:

Le RAID 1 a donc une taille initiale de 2TO. On souhaite remplacer le disque de 2TO par un disque de 6TO afin d'agrandir le volume du RAID1 à une taille de 6TO.

Les informations sur les volumes RAIDs logiciels existants sont obtenues par lecture du fichier /proc/mdstat

cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md127 : active raid1 sdc[1] sdb[0]
      1953383488 blocks super 1.2 [2/2] [UU]
      bitmap: 0/15 pages [0KB], 65536KB chunk

Ici le volume est désigné par /dev/md127, il se compose de 2 disques, il fonctionne normalement. Pour obtenir les détails de ce groupe RAID:

mdadm --detail /dev/md127 
/dev/md127:
        Version : 1.2
  Creation Time : Mon Oct 14 17:50:30 2019
     Raid Level : raid1
     Array Size : 1953383488 (1862.89 GiB 2000.26 GB)
  Used Dev Size : 1953383488 (1862.89 GiB 2000.26 GB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

  Intent Bitmap : Internal

    Update Time : Thu Dec 26 09:48:13 2019
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : storage01:0  (local to host storage01)
           UUID : 7b9de5fd:bdcb6b7f:ae3c1bda:f4a1f8fd
         Events : 3632

    Number   Major   Minor   RaidDevice State
       0       8       16        0      active sync   /dev/sdb
       1       8       32        1      active sync   /dev/sdc

On peut lire ici que le volume RAID /dev/md127 est composé par deux disques /dev/sdb et /dev/sdc

Test des notifications avant retrait du plus petit disque:

 mdadm --monitor --scan --test --oneshot /dev/md0

Identification et retrait du disque

La commade lshw permet de lister les disques:

lshw -C disk
  *-disk                    
       description: SCSI Disk
       produit: LD0 RAID5 79424R
       fabriquant: MegaRAID
       identifiant matériel: 1.0.0
       information bus: scsi@8:1.0.0
       nom logique: /dev/sda
       version: 1N41
       taille: 272GiB (292GB)
       fonctionnalités: partitioned partitioned:dos
       configuration: ansiversion=2 logicalsectorsize=512 sectorsize=512 signature=4cdbe9ec
  *-disk
       description: ATA Disk
       produit: WDC WD6002FFWX-6
       fabriquant: Western Digital
       identifiant matériel: 0.0.0
       information bus: scsi@0:0.0.0
       nom logique: /dev/sdb
       version: 0A83
       numéro de série: K1HLVGYD
       taille: 5589GiB (6001GB)
       fonctionnalités: gpt-1.00 partitioned partitioned:gpt
       configuration: ansiversion=5 guid=13502704-0305-48f5-a540-7f49a0794fd7 logicalsectorsize=512 sectorsize=4096
  *-disk
       description: ATA Disk
       produit: WDC WD20EFRX-68E
       fabriquant: Western Digital
       identifiant matériel: 0.0.0
       information bus: scsi@2:0.0.0
       nom logique: /dev/sdc
       version: 0A82
       numéro de série: WD-WCC4M4JHE6HL
       taille: 1863GiB (2TB)
       fonctionnalités: gpt-1.00 partitioned partitioned:gpt
       configuration: ansiversion=5 guid=a21bce95-4398-4f44-ace7-f67cc1ca5b5b logicalsectorsize=512 sectorsize=4096

On identifie ici le disque /dev/sdc comme celui ayant une taille de 2TO, c'est bien celui-ci que nous allons retirer.

On marque le disque /dev/sdc défaillant et on le retire du RAID

mdadm /dev/md127 --fail /dev/sdc
mdadm /dev/md127 --remove /dev/sdc 

On stoppe l'alimentation du disque:

hdparm -Y /dev/sdc

On peut retirer le disque en toute sécurité.

Ajout du nouveau disque

Partitionnement

On branche le nouveau disque, on crée un table de type GPT.

Après branchement, la commande lshw retourne les caractéristiques du nouveau disque:

 *-disk
       description: ATA Disk
       produit: WDC WD60EFAX-68S
       fabriquant: Western Digital
       identifiant matériel: 0.0.0
       information bus: scsi@2:0.0.0
       nom logique: /dev/sdc
       version: 0A82
       numéro de série: WD-WX31D29928Z0
       taille: 5589GiB (6001GB)
       configuration: ansiversion=5 logicalsectorsize=512 sectorsize=4096

Via parted, création d'une table GPT et d'une unique partition primaire qui sera utilisée par le RAID logiciel

parted /dev/sdc
(parted) mklabel gpt
(parted) mkpart primary 0% 100%                                  
(parted) align-check
(parted) name 1 raid
(parted) q  

Ajout au cluster RAID

Associer la nouvelle partition au groupe raid:

mdadm /dev/md127 --add /dev/sdc1

Vérifier l’état du volume:

cat /proc/mdstat 
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] [raid10] 
md127 : active raid1 sdc1[2] sdb[0]
      1953383488 blocks super 1.2 [2/1] [U_]
      [>....................]  recovery =  0.5% (10619520/1953383488) finish=172.9min speed=187174K/sec
      bitmap: 0/15 pages [0KB], 65536KB chunk

unused devices: <none>

La synchronisation a commencé, Une fois terminée, on peut étendre le volume afin qu'il utilise les 6TO à présent disponibles:

mdadm /dev/md127 --grow --size=max

Après cette opération le RAID1 passe de 2000.26 GB à 6001,04 GO:

mdadm --detail /dev/md127
...
     Array Size : 5860389888 (5588.90 GiB 6001.04 GB)
...

Extension du volume LVM

Après cette opération l'extension du groupe de volume RAID est effective mais n'est toujours pas exploitable par les applications. Pour cela il va falloir:

pvresize /dev/md127

Après cette opération le groupe de volume LVM vgdata profite bien de l'espace disponible sur le PV comme le montre le retour de la commande vgdisplay rapportant environ 4TO de PE1) libres:

vgdisplay /dev/vgdata
--- Volume group ---
  VG Name               vgdata
  ...
  VG Size               5,46 TiB
  PE Size               4,00 MiB
  Total PE              1430759
  Alloc PE / Size       476900 / 1,82 TiB
  Free  PE / Size       953859 / 3,64 TiB
  VG UUID               11fbWG-4DKV-6Q23-BCk5-JnVY-tWYE-Lzvej9

On affecte la totalité des PEs disponibles sur vgdata au volume logique backup-storage:

lvextend -l +100%FREE /dev/vgdata/backup-storage

La commande lvdisplay confirme bien la nouvelle taille du volume logique LVM backup-storage:

lvdisplay /dev/vgdata/backup-storage
  --- Logical volume ---
  LV Path                /dev/vgdata/backup-storage
  LV Name                backup-storage
  VG Name                vgdata
...
  LV Size                5,46 TiB
...

Extension du système de fichiers

Dernière étape, étendre le système de fichier.

État du système de fichier avant modification:

df -lh
Sys. de fichiers                   Taille Utilisé Dispo Uti% Monté sur
...
/dev/mapper/vgdata-backup--storage   1,8T    880G  953G  49% /srv/bareos/storage
...

Extension du système de fichier:

umount /srv/bareos/storage
e2fsck -f /dev/vgdata/backup-storage 
resize2fs /dev/vgdata/backup-storage
mount /srv/bareos/storage

Etat du système de fichier après modification:

df -lh
Sys. de fichiers                   Taille Utilisé Dispo Uti% Monté sur
...
/dev/mapper/vgdata-backup--storage   5,4T    880G  4,6T  16% /srv/bareos/storage

Conclusion

Le redimensionnement du volume RAID et du volume logique LVM construit par dessus n'a pas posé de problème et a pu se faire sans interruption de service. Cette complexification de l'architecture (LVM /RAID) est un peu plus délicate à appréhender mais a l'avantage de combiner:

1)
Physical Extends