| name | sysadmin-lvm |
| description | Gestion avancée de LVM2 : volumes physiques, groupes de volumes, volumes logiques, thin provisioning, snapshots, migration, cache, RAIDs logiciels LVM et dépannage. |
| version | 1.0.0 |
| author | EVA |
| license | Privée EVA St-Étienne |
| platforms | ["linux"] |
| metadata | {"EVA":{"tags":["lvm","storage","logical-volume","filesystem","disk","partitioning","pv","vg","lv","thin-provisioning","snapshot"],"related_skills":["os-linux-admin","sysadmin-backup-strategies","sysadmin-kernel-tuning"]}} |
Gestion Avancée LVM2 (Logical Volume Manager)
Vue d'ensemble
LVM2 permet une gestion flexible et dynamique du stockage sur Linux, en abstraction au-dessus des disques physiques. Contrairement au partitionnement traditionnel, LVM permet d'étendre, réduire, migrer et snapshoter des volumes à chaud sans démontage.
Concepts clés :
- PV (Physical Volume) : disque ou partition brute initialisée pour LVM
- VG (Volume Group) : pool de stockage agrégeant un ou plusieurs PV
- LV (Logical Volume) : volume logique découpé dans le VG, utilisé comme un bloc device (
/dev/vg_name/lv_name)
- PE (Physical Extent) : unité d'allocation (4 MiB par défaut)
Quand l'utiliser
- Créer ou étendre des systèmes de fichiers sans partitionnement
- Mettre en place du thin provisioning pour des environnements virtualisés
- Faire des snapshots rapides avant des opérations risquées (mise à jour, upgrade)
- Migrer des données entre disques à chaud (remplacement de disque défaillant)
- Monter des caches LVM sur SSD pour accélérer un volume sur HDD
Commandes Essentielles
Création et Découverte
sudo pvcreate /dev/sdb /dev/sdc
sudo pvs
sudo pvdisplay
sudo vgcreate vg_data /dev/sdb /dev/sdc
sudo vgs
sudo vgdisplay
sudo lvcreate -L 100G -n lv_projects vg_data
sudo mkfs.ext4 /dev/vg_data/lv_projects
sudo mount /dev/vg_data/lv_projects /mnt/projects
Extension et Réduction
sudo lvextend -L +50G /dev/vg_data/lv_projects
sudo lvextend -L 200G /dev/vg_data/lv_projects
sudo resize2fs /dev/vg_data/lv_projects
sudo xfs_growfs /mnt/projects
sudo pvcreate /dev/sdd
sudo vgextend vg_data /dev/sdd
sudo lvextend -L +200G /dev/vg_data/lv_projects
sudo resize2fs /dev/vg_data/lv_projects
Réduction (ext4 uniquement — démonter d'abord)
sudo umount /mnt/projects
sudo e2fsck -f /dev/vg_data/lv_projects
sudo resize2fs /dev/vg_data/lv_projects 80G
sudo lvreduce -L 80G /dev/vg_data/lv_projects
sudo mount /dev/vg_data/lv_projects /mnt/projects
Attention : XFS ne peut PAS être réduit. Pour réduire un LV XFS, il faut sauvegarder, recréer et restaurer.
Thin Provisioning
Permet de sur-allouer de l'espace (overcommitment) :
sudo lvcreate -L 500G -T vg_data/thin_pool
sudo lvcreate -V 1T -T vg_data/thin_pool -n lv_thin_vm1
sudo mkfs.ext4 /dev/vg_data/lv_thin_vm1
sudo lvs -a -o+discards,chunksize,size,data_percent,metadata_percent
⚠️ Surveiller le data_percent ! Si le pool thin est plein (100%), tous les volumes thin deviennent inaccessibles. Mettre en place une alerte à 80%.
Snapshots
Les snapshots LVM sont des copies quasi-instanées (redirect-on-write) :
sudo lvcreate -s -n lv_projects_snap -L 20G /dev/vg_data/lv_projects
sudo lvconvert --merge /dev/vg_data/lv_projects_snap
sudo lvremove /dev/vg_data/lv_projects_snap
Pour un snapshot cohérent au niveau fichier, figer le FS avec fsfreeze -f /mount/point avant, puis dégeler avec fsfreeze -u /mount/point.
Migration à Chaud (Pvmove)
sudo pvmove /dev/sdb /dev/sdd
sudo vgreduce vg_data /dev/sdb
sudo pvremove /dev/sdb
Cache LVM (HDD + SSD)
sudo lvcreate -L 50G -n lv_cache vg_data /dev/sdf
sudo lvcreate -L 8G -n lv_cache_meta vg_data /dev/sdf
sudo lvconvert --type cache --cachepool vg_data/lv_cache \
--cachemode writethrough /dev/vg_data/lv_projects
sudo lvs -a -o+policy,cache_settings,cache_mode
RAID Logiciel LVM
sudo lvcreate --type raid1 -L 200G -n lv_mirror vg_data
sudo lvcreate --type raid5 -L 500G -n lv_raid5 vg_data
sudo lvcreate --type raid6 -L 500G -n lv_raid6 vg_data
sudo lvs -a -o+raid_sync_action,raid_mismatch_count,sync_percent
Dépannage (Troubleshooting)
LV manquant au boot (LVM non activé)
sudo vgchange -ay
sudo lvscan
PV manquant ou perdu (disque remplacé)
sudo vgreduce --removemissing vg_data
sudo pvcreate /dev/sdc -u <UUID_original> --restorefile /etc/lvm/backup/vg_data
sudo vgcfgrestore vg_data
Métadonnées corrompues
sudo vgcfgrestore -f /etc/lvm/archive/vg_data_00000.vg vg_data
Pièges Courants
-
Snapshot plein : Un snapshot LVM devient inaccessible quand il est plein. Surveiller avec lvs -o+snap_percent. Supprimer et recréer dès qu'il dépasse 80%.
-
Thin pool full : Irrécupérable sans ajout d'espace au pool. Ne jamais sur-allouer sans monitoring, ou configurer dm-thin-pool avec auto-extension :
# /etc/lvm/lvm.conf
thin_pool_autoextend_threshold = 75
thin_pool_autoextend_percent = 20
-
LVREDUCE XFS impossible : Vérifier le type de FS avant toute réduction. Sur XFS, seule l'extension est possible à chaud.
-
pvcreate efface les données : pvcreate écrit un label LVM sur le disque, détruisant la table de partitions. Vérifier que le disque ne contient pas de données importantes avant.
Liste de vérification (Checklist)