lid's Wiki

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