À propos de la gestion des volumes logiques (LVM)

LVM gère les disques durs. Il permet que de multiples disques et partitions soient combinés dans de gros groupes de volumes, assiste la création de sauvegardes au travers de snapshot, et permet le redimensionnement dynamique des volumes. Il peut également fournir une fonction de miroir similaire à une grappe de RAID 1.

Une présentation complète de LVM est au-delà de la portée de cette introduction, mais les concepts de base sont présentés ci-dessous.

Pour exécuter chacune des commandes présentées ici, le paquet LVM2-2.03.22 doit être installé. Toutes les commandes doivent être lancées en tant qu'utilisateur root.

La gestion des disques avec LVM est accomplie en utilisant les concepts suivants :

volumes physiques

Il y a des disques ou des partitions physiques comme /dev/sda3 ou /dev/sdb.

groupes de volumes

On appelle groupes de volumes physiques ce qui peut être manipulé par l'administrateur. Le nombre de volumes physiques qui constituent un groupe de volumes est arbitraire. Les volumes physiques peuvent être dynamiquement ajoutés ou supprimés à partir d'un groupe de volumes.

volumes logique

Les groupes de volume peuvent être divisés en volumes logiques. Chaque volume logique peut être ainsi formaté individuellement comme s'il s'agissait d'une partition Linux normal. Les volumes logiques peuvent être redimensionné dynamiquement par l'administrateur en fonction des besoins.

Pour donner un exemple concret, supposez que vous ayez deux disques de 2 To. Supposons également qu'une grande quantité d'espace est nécessaire pour une très grosse base de données, montée sur /srv/mysql. Voilà à quoi rassemblerait l'ensemble des initialisations des partitions :

Partition  Use    Size      Partition Type
/dev/sda1  /boot  100MB     83 (Linux)
/dev/sda2  /       10GB     83 (Linux)
/dev/sda3  swap     2GB     82 (Swap)
/dev/sda4  LVM    remainder 8e (LVM)
/dev/sdb1  swap     2GB     82 (Swap)
/dev/sdb2  LVM    remainder 8e (LVM)

En premier initialisez les volumes physiques :

pvcreate /dev/sda4 /dev/sdb2
[Note]

Note

On peut utiliser un disque complet comme partie d'un volume physique, mais soyez conscient que la commande pvcreate va détruire les informations sur les partitions de ce disque.

Ensuite créez un groupe de volume appelé lfs-lvm:

vgcreate lfs-lvm /dev/sda4  /dev/sdb2

L'état du groupe de volumes peut être vérifié en exécutant la commande vgscan. Maintenant créez les volumes logiques. Comme il y a environ 3900 Go d'espace disponible, laissez environ 900 Go d'espace libre pour l'expansion. Notez que le volume logique appelé mysql est plus grand que chacun des disques physiques.

lvcreate --name mysql --size 2500G lfs-lvm
lvcreate --name home  --size  500G lfs-lvm

Finalement les volumes logiques peuvent être formatés et montés. Dans cet exemple, Le système de fichier jfs (jfsutils-1.1.15) est utilisé pour la démonstration.

mkfs -t ext4 /dev/lfs-lvm/home
mkfs -t jfs  /dev/lfs-lvm/mysql
mount /dev/lfs-lvm/home /home
mkdir -p /srv/mysql
mount /dev/lfs-lvm/mysql /srv/mysql

Il peut être nécessaire d'activer ces volumes logique pour qu'ils apparaissent dans /dev. Vous pouvez tous les activer en même temps en lançant, en tant qu'utilisateur root :

vgchange -a y

Un volume logique LVM peut accueillir un système de fichier racine, mais nécessite l'utilisation d'un initramfs (initial RAM file system). L'initramfs proposé dans la section intitulée « À propos de initramfs » permet de passer le volume lvm dans le paramètre root= de la ligne de commande du noyau.

Si vous n'utilisez pas un initramfs, cela engendre une situation de compétition dans systemd qui empêche le montage des volumes logiques avec /etc/fstab. Vous devez créer une unité « mount » (voir systemd.mount(5)) comme dans l'exemple suivant, qui monte le répertoire /home automatiquement au démarrage :

cat > /etc/systemd/system/home.mount << EOF
[Unit]
Description=Mount the lvm volume /dev/lfs-lvm/home to /home

[Mount]
What=/dev/lfs-lvm/home
Where=/home
Type=ext4
Options=default

[Install]
WantedBy=multi-user.target
EOF
[Note]

Note

Le nom de l'unité doit être le nom du point de montage avec le caractère « / » remplacé par le caractère « - », en omettant le premier.

Ensuite l'unité doit être activée avec :

systemctl enable home.mount

Pour plus d'information sur LVM, voir le LVM HOWTO et les pages de manuel de lvm. Un bon guide en profondeur se trouve chez RedHat®, même s'il fait parfois référence à des outils non libres.