{{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.