Changer la taille d’une partition ext3 LVM sous CentOS

J’utilise un serveur virtuel sous VMWare ESXi 4.0 pour héberger ce blog. J’y ai installé CentOS 5.4 pour faire tourner apache http, mysql et php. J’ai toutefois visé un peu bas lors de la création de la machine virtuelle en n’allouant qu’un disque de 2Go. Si initialement c’était bon, c’est assez rapidement devenu trop juste pour y faire tourner les tâches d’administration courantes. Voici donc de bout en bout la procédure que j’ai suivie pour augmenter la taille du disque.

Notez que ce qui suit peut entrainer la perte de vos données si vous commettez une erreur de commande. Je dégage toute responsabilité sur ce que vous ferez en lisant cet article.

Pour redimensionner le disque sous VMWare ESXi, c’est assez simple : il faut commencer par éteindre la machine virtuelle (en pause ça n’est pas possible de toucher à la taille du disque). Puis éditer la machine pour augmenter la taille du disque. Notez que s’il est possible de l’augmenter, il n’est pas possible de la diminuer.

Une fois le disque agrandi prenez un snapshot de la machine !! Cela vous permet de revenir à ce point de la procédure en cas de fausse manipulation par la suite.

Le disque est agrandi mais le système d’exploitation ne voit toujours que l’ancienne taille. On commence par modifier la table des partitions. Par défaut CentOS ne crée que deux partitions, une partition primaire formatée ext3 pour le répertoire /boot qui contient le noyau linux avec lequel l’OS boote. Et une seconde partition primaire qui contient un volume physique géré par LVM2. Ce volume physique fait partie d’un groupe qui lui-même contient le volume logique formaté en ext3 et qui constitue la racine de l’arborescence filesystem. LVM2 est un système très complet qui permet de gérer avec souplesse les disques et les partitions, il n’est toutefois pas pris en charge par l’utilitaire gparted qui nous aurait permis de retailler la partition en quelques clics. On doit tout faire à la main :

Modifier la table des partitions

Avec l’utilitaire fdisk, afficher la table des partitions. Notez que la partition amorçable est /boot. Si vous voyez uniquement les partitions sda1 et sda2 avec sda1 correspondant à /boot vous êtes dans la même configuration que moi. Vous pouvez avec fdisk supprimer la seconde partiton (sda2) et la recréer aussitôt en validant les valeurs proposées par défaut pour qu’elle occupe tout le disque libre (et donc la place nouvellement allouée). Vous pouvez modifier son Id en 8e pour lui indiquer que c’est une partition gérée par LVM mais ce n’est que purement informatif.

Périphérique Amorce   Début       Fin      Blocs    Id  Système
/dev/sda1    *          1          13      104391   83  Linux
/dev/sda2              14         652     5132767+  8e  Linux LVM

Rebootez la machine pour que le système prenne en compte cette nouvelle table des partitions.

# reboot immediat
shutdown -r now

Augmenter la taille de la partition physique de LVM

La table des partitions est modifiée mais LVM continue à voir la partition physique avec son ancienne taille. Utilisez la commande pvresize pour lui faire prendre en compte toute la place de la partition telle qu’elle est décrite dans la table des partitions. Vous pouvez exécuter la commande pvdisplay avant et après l’opération pour vérifier que la nouvelle taille a bien été prise en compte :

# prise en compte de la nouvelle taille par LVM
pvdisplay
pvresize -v -d /dev/sda2
pvdisplay

Augmenter la taille de la partition logique sous LVM

Vous pouvez alors étendre le volume logique de votre partition racine. Personnellement je n’ai pas alloué tout l’espace réservé mais uniquement 1Go, le reste pourra être utile plus tard. Utilisez la commande df pour connaitre le nom du volume logique. Chez moi c’est /dev/mapper/VolGroup00-LogVol00

# Ajouter 1Go au volume logique
lvresize /dev/mapper/VolGroup00-LogVol00 -L +1G

Augmenter la taille du filesystem ext3

Ce n’est pas fini, il faut encore dire au filesystem d’occuper tout ce nouvel espace. Le filesystem utilisé dans mon cas est ext3. Sur CentOS la commande resize2fs permet de changer « à chaud » la taille d’une partition même si cette partition est montée et en cours d’utilisation.

# prise en compte de la nouvelle taille par ext3
resize2fs /dev/mapper/VolGroup00-LogVol00

Voila, vous pouvez utiliser la commande df pour confirmer que la taille de votre partition racine a bien été agrandie de 1Go. Si vous êtes satisfait vous pouvez supprimer le snapshot pris sous VMWare.

6 réflexions sur « Changer la taille d’une partition ext3 LVM sous CentOS »

  1. Hello,

    Très bon article.

    Cependant, il est possible de redimensionner un LVM sans avoir à rebooter le serveur.

    Je n’ai plus mon lab sous la main, mais de mémoire, en ajoutant un disque virtuel et non pas en augmentant la taille du premier disque, on peut faire un scan des disque à chaud et linux le détecte.

    La suite de la procédure est la même.

    • Après le pvresize, pour la liste des volume groups et connaitre l’espace libre : lvs (colonne VFree)
      Pour créer un nouveau volume logique utiliser la commande lvcreate
      une fois le volume créé il suffit de le formater (mkfs -t typefs /dev/mapper/nomvol), ajouter son point de montage dans le fichier /etc/fstab et le monter.

  2. Article très bien fait, manque peut-être d’explications sur la façon dont utiliser fdisk pour les débutants, mais sinon très bon article.

  3. Merci pour l’article.
    Pour information, les versions récentes de gparted permettent de redimensionner une partition physique LVM.
    En bootant sur un iso gparted, on peut effectuer les premières étapes de ta procédure (personnellement je n’ai pas réussi à augmenter la taille du système de fichier sous live CD gparted, je l’ai fait à chaud sous le système invité lui même).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *