Redimensionnement d'une partition racine EXT3 sur un LVM sans reboot !

Comme tout bon administrateur le sait, le dimensionnement des partitions d'un serveur n'est pas à prendre à la légère sous peine de rencontrer de sérieux problèmes par la suite. Heureusement LVM permet de gérer l'espace disque de façon flexible en autorisant la création de partition sur plusieurs disques physiques. Aujourd'hui, nous allons voir comment agrandir la taille de la partition root d'un serveur sans interruption de service (!). La partition en question est au format EXT3 et fait partie d'un LVM.

Le LVM du serveur concerné possède un virtual group "raid0" de 558Go. Ce virtual group est utilisé à 100%.

~$ vgdisplay raid0
--- Volume group ---
VG Name raid0
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 558,79 GB
PE Size 4,00 MB
Total PE 143051
Alloc PE / Size 143051 / 558,79 GB
Free PE / Size 0 / 0
VG UUID QR8u96-fZ3S-nLha-Px6Q-E2VA-g8Gd-IMoIss

Ce virtual group contient 3 logical volumes : "root", "var" et "storage".

~$ lvdisplay raid0
--- Logical volume ---
LV Name /dev/raid0/root
VG Name raid0
LV UUID WXEOOi-LYiD-IN6P-nfa7-QbbX-wmxx-jAa3YV
LV Write Access read/write
LV Status available
# open 1
LV Size 4,88 GB
Current LE 1250
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

--- Logical volume ---
LV Name /dev/raid0/var
VG Name raid0
LV UUID 6bOrnk-vtpI-egk7-Qw9I-M0Ml-j0gq-qTIXGS
LV Write Access read/write
LV Status available
# open 1
LV Size 2,93 GB
Current LE 750
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1

--- Logical volume ---
LV Name /dev/raid0/storage
VG Name raid0
LV UUID lLlNM8-Zc8f-Le8H-Nvby-YQnO-ZPZI-gQsaTQ
LV Write Access read/write
LV Status available
# open 0
LV Size 550,98 GB
Current LE 141051
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:2

Commençons par réduire l'espace alloué à "storage" pour libérer de l'espace dans le virtual group. Pour celà, nous allons démonter la partition EXT3 et la vérifier avant de la redimensionner. Une fois cette opération réalisée, nous pourrons diminuer la taille du logical volume contenant cette partition EXT3 sans risque de corruption du système de fichiers.

~$ umount /dev/mapper/raid0-storage

L'option "-f" de e2fsck permet de forcer la vérification même si le système de fichier est considéré comme "propre".

~$ e2fsck -f /dev/raid0/storage
e2fsck 1.41.0 (10-Jul-2008)
Passe 1 : vérification des i-noeuds, des blocs et des tailles
Passe 2 : vérification de la structure des répertoires
Passe 3 : vérification de la connectivité des répertoires
Passe 4 : vérification des compteurs de référence
Passe 5 : vérification de l'information du sommaire de groupe
/dev/raid0/storage : 75366/72220672 fichiers (1.0% non contigus), 110012950/144436224 blocs

On lance ensuite resize2fs avec l'option "-p" pour activer la réparation automatique.

~$ resize2fs -p /dev/raid0/storage 538G
resize2fs 1.41.0 (10-Jul-2008)
Resizing the filesystem on /dev/raid0/storage to 141033472 (4k) blocks.
Début de la passe 2 (max = 1822064)
Relocalisation de blocs XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Début de la passe 3 (max = 4408)
Examen de la table d'i-noeuds XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Début de la passe 4 (max = 4264)
Mise à jour des références d'i-noeudsXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXLe système de fichiers /dev/raid0/storage a maintenant une taille de 141033472 blocs.

Nous pouvons maintenant procéder au redimensionnement du logical volume.

~$ lvresize -L 538G /dev/raid0/storage
WARNING: Reducing active logical volume to 538,00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce storage? [y/n]: y
Reducing logical volume storage to 538,00 GB
Logical volume storage successfully resized

Parfait, il ne reste qu'à remonter la partition.

~$ mount /dev/mapper/raid0-storage

Le redimensionnement a permi de libérer un peu d'espace dans le virtual group.

~$ vgdisplay raid0
--- Volume group ---
VG Name raid0
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 558,79 GB
PE Size 4,00 MB
Total PE 143051
Alloc PE / Size 139728 / 545,81 GB
Free PE / Size 3323 / 12,98 GB
VG UUID QR8u96-fZ3S-nLha-Px6Q-E2VA-g8Gd-IMoIss

Utilisons cet espace libre pour augmenter la taille de la partition root. Puisque nous allons augmenter l'espace disponible il n'y a pas de risque de perdre de données. Il est donc inutile de démonter la partition ou même de la vérifier, le processus peut se dérouler sans interruption de service.

~$ lvresize -L +12,98G /dev/raid0/root
Rounding up size to full physical extent 12,98 GB
Extending logical volume root to 17,86 GB
Logical volume root successfully resized

Une dernière vérification permet de constater que l'espace a bien été alloué ; le virtual group ne contient plus d'espace libre.

~$ vgdisplay raid0
--- Volume group ---
VG Name raid0
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 6
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 558,79 GB
PE Size 4,00 MB
Total PE 143051
Alloc PE / Size 143051 / 558,79 GB
Free PE / Size 0 / 0
VG UUID QR8u96-fZ3S-nLha-Px6Q-E2VA-g8Gd-IMoIss

Hope this helps Wink