Retour : Proxmox VE

Principe

Proxmox déclare des stockages (storages) au niveau du Datacenter : chacun a un nom, un type, et une liste de contenus autorisés. La configuration est commune à tous les nœuds d'un cluster et se trouve dans /etc/pve/storage.cfg.

Contenu Usage
images Disques des VM
rootdir Disques des conteneurs LXC
iso Images ISO d'installation
vztmpl Modèles de conteneurs LXC
backup Sauvegardes (vzdump)
snippets Fichiers annexes (cloud-init, scripts de hook)

Après une installation en ext4, deux stockages existent :

Stockage Type Emplacement Contenus
local Répertoire /var/lib/vz ISO, modèles, sauvegardes
local-lvm LVM-thin volume pve/data Disques des VM et conteneurs

Avec une installation ZFS, local-lvm est remplacé par local-zfs (pool rpool/data).


Types de stockage

Type Niveau Snapshots Partagé Usage typique
Répertoire (Directory) Fichier Avec qcow2 Non ISO, sauvegardes, disque supplémentaire simple
LVM Bloc Non Possible (iSCSI) Disques en provisionnement épais
LVM-thin Bloc Oui Non Disques des VM sur un disque local (défaut)
ZFS Bloc Oui Non (réplication possible) Redondance, compression, intégrité des données
NFS Fichier Avec qcow2 Oui NAS (TrueNAS, Synology), sauvegardes
SMB/CIFS Fichier Avec qcow2 Oui Partage Windows, sauvegardes
iSCSI Bloc Non Oui Baie de stockage, SAN
Ceph RBD / CephFS Bloc / fichier distribué Oui Oui Cluster de 3 nœuds ou plus, stockage hyperconvergé
Proxmox Backup Server Sauvegarde — Oui Sauvegardes dédupliquées (voir Sauvegardes)

💡 Un stockage partagé permet de migrer une VM d'un nœud à l'autre sans copier ses disques, et il est nécessaire à la haute disponibilité.


Ajouter un disque local en LVM-thin

Exemple avec un second disque /dev/sdb, vide.

⚠️ Toutes les données du disque sont effacées. Vérifier son nom avec lsblk avant de commencer.

Via interface graphique
  1. Nœud → Disks : vérifier que le disque apparaît et n'est pas utilisé. Au besoin, Wipe Disk.
  2. Nœud → Disks → LVM-Thin → Create: Thinpool : choisir le disque, nommer le pool (data2), laisser Add Storage coché.
En ligne de commande
lsblk

# Volume physique, groupe de volumes, puis pool thin occupant le disque
pvcreate /dev/sdb
vgcreate vg-data2 /dev/sdb
lvcreate -l 95%FREE --thinpool data2 vg-data2

# Déclarer le stockage dans Proxmox
pvesm add lvmthin data2 --vgname vg-data2 --thinpool data2 --content images,rootdir

Les 5 % laissés libres permettent d'agrandir les métadonnées du pool si nécessaire.


Créer un pool ZFS

Exemple : miroir de deux disques.

💡 Désigner les disques par leur identifiant stable (/dev/disk/by-id/...) plutôt que /dev/sdX, qui peut changer au redémarrage.

Via interface graphique

Nœud → Disks → ZFS → Create: ZFS : nom du pool (tank), niveau RAID Mirror, compression on, ashift 12, sélectionner les deux disques, Add Storage coché.

En ligne de commande
ls -l /dev/disk/by-id/ | grep -v part

zpool create -o ashift=12 -O compression=lz4 tank mirror \
  /dev/disk/by-id/ata-DISQUE1 /dev/disk/by-id/ata-DISQUE2

pvesm add zfspool tank-vm --pool tank --content images,rootdir --sparse 1

Surveiller l'état du pool :

zpool status
zpool list
zfs list
Niveau Disques Pannes tolérées Remarque
Mirror 2 ou plus Tous sauf un Meilleures performances en lecture
RAID10 4 ou plus (paires) Un par paire Meilleur compromis pour les VM
RAIDZ-1 3 ou plus 1 Plus de capacité, écritures plus lentes
RAIDZ-2 4 ou plus 2 Gros disques, données importantes

⚠️ Un pool ZFS rempli au-delà de 80 % ralentit fortement : surveiller l'espace libre.


Ajouter un partage NFS (NAS)

Côté NAS : créer un partage NFS, autoriser l'adresse IP du ou des nœuds Proxmox, avec accès en écriture pour root (option Maproot User = root sur TrueNAS).

Via interface graphique

Datacenter → Storage → Add → NFS :

Champ Exemple
ID nas-nfs
Server 192.168.4.20
Export /mnt/tank/proxmox (liste proposée automatiquement)
Content Disk image, ISO image, VZDump backup file
En ligne de commande
# Exports proposés par le NAS
pvesm scan nfs 192.168.4.20

pvesm add nfs nas-nfs --server 192.168.4.20 --export /mnt/tank/proxmox \
  --content images,iso,backup --options vers=4.2

Le partage est monté sur chaque nœud dans /mnt/pve/nas-nfs.


Ajouter une cible iSCSI

  1. Datacenter → Storage → Add → iSCSI : ID, adresse du portail, cible (target) proposée. Décocher Use LUNs directly.
  2. Datacenter → Storage → Add → LVM : base Existing volume groups → Base storage : la cible iSCSI → choisir la LUN, nommer le groupe de volumes, cocher Shared si plusieurs nœuds y accèdent.
pvesm scan iscsi 192.168.4.20

Disques des VM

Formats

Format Stockages Particularités
raw Tous Le plus performant ; snapshots portés par le stockage (LVM-thin, ZFS, Ceph)
qcow2 Répertoire, NFS, SMB Snapshots et provisionnement fin sur un stockage fichier
vmdk Répertoire, NFS, SMB Compatibilité VMware (import / export)

Réglages recommandés

Option Valeur Effet
Contrôleur (SCSI Controller) VirtIO SCSI single Un contrôleur par disque, permet iothread
Bus du disque SCSI Pilote VirtIO, le plus performant
iothread activé Un fil d'exécution dédié aux E/S de chaque disque
discard activé L'espace libéré dans l'invité (TRIM) est rendu au stockage thin
ssd activé L'invité voit un SSD et adapte son comportement
Cache Default (No cache) Sûr en cas de coupure de courant
qm set 100 --scsihw virtio-scsi-single
qm set 100 --scsi0 local-lvm:vm-100-disk-0,iothread=1,discard=on,ssd=1

Dans un invité Linux, activer le TRIM périodique pour profiter de discard :

systemctl enable --now fstrim.timer

💡 Les invités Windows ont besoin des pilotes VirtIO (ISO virtio-win) pour voir un disque SCSI VirtIO pendant l'installation.

Opérations courantes

# Ajouter un disque de 50 Go à la VM 100
qm set 100 --scsi1 local-lvm:50,iothread=1,discard=on,ssd=1

# Agrandir un disque de 20 Go (puis étendre la partition dans l'invité)
qm disk resize 100 scsi0 +20G

# Déplacer un disque vers un autre stockage (possible VM allumée)
qm disk move 100 scsi0 tank-vm --delete 1

# Importer un disque existant (vmdk, qcow2…) dans la VM 100
qm disk import 100 /chemin/disque.vmdk local-lvm

⚠️ Réduire un disque n'est pas possible depuis Proxmox : toujours agrandir par petites étapes.


Surveiller l'espace

# Occupation de chaque stockage
pvesm status

# Remplissage réel des pools LVM-thin (colonnes Data% et Meta%)
lvs

# Disques d'un stockage
pvesm list local-lvm

⚠️ Un pool thin plein bloque toutes les VM qui écrivent dessus. Garder une marge de 20 à 30 % et configurer une alerte de supervision.


Étape suivante