Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 415 minIntermédiaire

Le stockage dans Proxmox : local, LVM-thin, ZFS, NFS et iSCSI

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • distinguer les formats de disques virtuels et l'allocation fixe ou dynamique ;
  • choisir un type de stockage selon les snapshots et le partage entre nœuds ;
  • créer un pool ZFS et lire son état ;
  • déclarer un partage NFS ou un volume iSCSI d'un NAS TrueNAS.

4 exercices corrigés1 schéma

Dans Proxmox VE, un stockage est un emplacement déclaré au niveau du centre de données où l'hyperviseur range les disques des VM, les images ISO, les modèles de conteneurs ou les sauvegardes : un dossier local, un pool LVM ou ZFS, un partage NFS, un volume iSCSI. Le choix du stockage décide de ce que tu pourras faire ensuite : snapshots, migration à chaud, haute disponibilité. Ce chapitre explique les formats de disques virtuels, les stockages locaux, puis le stockage partagé sur un NAS TrueNAS, et donne une méthode pour choisir.

Ce qu'est un disque virtuel

Le disque d'une VM est, côté hôte, un fichier ou un volume :

FormatNaturePoints clés
rawFichier ou volume brut, octet pour octetLe plus rapide et le plus simple ; pas de snapshot sur un stockage de type fichier
qcow2Fichier au format de QEMUSnapshots, allocation à la demande, sur un stockage de type fichier (dossier, NFS)
vmdkFormat de VMwareLisible par Proxmox pour importer une VM, déconseillé en usage courant
Volume (LVM, zvol ZFS, RBD Ceph)Bloc géré par le stockageLe stockage gère lui-même l'allocation et les snapshots

Deux façons d'allouer l'espace coexistent :

  • l'allocation fixe (thick provisioning) réserve tout l'espace à la création : un disque de 100 Go occupe 100 Go, même vide ;
  • l'allocation dynamique (thin provisioning) n'occupe que ce qui est écrit : le même disque, avec 12 Go de données, occupe 12 Go.

L'allocation dynamique permet de surallouer : promettre aux VM plus d'espace que le stockage n'en a réellement, en pariant qu'elles ne se rempliront pas toutes. C'est pratique et courant, mais dangereux : si le stockage se remplit vraiment, les VM qui écrivent se figent ou corrompent leurs données. Un stockage suralloué se surveille (chapitre 12).

Les types de contenu

Un stockage déclare ce qu'il accepte. Les types de contenu de Proxmox VE :

ContenuNom dans l'interfaceCe que c'est
imagesDisk imageLes disques des VM
rootdirContainerLes disques des conteneurs
isoISO imageLes images d'installation
vztmplContainer templateLes modèles de conteneurs
backupVZDump backup fileLes sauvegardes faites par vzdump
snippetsSnippetsFichiers annexes : scripts d'accroche, configurations cloud-init personnalisées
importImportFichiers OVA ou disques à importer dans une VM

Les types de stockage

Proxmox VE gère une quinzaine de types de stockage. Ceux que tu croiseras :

TypeNiveauPartagé entre nœudsSnapshotsUsage typique
Dossier (Directory)FichierNonAvec qcow2ISO, modèles, sauvegardes locales
LVMBlocPossible, sur un LUN iSCSI ou Fibre ChannelDepuis Proxmox VE 9, en chaîne de volumes (aperçu technologique)Stockage partagé en mode bloc
LVM-thinBlocNonOuiDisques des VM sur un hôte isolé
ZFS (local)Fichier et blocNonOuiDisques des VM, avec réplication possible entre nœuds
NFS, CIFS (SMB)FichierOuiAvec qcow2Stockage partagé sur un NAS
iSCSIBlocOuiNon par lui-mêmeUn LUN d'une baie ou d'un NAS, sur lequel on pose LVM
Ceph RBDBlocOuiOuiStockage distribué hyperconvergé
ZFS over iSCSIBlocOuiOuiUn pool ZFS distant piloté par Proxmox
Proxmox Backup ServerLes deuxOuiSans objetLes sauvegardes (chapitre 9)

Les stockages créés à l'installation

Après une installation en ext4 sur un disque, l'hôte a deux stockages :

  • local : le dossier /var/lib/vz, pour les ISO, les modèles de conteneurs et les sauvegardes ;
  • local-lvm : le pool LVM-thin data du groupe de volumes pve, pour les disques des VM et des conteneurs.

Après une installation en ZFS, local-lvm est remplacé par local-zfs, le jeu de données rpool/data. Tous les stockages sont décrits dans un seul fichier, /etc/pve/storage.cfg, commun à tout le cluster :

text
dir: local
        path /var/lib/vz
        content iso,vztmpl,backup

lvmthin: local-lvm
        thinpool data
        vgname pve
        content rootdir,images

Pour voir l'état de tous les stockages, leur taille et leur remplissage :

bash
pvesm status

Sur LVM-thin, regarde aussi le remplissage du pool et de ses métadonnées : lvs affiche les colonnes Data% et Meta% du volume data. Si l'une approche 100 %, les VM vont souffrir.

ZFS : le stockage local avec intégrité et snapshots

ZFS est à la fois un gestionnaire de volumes et un système de fichiers. Il assemble des disques en pool, organisé en groupes redondants (vdev) : un miroir (deux disques ou plus, comme un RAID 1), un RAIDZ-1 (une parité, comme un RAID 5), un RAIDZ-2 (deux parités, comme un RAID 6). Ce qu'il apporte en plus d'un RAID classique :

  • une somme de contrôle sur chaque bloc : ZFS détecte une donnée corrompue et la répare depuis la copie saine du miroir. Une vérification complète, le scrub, est planifiée chaque mois par Proxmox ;
  • la compression à la volée (lz4 par défaut sur Proxmox), qui fait souvent gagner de la place et du temps ;
  • des snapshots instantanés, et la réplication d'une VM vers un autre nœud par envoi des seuls blocs modifiés (chapitre 10).

ZFS a un coût : il utilise la mémoire comme cache de lecture, l'ARC. Sur une installation récente, Proxmox limite l'ARC à 10 % de la mémoire de l'hôte, au plus 16 Gio ; la règle de dimensionnement de l'éditeur est d'environ 1 Go de mémoire par To de stockage ZFS.

Pour créer un pool sur des disques vides : sélectionne le nœud, Disks > ZFS > Create: ZFS, donne un nom, choisis le niveau de RAID (Mirror, RAIDZ…), coche les disques, laisse cochée l'option Add Storage. Puis vérifie en ligne de commande :

bash
zpool status        # état du pool et de chaque disque, erreurs, dernier scrub
zpool list          # taille, espace occupé, fragmentation
zfs list            # jeux de données et volumes (un zvol par disque de VM)

Le stockage partagé sur un NAS TrueNAS

Pour que les VM puissent passer d'un hôte à l'autre sans copier leurs disques, et redémarrer ailleurs si leur hôte tombe, leurs disques doivent être sur un stockage partagé, vu par tous les nœuds. Chez Sorbier, c'est un NAS TrueNAS Community Edition (version 25.10, la gamme autrefois appelée TrueNAS SCALE), nommé truenas, branché sur un réseau réservé au stockage : le VLAN 80, 192.168.10.240/28, non routé. TrueNAS a l'adresse 192.168.10.241 ; les trois hôtes .242, .243 et .244. La configuration de TrueNAS lui-même (pools, jeux de données, partages, instantanés) relève du cours Stockage et NAS avec TrueNAS, qui prépare le partage NFS pour Proxmox VE et la cible iSCSI ; on regarde ici le côté Proxmox.

pve1système : ZFS en miroirstockage .242pve2système : ZFS en miroirstockage .243pve3système : ZFS en miroirstockage .244VLAN 80non routésauvegardesTrueNAS192.168.10.241NFS : disques des VMiSCSI possibleProxmox Backup Server192.168.10.245TCP 8007machine séparée✕ point unique de défaillance
Stockage local pour le système, stockage partagé sur TrueNAS pour les disques des VM, sauvegardes sur un serveur à part

Deux protocoles sont possibles :

NFS (partage de fichiers)iSCSI (disque en mode bloc)
Ce que voit ProxmoxUn dossier réseau, où chaque disque de VM est un fichierUn disque brut (un LUN), sur lequel on pose LVM
Format des disquesqcow2 (ou raw)Volumes LVM
Snapshots de VMOui, avec qcow2Seulement avec l'option des chaînes de volumes de Proxmox VE 9 (aperçu technologique)
Mise en placeSimplePlus technique (cible, initiateur, LVM, éventuellement multipath)
Côté TrueNASUn jeu de données et un partage NFSUn zvol, une cible et une extension iSCSI
Pour quiLa plupart des PME et des laboratoiresLes besoins de performances en bloc, les habitués des baies SAN

Déclarer le partage NFS. Côté TrueNAS, le jeu de données tank/proxmox est partagé en NFS, avec l'accès limité au réseau 192.168.10.240/28 et l'option Maproot User réglée sur root (Proxmox écrit les fichiers des VM en tant que root : c'est l'équivalent de l'option no_root_squash d'un serveur NFS Linux). Côté Proxmox, dans Datacenter > Storage > Add > NFS :

ChampValeur
IDtruenas-nfs
Server192.168.10.241
Export/mnt/tank/proxmox (la liste se remplit si le serveur répond)
ContentDisk image, ISO image, Container
NodesAll

La même opération en ligne de commande :

bash
pvesm add nfs truenas-nfs --server 192.168.10.241 --export /mnt/tank/proxmox \
  --content images,iso,rootdir
pvesm status

Proxmox monte le partage sur chaque nœud dans /mnt/pve/truenas-nfs.

Déclarer un volume iSCSI. Côté TrueNAS, un zvol est présenté par une cible iSCSI. Côté Proxmox :

  1. Datacenter > Storage > Add > iSCSI : ID truenas-iscsi, Portal 192.168.10.241, Target choisie dans la liste. Décoche Use LUNs directly : on ne met pas les VM directement sur le LUN.
  2. Datacenter > Storage > Add > LVM : ID truenas-lvm, Base storage truenas-iscsi, Base volume le LUN, Volume group vg_truenas, coche Shared : tous les nœuds verront le même groupe de volumes, et Proxmox se charge qu'un seul nœud utilise un volume à la fois.

Ceph, le stockage distribué

Ceph répartit les données sur les disques de tous les nœuds du cluster, avec trois copies de chaque bloc par défaut : il n'y a plus de NAS central, chaque nœud est à la fois serveur de calcul et de stockage. C'est l'hyperconvergence. Proxmox VE installe et administre Ceph depuis son interface (Node > Ceph). Il faut au moins trois nœuds, plusieurs disques par nœud, un réseau dédié rapide (10 Gbit/s au minimum, 25 Gbit/s recommandés) et de la mémoire. Pour une PME de la taille de Sorbier, un NAS bien protégé et des sauvegardes solides suffisent souvent ; Ceph se justifie quand la disponibilité du stockage doit être aussi élevée que celle des hôtes.

Choisir et déplacer un stockage

BesoinStockage conseillé
Un hôte isolé, un laboratoirelocal-lvm ou local-zfs
Un hôte isolé dont les données comptentZFS en miroir
Deux ou trois nœuds, migration à chaud, haute disponibilitéNFS sur un NAS (ou iSCSI), ou réplication ZFS si on accepte de perdre quelques minutes de données
Trois nœuds ou plus, sans point unique de défaillanceCeph
Les ISO et les modèlesUn stockage partagé (NFS) pour ne pas les copier sur chaque nœud
Les sauvegardesProxmox Backup Server, sur une autre machine que les VM

Un disque se déplace d'un stockage à l'autre sans arrêter la VM : sélectionne la VM, Hardware, le disque, puis Disk Action > Move Storage. En ligne de commande : qm disk move 179 scsi0 truenas-nfs. C'est ainsi qu'on vide un stockage avant une maintenance.

Exercices

Exercice 1 sur 4 Surallocation Réussi À revoir

Le pool LVM-thin data de pve1 fait 800 Go. On y a créé six VM avec des disques de 200 Go chacun, qui contiennent en tout 380 Go de données.

  1. Quel espace a été promis aux VM ? Quel est le taux de surallocation ?
  2. Quel est le taux de remplissage réel du pool ?
  3. Que se passe-t-il si les VM écrivent encore 450 Go ?
Voir la réponseMasquer la réponse de l'exercice 1
  1. 6 × 200 = 1 200 Go promis, pour 800 Go réels : taux de surallocation 1 200 / 800 = 1,5 (150 %).
  2. 380 / 800 = 47,5 %.
  3. 380 + 450 = 830 Go, plus que les 800 Go du pool : le pool est plein avant la fin des écritures. Les VM reçoivent des erreurs d'écriture, se figent ou abîment leurs systèmes de fichiers. Il fallait une alerte (à 80 %, soit 640 Go) et agrandir le pool ou déplacer des disques avant.

Tu avais trouvé ?

Exercice 2 sur 4 Lire storage.cfg Réussi À revoir

Voici un extrait du fichier /etc/pve/storage.cfg du cluster de Sorbier.

text
dir: local
        path /var/lib/vz
        content iso,vztmpl,backup

zfspool: local-zfs
        pool rpool/data
        sparse
        content images,rootdir

nfs: truenas-nfs
        export /mnt/tank/proxmox
        path /mnt/pve/truenas-nfs
        server 192.168.10.241
        content images,iso,rootdir
  1. Sur quel stockage faut-il mettre le disque de srv-gestion pour pouvoir la migrer à chaud sans copier son disque ?
  2. Où ranger l'ISO de Windows Server 2025 pour qu'elle soit disponible sur les trois nœuds sans la copier trois fois ?
  3. Que signifie la ligne sparse ?
Voir la réponseMasquer la réponse de l'exercice 2
  1. Sur truenas-nfs, le seul stockage partagé : les trois nœuds voient le même fichier de disque.
  2. Sur truenas-nfs aussi, qui accepte le contenu iso. Sur local, il faudrait la copier sur chaque nœud.
  3. Les volumes ZFS sont créés en allocation dynamique : un disque de 100 Go n'occupe que ce qui est réellement écrit.

Tu avais trouvé ?

Exercice 3 sur 4 Quel stockage pour quel besoin ? Réussi À revoir

Pour chaque situation, choisis le stockage et justifie.

  1. Un TP sur un seul vieux PC, avec un seul disque.
  2. Le cluster de Sorbier : les VM doivent redémarrer automatiquement sur un autre nœud si le leur tombe.
  3. Une agence avec deux nœuds et pas de NAS, qui accepte de perdre au plus 15 minutes de données en cas de panne d'un nœud.
Voir la réponseMasquer la réponse de l'exercice 3
  1. local-lvm (ou local-zfs) : rien à partager, un seul hôte.
  2. Un stockage partagé, ici le NFS de TrueNAS (truenas-nfs), ou Ceph : la haute disponibilité exige que le nœud qui reprend la VM trouve son disque.
  3. ZFS local sur chaque nœud, avec réplication toutes les 15 minutes vers l'autre nœud : en cas de panne, la VM redémarre sur la dernière copie répliquée, avec au plus 15 minutes de données perdues. Il faudra aussi un troisième vote pour le quorum (QDevice, chapitre 10).

Tu avais trouvé ?

Exercice 4 sur 4 Snapshot impossible Réussi À revoir

Un technicien veut prendre un snapshot de la VM 225 avant une mise à jour. Le bouton Take Snapshot est grisé. La VM a un seul disque, local:225/vm-225-disk-0.raw. Explique pourquoi et propose deux solutions.

Voir la réponseMasquer la réponse de l'exercice 4

Le disque est un fichier raw sur un stockage de type dossier (local) : ce couple ne gère pas les snapshots. Solutions, avec Disk Action > Move Storage, éventuellement VM allumée : déplacer le disque vers un stockage en mode bloc qui gère les snapshots (local-lvm ou local-zfs) ; ou le déplacer vers le stockage NFS en choisissant le format qcow2 dans la fenêtre Move Storage. En attendant, une sauvegarde avec vzdump reste possible avant la mise à jour.

Tu avais trouvé ?

Chapitre terminé !

Fais les 4 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Réseau virtuel Proxmox : bridge Linux, VLAN et SDNRevoir le sommaire du cours