{{tag>sysadmin linux raid mdadm}}
====== Extension du RAID1 logiciel ======
===== Etat initial =====
La machine dispose d'un RAID logiciel de niveau 1 composé par deux disques SATA:
* 1 disque de 6 TO
* 1 disque de 2 TO
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:
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:
* Réévaluer l'espace disponible sur le volume physique LVM construit sur le RAID via la commande **pvresize**.
* Attribuer le surplus d'espace disponible au volume logique LVM via **lvextend**.
* Étendre la partition ext4 construite sur le volume logique LVM via **resize2fs**.
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 PE((**P**hysical **E**xtends)) 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:
* La fiabilité du RAID logiciel,
* La flexibilité des volumes logiques LVM.