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
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é.
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
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) ...
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 ...
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
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: