title: Debian LVM2: Utiliser un fichier disque pour étendre un volume logique
description:
published: true
date: 2023-12-15T15:06:07.396Z
tags: linux, lvm2, storage
editor: markdown
dateCreated: 2023-10-16T12:57:35.065Z
Ici, nous allons étendre le volume logique pg-data du groupe de volumes logiques pg en lui ajoutant, non pas un disque dur, mais un fichier de disque de 150Go.
Etape 1: Configurer LVM2
On va d’abord éditer le fichier /etc/lvm/lvm.conf:
# chercher event_activation (commenté) rajouter en dessous:
event_activation = 0
On va ensuite configurer lvm2-activation-generator, dont le but est de générer des unités systemd à la volée pour nos groupes et volumes logiques LVM2:
/lib/systemd/system-generators/lvm2-activation-generator /run/systemd/generator /run/systemd/generator.early /run/systemd/generator.late
Etape 2: préparer notre fichier image disque
mkdir /srv/pgdisk
# ici, 150Go de disque
truncate -s 150G /srv/pgdisk/disk1.img
On va ensuite le connecter à /dev/loop0
losetup /dev/loop0 /srv/pgdisk/disk1.img
lsblk
root@deb-lvmtest:~# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 150G 0 loop
... etc ...
Etape 3: préparer notre unité systemd doloops.service
Cette unité va nous servir à connecter notre disque virtuel à /dev/loop0 automatiquement au démarrage et avant le service lvm2-activation-early.service (service auto-généré par systemd au boot depuis qu’on a modifié la config' lvm2 dans l'étape 1)
[Unit]
Description=Activate loop device
DefaultDependencies=no
After=systemd-udev-settle.service
Before=lvm2-activation-early.service
Wants=systemd-udev-settle.service
[Service]
ExecStart=/sbin/losetup /dev/loop0 /srv/pgdisk/disk1.img
Type=oneshot
[Install]
WantedBy=local-fs.target
Puis on recharge les unités systemd et on active l’unité systemd doloops.service:
systemctl daemon-reload
systemctl enable doloops.service
On ne va pas rebooter, mais nous avons besoin de toutes ces étapes pour s’assurer que notre LVM2 remontera bien correctement au boot.
Etape 4: configuration LVM de notre image disque et ajout au VG et LV:
pvcreate /dev/loop0
pvs
vgextend pg /dev/loop0
vgs
# ici on étend notre VG de 140G, à ajuster en fonction
# ATTENTION: laisser de la place pour un snapshot si on utilise les snapshots lvm pour backup
lvextend -L+140G pg/pg-data
lvs
resize2fs /dev/mapper/pg-pg--data
df -h