Attention ! Avant de commencer, il faut savoir que cette opération n’est pas sans risque car nous allons toucher à la structure du disque dur, des pertes de données sont donc possible. Cependant, la procédure décrite ci-dessous a été testée à plusieurs reprises sur des machines en production sans présenter de soucis.
Présentation
Mon disque dur virtuel VMDK de 4 Go dispose de l’organisation suivante :
- Une seule et unique partition nommée « sda1 » occupant tout l’espace,
- Un groupe LVM « vg0 » utilisant tout « sda1 »,
- Deux volumes LVM nommés « lv_root » (3,72 Go) et « lv_swap » (280 Mo) sont présents sur « vg0 »
Procédure
Tout d’abord, il faut commencer par éteindre la machine virtuelle afin de pouvoir augmenter la taille du disque. Dans mon cas, j’ai édité les paramètres de ma machine virtuelle pour faire passer le disque dur de 4 Go à 8 Go. Il faut savoir que le disque ne peut dépasser une taille de 2 To, et qu’il est impossible de le réduire par la suite.
Nous pouvons à présent démarrer la machine virtuelle pour continuer le travail et commencer en utilisant l’outil « fdisk » pour modifier la table des partitions.
fdisk /dev/sda
- p pour afficher la table des partitions
- d et choisir la partition 1 et supprimer
- n, p, 1 pour créer (ici il proposera de prendre tout l’espace disponible, 2x Entrée pour valider le secteur de début et de fin)
- t, 8e changer type (LVM)
- p pour afficher nouvelle table
- w
A nouveau, une redémarrage pour que la machine prenne en compte totalement le changement de taille.
reboot
La commande « pvdisplay » doit pour le moment retourner une taille de 4 Go.
pvdisplay
On va demander à vg0 de prendre la taille de « sda1 ».
pvresize vg0 /dev/sda1
Cette fois, « pvdisplay » doit nous retourner une taille de 8 Go.
pvdisplay
Pour connaitre précisément la taille restante disponible, utilisez la commande suivante et relevez la valeur de la colonne « PFree ».
pvs
On peut maintenant étendre le volume « lv_root » à la taille voulue.
lvextend -L +4G /dev/vg0/lv_root
On demande au système de fichier de « lv_root » de prendre en compte sa nouvelle taille.
resize2fs /dev/vg0/lv_root
Enfin, on vérifie nos changements sur « lv_root ».
lvdisplay