27/07/2024

Opération sur les objets du LVM

On a déjà vu comment interroger les différentes tables du système concernant les groupes de volumes, les volumes physiques et logiques. On peut maintenant voir dans ce nouveau chapitre comment créer de nouveaux éléments et les modifier (voire les supprimer). Les différentes opérations sont donc :

- la création
- la modification (extension/réduction)
- la suppression
- le déplacement de données

Après avoir effectué la configuration d’une machine à base de LVM, on devra alors créer de nouveaux volumes physiques pour pouvoir les ajouter soit au groupe de volumes existant, soit en créer de nouveaux.

ATTENTION : l’ajout de volumes physiques sur une VM, comme sur un serveur physique d’ailleurs, nécessite l’arrêt de la machine. Aussi, pour ajouter de nouveaux volumes il est conseillé de le prévoir lors de l’initialisation. Dans l’exemple suivant, on va ajouter deux disques supplémentaires : un de 20Gio et un de 25Gio.

Ainsi, lors du redémarrage suivant, on va pouvoir détecter les deux nouvelles partitions grâce à la commande fdisk –l :

#fdisk -l
...

Ce qui donne :

 

I. Opérations de création

En toute logique le système a nommé les deux nouveaux disques /dev/sdb et /dev/sdc. On va pouvoir les intégrer au LVM, en commençant par le niveau voue physique :

# pvcreate /dev/sdb
# pvcreate /dev/sdc

On peut alors initialiser le groupe de volumes vg01 :

# vgcreate vg01 /dev/sdc

REMARQUE : il aurait fallu pour bien faire créer une partition /dev/sdb1 et /dev/sdc1. Mais, pour l’exercice je préfère utiliser directement les disques ajoutés.

On peut alors vérifier les dernières modifications du LVM :

# vgs
 VG #PV #LV #SN Attr VSize VFree
 vg00 2 6 0 wz--n- 119,80g 20,00g
 vg01 1 0 0 wz--n- 25,00g 25,00g

Sur le volume vg01, on va également pouvoir créer le volume logique /soft :

# lvcreate –n lv-soft –l 100%FREE vg01

Si l’on exécute la commande lvs on verra alors le nouveau volume logique lv-soft apparaître en fin de liste et associé à vg01. Pour ce dernier, on va créer également un point de montage /soft et un système de fichiers associé :

# mkdir /soft
# mkfs.fs /dev/vg01/lv-soft

On peut alors assigner un label (une étiquette), à ce nouveau système de fichiers XFS en utilisant la commande d’administration xfs_admin :

# xfs_admin -L soft /dev/vg01/lv-soft

On peut alors modifier le fichier /etc/fstab, pour y ajouter l’enregistrement du nouveau système de fichiers afin que celui-ci soit monté automatiquement lors des redémarrages du système d’exploitation :

LABEL=/soft /soft xfs defaults 0 0

Il ne reste plus alors qu’à monter le nouveau système de fichiers en exécutant la commande :

# mount /dev/vg01/lv-soft /soft

Pour des systèmes de fichiers autres que xfs, de type ext3 ou ext4, la création du système de fichiers utilisaient les commandes suivantes :

# mkdir /soft
# mkfs –t ext4 /dev/vg01/lv-soft
# mount /dev/vg01/lv-soft /soft

En fait, on découvrira très vite que xfs ajoute sa propre couche de commandes d’administration : xfs_admin, xfs_growfs (pour étendre des partitions...)

II. Opérations d’extension (ou de réduction)

On peut alors intégrer le premier volume /dev/sdb dans le groupe vg00 déjà existant :

# vgextend vg00 /dev/sdb
Volume group "vg00" successfully extended

Cette commande ajoute le volume /dev/sdb au groupe de volumes vg00 et on va pouvoir utiliser l’espace disque proposé par le volume physique au groupe de volumes vg00.

Si l’on souhaite étendre la capacité disque de /home (c’est souvent le cas lorsque les utilisateurs se servent de leur répertoire d’accueil comme d’un cloud privé ou d’une baie de stockage), il faut alors étendre le volume logique.

On va donc commencer par modifier la table de partition (comme on l’avait conseillé au début de ce tutoriel), concernant le volume à étendre (ici, /dev/sdb) :

# fdisk /dev/sdb

Il faut alors ajouter le label 8E (type LVM) au périphérique, et faire en sorte de créer la partition /dev/sdb1. Ensuite, il faut ajouter /dev/sdb1 en tant que volume physique au groupe de volumes vg00 :

# pvcreate /dev/sdb1
 # vgextend vg00 /dev/sdb1

On peut alors étendre le volume logique associé au montage /home en exécutant la commande suivante :

# lvextend -l 100%FREE /dev/vg00/home /dev/sdb1

Comme le système de fichiers sous-jacent est de type xfs, on peut ensuite exécuter la commande ci-dessous de modification de la volumétrie allouée au système de fichiers :

# xfs_growfs -d /home

Une simple vérification d’affichage des montages présents sur le système permet de s’assurer que la taille de /home est bien passée de 10Gio à 20Gio :

# df
 ...
 /dev/mapper/vg00-home 20957184 33180 20924004 1% /home

Ce qui est fait dans un sens peut aussi être fait dans l’autre, sans interruption de service : c’est-à-dire la réduction de volumes.

ATTENTION : si l’on réduit un volume, il est conseillé de bien calculer la taille de réduction pour ne pas dépasser l’espace autorisé. Sinon, on se verra dans l’obligation de revenir à l’état initial du LVM en utilisant la commande vgcfgrestore vue précédemment.

Pour des systèmes de fichiers de type ext3 ou ext4, les commandes utilisées sont les suivantes :

# vgextend vg00 /dev/sdb1
 # lvextend –l 100%FREE /dev/vg00/home /dev/sdb1
 # e2fsck –f /dev/vg00/home
 # resize2fs /dev/vg00/home

NOTE : Dans le cas où l’on créé un nouveau volume logique (au lieu d’en étendre un), on est de nouveau dans le cas de figure de la création d’objets, vu précédemment. Cela dépend du besoin applicatif et du contexte.

III. Opérations de suppression

Maintenant, on peut aussi supprimer un groupe de volumes et ses composants, en partant du niveau système de fichiers, puis volumes logiques et en finissant par le ou les volumes physiques.

Ainsi, pour supprimer le montage /soft, et le groupe vg01, on procèdera de la façon suivante :

# umount /soft
# rmdir /soft
# lvremove vg01 lv-soft
# vgremove vg01
# pvremove /dev/sdc

REMARQUE : on peut également en profiter pour supprimer l’enregistrement du fichier /etc/fstab que l’on aurait inséré précédemment. A noter également que dans le cas de machines virtuelles VMware, lorsque l’on ajoute des disques virtuels, ceux-ci peuvent être découverts automatiquement (sans avoir à redémarrer la machine), contrairement à VirtualBox.

IV. Opérations de déplacement de données

Une commande très pratique est celle de pvmove. En effet, grâce à elle il devient possible de déplacer les segments physiques alloués d’un disque à un autre. Lorsque l’on dispose d’assez d’espace sur d’autres disques du même groupe de volumes, on peut alors exécuter la commande suivante :

# pvmove /dev/sdc

On peut bien évidemment déplacer uniquement les extensions d’un volume logique particulier :

# pvmove –n lv-soft /dev/sdc1

De même, si l’on souhaite déplacer les données d’un volume physique à un autre, on peut exécuter en mode arrière-plan la commande suivante :

# pvmove –b /dev/sdc1 /dev/sdh1

ATTENTION : ce genre de commande peut prendre du temps selon la volumétrie déplacée. Si l’on souhaite visualiser la progression (sous forme de pourcentage), d’une telle commande, il faut utiliser l’option –i en mentionnant l’espace d’intervalle entre chaque prise de mesure :

# pvmove –i5 /dev/sdc1 /dev/sdh1

Ceci peut être très pratique lorsque l’on souhaite changer un disque défectueux ou un volume particulier. Il suffit alors de s’appuyer sur les mécanismes du LVM pour déplacer les données du disque source vers le disque cible de remplacement.

author avatar
Philippe PIERRE
A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail