Créer des volumes logiques sur Proxmox VE

Guide pour créer des volumes logiques sur Proxmox VE

Créer des volumes logiques sur Proxmox VE

Au sommaire :

  • 1-Qu'est-ce que LVM ?
  • 3-Initialiser le disque physique
  • 4-Créer un groupe de volumes
  • 5-Créer des volumes
  • 6-Étendre le volume
  • 7-Ajouter des disques physiques supplémentaires
  • 8-Ajouter un volume LVM-Thin

1-Qu'est-ce que LVM ?

LVM (Logical Volume Manager) est un gestionnaire de volumes logiques pour Linux qui apporte une couche d’abstraction entre le système et le(s) disque(s) physique(s) et vous permet de créer des volumes logiques.

Avec LVM, vous allez pouvoir :

  • Créer plusieurs volumes logiques au sein d'un groupe (pool) composés d'un ou plusieurs disques physiques
  • Agrandir l'espace de stockage du groupe en ajoutant des disques physiques
  • Formater ces volumes en différents format (NTFS, ext4, xfs, etc) et les rendre accessibles aux machines virtuelles ou au système hôte
  • Réduire ou agrandir sans reformater ou endommager le système de fichiers

C'est ni plus, ni moins que la virtualisation appliqué aux supports de stockage (Software Defined Storage ou SDS). Comme vous pouvez créer des machines virtuelles à partir d'une machine physique, vous allez pouvoir créer de multiples volumes logiques avec un disque physique.

Pour plus d'informations.

lvm [Wiki ubuntu-fr]

2-Initialiser le disque physique

La création d'un volume logique s'effectue en 3 étapes :

  • On initialise le disque physique (pvcreate)
  • On créer un groupe (vgcreate)
  • On créé des volumes logiques à partir de ce groupe (lvcreate) qu'on pourra ensuite formater

On va prendre mon cas personnel pour les besoins du tutoriel. J'ai un Dell Optiplex 7020 SFF (16 Go de RAM, Xeon E3-1245l v3) qui dispose de 2 disques :

  • sda : un SSD 240 Go qui est le disque principal de Proxmox VE avec les habituelles partitions swap, root (formaté en ext4) et le volume LVM-Thin qui sert à stocker les machines virtuelles et les conteneurs
  • sdb : un disque dur 3.5 de 1 To

Le disque dur 1 To était exclusivement alloué à ma machine virtuelle Windows 11 (ReviOS) pour stocker les jeux de mes différentes applications (Steam, Epic, Uplay, GOG, EA).

J'avais simplement à taper cette commande pour effectuer un passthrough de ce dernier pour qu'il soit vu exclusivement par Windows.

qm set 101 -scsi2 /dev/disk/by-id/ata-WDC_WD10EZEX-08M2NA0_WD-WCC3FCRE9AV4-part1

Sauf que j'ai aussi envie que mes autres machines virtuelles puissent accéder à ce disque dur simultanément.

La création de volumes logiques est donc parfaite pour ce cas d'usage.

Je vais d'abord initialiser le disque physique et localiser ce dernier avec la commande "lsblk".

On vois bien un disque qui fait à peu près 1 To mais pour en être sûr, mieux vaut taper la commande suivante.

ls -l /dev/disk/by-id

Et là je peux être certain que je vais formater le disque dur Western Digital 1 To.

J'ai le choix entre deux commande pour initialiser le disque.

pvcreate /dev/sdb

ou

pvcreate /dev/disk/by-id/ata-WDC_WD10EZEX-08M2NA0_WD-WCC3FCRE9AV4

Avec la commande "pvs", je vois que le disque est bien initialisé au format "lvm2".

3-Créer un groupe de volumes

Ensuite, je vais créer un groupe de volumes que je vais nommé simplement "storage".

vgcreate storage /dev/sdb

Si je tape la commande "vgs", je trouve bien le groupe "storage" dans la liste.

4-Créer des volumes logiques

Enfin, je vais créer deux volumes logiques que je vais nommer :

  • ubuntu (volume logique de 100 Go pour Ubuntu 24.04 LTS)
  • revios (volume logique de 200 Go pour Windows 11 ReviOS)
lvcreate -L 200G storage revios
lvcreate -L 100G storage ubuntu

Enfin, j'ajoute ces volumes logiques avec la commande "qm set" à mes machines virtuelles.

Si je tape la commande "vgs", je constate qu'il me reste encore 631,51 Go.

Ensuite, il va falloir formater les deux volumes logiques.

Pour le disque "ubuntu", je tape la commande suivante.

mkfs.ext4 /dev/storage/ubuntu

Si je lance Ubuntu, le disque y apparait bien.

Voir le tutoriel suivant pour monter le volume logique au démarrage de Linux.

Ajouter des disques SATA et USB sur Proxmox VE
Tutoriel pour ajouter des périphériques de stockage USB et SATA sur Proxmox VE

Pour le disque "revios", j'installe le paquet "ntfs-3g".

apt install ntfs-3g

Puis je le formate avec la commande suivante.

mkfs.ntfs -Q /dev/storage/revios

Note : le disque apparaît pas comme formaté sur Windows donc je vais devoir le faire manuellement via la commande "diskpart" ou le gestionnaire de disques.

5-Étendre le volume logique

Si je veux étendre le volume logique (passer de 200 à 250 Go pour le disque revios), je dois effectuer le calcul suivant : 250/931*100=27%

Je vais indiquer avec la commande "lvresize" que je souhaite étendre à 27% du volume du disque dur (931 Go), soit 250 Go environs, ce qui va ajouter 50 Go supplémentaire au volule logique "revios".

lvresize --extents 27%VG storage/revios

Note : si vous étendez le volume pendant que la machine virtuelle est en activité, il vous faudra la redémarrer pour que le volume supplémentaire soit visible.

SI je met moins que la taille du disque, j'aurai un joli message d'avertissement.

Il me faudra étendre manuellement le disque sur Windows pour que ce soit effectif.

Pour le volume logique "ubuntu", c'est plus facile. Pour ne pas endommager le système de fichiers, je vais indiquer "--resizefs" (resise filesystem) et indiquer la nouvelle taille du volume logique.

lvresize --resizefs --size 150G storage/ubuntu

Nul besoin d'intervention manuelle, le disque a été redimensionné à la volée contrairement à celui de Windows.

6-Ajouter des disques supplémentaires

Si j'ai envie d'ajouter un deuxième disque physique à mon serveur PVE (/dev/sdc par exemple) et que je veux l'ajouter au groupe de volumes "storage", je lance la commande suivante.

vgextend storage /dev/disk/sdc

Mais l'ajout de multiples disques physiques à un pool ne prémunit pas contre la perte de données (RAID obligatoire).

7-Ajouter un volume LVM-Thin

On peut également créer un volume LVM-Thin (pour thin-provisionning) qui est notamment utilisé par PVE pour le stockage des machines virtuelles et des conteneurs.

L'avantage du LVM-Thin c'est qu'en plus de supporter les snapshot et le clonage, le stockage est alloué de manière dynamique (et non fixe).

Par exemple, au lieu qu'une machine virtuelle monopolise 50 Go, le disque reflétera sa taille réelle à l'instant T (uniquement les fichiers écris, pas la taille alloué au départ).

Pour ajouter un volume LVM-Thin :

  • Suivre les étapes 3 à 5
  • Utilisez de préférence un SSD pour le stockage des machines virtuelles et des conteneurs (sur un disque dur, c'est beaucoup trop lent)

Pour créer un volume LVM-Thin de 100 Go nommé "homelab", je tape la commande suivante.

lvcreate --thin -L 100G storage/homelab

Pour l'ajouter, je vais dans Datacenter\Storage\LVM-Thin.

  • ID : indiquer un nom au volume LVM-Thin
  • Volume group : le groupe "storage" que j'ai créé précédemment
  • Thin Pool : le groupe "homelab" que j'ai également créé

Et on vois bien le volume en thin provisionning apparaître dans la liste.