Proxmox Best Practice Partie 2 – Stockage: LVM-Thin et bien plus encore

Comprendre les bases du stockage dans Proxmox et en tirer parti.

Qu'est-ce que le stockage dans Proxmox?

Stockage dans Proxmox sont les différents emplacements où vos données atterrissent, dont il y en a plusieurs dans une configuration normale:

  • Disques durs VM (Images): Les disques durs/SSD virtuels de vos machines virtuelles
  • Systèmes de fichiers conteneurs (Rootdir): Le système de fichiers des conteneurs LXC
  • Images ISO: CD/DVD d'installation pour VMs
  • Templates: Images de machine virtuelle ou de conteneur prêtes à l'emploi
  • sauvegardes: Données VM/Conteneur sécurisées
  • Snippets: Configurations d'initialisation cloud, crochets, etc.

Commençons par le classique LVM-Thin: Votre couteau suisse de gestion de la mémoire

Qu'est-ce que LVM-Thin? Penser qu’il s’agit d’une «allocation intelligente du stockage». Au lieu de réserver immédiatement tout l'espace de stockage, seul l'espace réellement utilisé est utilisé.

Exemple pratique: Vous créez une machine virtuelle de 100 Go, mais elle n'utilise que 10 Go au début. En cas de stockage classique, 100 Go seraient immédiatement utilisés, avec LVM-Thin seulement les 10 Go réellement utilisés.

Configurer le LVM-Thin Pool

# Créer un groupe de volumes (si ce n'est pas déjà fait) pvcreate /dev/sdb vgcreate pve-data /dev/sdb # Créer un Thin Pool lvcreate -L 100G -n data pve-data lvconvert --type thin-pool pve-data/data # Configurer dans Proxmox pvesm add lvmthin local-lvm --thinpool data --vgname pve-data --content images,rootdir

Configuration du stockage en pratique

Pour les débutants: Par défaut, Proxmox configure le stockage local:

  • local: Pour les images ISO, les modèles, les sauvegardes
  • local-lvm: Pour les disques durs VM

Pour les plus avancés: Combiner différents types de stockage:

# NFS pour les modèles partagés pvesm add nfs shared-templates --server 192.168.1.100 --export /exports/templates --content iso,template # Ceph pour le stockage haute disponibilité (cluster) pvesm add ceph ceph-storage --pool vm-storage --content images # ZFS pour la haute performance locale zpool create -f tank mirror /dev/sdc /dev/sdd pvesm add zfspool zfs-local --pool tank --content images,rootdir

Regardons aussi plus en détail, car c'est aussi l'un des domaines les plus critiques pour la performance et la fiabilité!

Quels types de stockage ai-je actuellement dans ma configuration Proxmox?

# Afficher tous les stockages configurés pvesm status # Édition d'exemple: Nom Type Status Total Used Available % local dir active 50.0GB 20.0GB 30.0GB 40.00% local-lvm lvmthin active 500.0GB 100.0GB 400.0GB 20.00%

LVM-Thin: Comprendre le cœur

Qu'est-ce qui rend LVM-Thin spécial?

Stockage traditionnel (thick provisioning):

# VM obtient un disque de 100GB qm set 100 --scsi0 local-lvm:100 # Problème: 100GB sont immédiatement occupés par le stockage
# Même si VM n'utilise que 5 Go!

Meilleure variante LVM-Thin (Thin Provisioning):

# VM obtient un disque de 100GB qm set 100 --scsi0 local-lvm:100 # Avantage : Seules les données réellement utilisées occupent la mémoire
# VM utilise 5GB → seulement 5GB occupé
# VM utilise 50GB → seulement 50GB occupé

Mise en place du LVM-Thin Pool – étape par étape

Étape 1: Préparation du Volume Group

# Partitionnement du disque dur (ATTENTION: Les données sont supprimées !) fdisk /dev/sdb # Type de partition: 8e (Linux LVM)

# Créer un volume physique pvcreate /dev/sdb1 # Créer ou développer un groupe de volumes vgcreate pve-data /dev/sdb1 # ou ajouter à la VG existante:
# vgextend pve /dev/sdb1

Étape 2: Créer un Thin Pool

# Création d'un Thin Pool (80% la taille disponible) VGSIZE=$(vgs --noheadings -o vg_size --units g pve-data | tr -d ' G') POOLSIZE=$(Echo "$VGSIZE * 0.8" | bc | cut -d. -f1) lvcreate -L ${POOLSIZE}G -n data pve-data lvconvert --type thin-pool pve-data/data # Ajuster la taille du pool de métadonnées (si nécessaire) lvextend --poolmetadatasize +1G pve-data/data

Étape 3: Intégrer à Proxmox

# Ajouter du stockage dans Proxmox pvesm add lvmthin local-lvm-thin \ --thinpool data \ --vgname pve-data \ --content images,rootdir

Optimiser la configuration LVM-Thin

Configuration d'Auto-Extend

Dans cet exemple, votre allocation de mémoire LVM-Thin augmentera automatiquement de 20% Quantité de mémoire dès que la mémoire occupée atteint les 80% La marque a atteint. Fondamentalement une bonne chose, mais il faut aussi d’une part garder un œil sur elle et d’autre part avoir l’espace de stockage «libre» pour.

# /etc/lvm/lvm.conf Personnaliser cat >> /etc/lvm/lvm.conf << 'EOF' activation { thin_pool_autoextend_threshold = 80 thin_pool_autoextend_percent = 20 } EOF # Signification :
# À 80% Niveau de remplissage automatique autour de 20% élargir

Optimiser le pool de métadonnées

Les métadonnées stockées doivent également être stockées quelque part.

# Vérifier la taille du pool de métadonnées lvs -a | grep metadata # Agrandir si nécessaire lvextend --poolmetadatasize +1G pve-data/data # Pourquoi important? Metadata stocke:
# Quels sont les volumes légers qui existent
# - Quels blocs sont occupés
# - Informations sur les snapshots

Examinons en détail ce que signifient les ordres:

Le premier ordre, # Vérifier la taille du pool de métadonnées lvs -a | grep metadata, sert à vérifier l'état actuel des métadonnées:

lvs -a: Répertorie tous les volumes logiques, y compris les volumes internes, tels que le volume de métadonnées et | grep metadata: Filtre la sortie de manière à n’afficher que les lignes contenant le mot «metadata».

Le deuxième ordre, # Agrandir si nécessaire lvextend --poolmetadatasize +1G pve-data/data, augmente le volume de métadonnées de 1 gigaoctet de mémoire s'il devient trop plein avec lvextend: Une commande pour développer un volume logique, --poolmetadatasize +1G: Cette option cible spécifiquement le volume de métadonnées du Thin Pool et l'augmente de 1 Go. Et bien sûr, le scoutisme pve-data/data: C'est le chemin vers le Thin Pool qui doit être étendu. Dans cet exemple, pve-data le Groupe Volume et data Votre Thin Pool.

Pourquoi les métadonnées sont-elles si importantes?

Les métadonnées sont pour ainsi dire la table des matières de votre Thin Pool. Ils stockent toutes les informations importantes afin que Proxmox sache où se trouvent les données. Lorsque l'espace de stockage des métadonnées est plein, vous ne pouvez plus créer de nouvelles machines virtuelles, de conteneurs ou de snapshots, et les machines virtuelles existantes peuvent ne plus être en mesure d'écrire de nouvelles données.

Comprendre le sur-provisionnement

Fondamentalement, il est possible d'allouer beaucoup plus de mémoire à vos machines virtuelles ou LXC dans le système qu'il n'y en a réellement, aussi longtemps qu'il n'est pas utilisé, cela ne pose aucun problème.

# 500GB Thin Pool
# 10× 100GB VMs = 1000GB virtuel
# Mais seules les données réellement utilisées prennent de la place

# Problème à 100% Taux de remplissage:
# Toutes les machines virtuelles ont des erreurs d'E/S!

Surveillance et alertes

Cependant, il faut absolument garder un œil dessus, car dès que la mémoire « déborde », sinon vos VM et LXC ne vous jettent plus que des erreurs d’E/S.

# Script pour Thin Pool Monitoring cat > /usr/local/bin/thin-pool-monitor.sh << 'EOF' #!/bin/bash USAGE=$(lvs --noheadings -o data_percent pve-data/data | tr -d ' %') METADATA=$(lvs --noheadings -o metadata_percent pve-data/data | tr -d ' %') if [ "$USAGE" -gt 90 ]; then logger "WARNING: Thin pool data usage: ${USAGE}%" echo "Thin pool est plein: ${USAGE}%" | \ mail -s "Proxmox Storage Alert" admin@company.com fi if [ "$METADATA" -gt 90 ]; then logger "WARNING: Thin pool metadata usage: ${METADATA}%" fi EOF # Cronjob toutes les 5 minutes echo "*/5 * * * * root /usr/local/bin/thin-pool-monitor.sh" >> /etc/crontab

Dans cet exemple, un script bash veillerait à ce que la mémoire ne dépasse pas 90% Le niveau de remplissage augmente, sinon le message d’avertissement «Thin pool est rempli avec le pourcentage actuel et envoyé par courrier électronique à l’adresse admin@company.com. De plus, la même chose est enregistrée pour le magasin de métadonnées.
Le cronjob de la dernière ligne permet d'exécuter le script de surveillance toutes les 5 minutes.

Élargir le Thin Pool

# Ajouter un nouveau disque dur pvcreate /dev/sdc1 vgextend pve-data /dev/sdc1 # Agrandir le Thin Pool lvextend -L +200G pve-data/data

Cas d'utilisation pratiques

Création de VM basée sur des templates

# Créer un template qm create 9000 --memory 2048 --scsi0 local-lvm:20 # Configurer le template... Modèle de m2 9000 # Créer des clones liés (super rapide!) qm clone 9000 101 --name web-server-1 qm clone 9000 102 --name web-server-2 # Linked Clone n'utilise que de la mémoire supplémentaire pour les modifications lvs # vm-9000-disk-0 pve-data Vwi----tz-- 20.00g data # Template
# vm-101-disk-0 pve-data Vwi-aotz-- 20.00g data vm-9000-disk-0 # Clone
# vm-102-disk-0 pve-data Vwi-aotz-- 20.00g data vm-9000-disk-0 # Clone

Gestion des snapshots

# Snapshot avant les changements importants snapshot 100 avant la mise à jour # Liste des snapshots m2 listsnapshot 100 # Revenir à Snapshot qm rollback 100 avant la mise à jour # Supprimer le snapshot qm delsnapshot 100 avant la mise à jour

Stockage NFS: Stockage partagé pour le cluster Proxmox

NFS (Network File System) est l'un des classiques parmi les solutions de stockage réseau et convient par exemple aux environnements Proxmox dans lesquels votre stockage souhaite partager entre plusieurs nœuds. La particularité: NFS est basé sur le backend Directory, mais a l'avantage de permettre à Proxmox de monter automatiquement les partages NFS.

Qu'est-ce qui rend NFS spécial dans Proxmox?

Le grand avantage de NFS dans Proxmox: Vous n'avez pas besoin d'entrer manuellement dans le /etc/fstab foutre le camp! Proxmox prend en charge la gestion complète du montage pour vous. Le backend peut même tester si le serveur NFS est en ligne et afficher toutes les exportations disponibles.

C'est particulièrement pratique si vous:

  • Stockage partagé Nécessité d'une migration en direct
  • Templates et ISOs Vouloir gérer de manière centralisée
  • Solutions de sauvegarde simples Désireux de mettre en œuvre
  • Extension de stockage économique Nécessaire

Configuration du stockage NFS - étape par étape

La configuration de base

# Ajouter un stockage NFS dans Proxmox pvesm add nfs iso-templates \ --server 10.0.0.10 \ --export /space/iso-templates \ --content iso,vztmpl \ --options vers=3,soft

Que se passe-t-il ici en détail?

--server 10.0.0.10: C'est votre serveur NFS. Pro-conseil: Préférez utiliser des adresses IP plutôt que des noms DNS pour éviter les retards de recherche DNS. Si vous souhaitez utiliser le DNS, le serveur /etc/hosts un:

echo "10.0.0.10 nfs-server.local" >> /etc/hosts

--export /space/iso-templates: Le chemin d'exportation NFS sur le serveur. Vous pouvez le scanner à l'avance:

# Afficher les exportations NFS disponibles pvesm scan nfs 10.0.0.10 # Édition d'exemple:
# /space/iso-templates
# /space/vm-storage 
# /space/backups

--content iso,vztmpl: Définit ce qui peut être stocké sur ce stockage:

  • iso: Images ISO pour les installations de VM
  • vztmpl: Modèles de conteneurs LXC

--options vers=3,soft: Ici, il devient intéressant pour la performance:

  • vers=3: Utilise NFSv3 (généralement plus stable que v4 pour la virtualisation)
  • soft: C'est important! Limite les tentatives de retry à 3, empêche les machines virtuelles suspendues de rencontrer des problèmes NFS

Configuration du stockage dans /etc/pve/storage.cfg

Après la commande, il y a automatiquement ce qui suit dans le fichier:

nfs: iso-templates path /mnt/pve/iso-templates server 10.0.0.10 export /space/iso-templates options vers=3,soft content iso,vztmpl

path /mnt/pve/iso-templates: C'est le point de montage local sur chaque nœud Proxmox. Proxmox crée automatiquement le répertoire et y monte le partage NFS.

Configurations NFS avancées

Réglages optimisés pour les performances

# Pour les images de VM (performances plus élevées requises) pvesm add nfs vm-storage \ --server 10.0.0.10 \ --export /space/vm-storage \ --content images,rootdir \ --options vers=3,hard,intr,rsize=32768,wsize=32768,tcp

Les options de montage expliquent:

  • hard: Les requêtes NFS sont répétées à l'infini (pour les données critiques)
  • intr: Les processus peuvent être interrompus avec Ctrl+C
  • rsize/wsize=32768: Blocs 32KB pour de meilleures performances
  • tcp: TCP au lieu d'UDP (plus fiable pour les machines virtuelles)

Configurer le stockage de sauvegarde

# Stockage de sauvegarde dédié pvesm add nfs backup-nfs \ --server backup.internal.lan \ --export /backup/proxmox \ --content backup \ --options vers=4,soft,bg \ --maxfiles 3

Options spécifiques à la sauvegarde:

  • vers=4: NFSv4 pour une sécurité et des performances améliorées
  • bg: Monture arrière-plan si le serveur n'est pas disponible
  • maxfiles 3: Maximum de 3 fichiers de sauvegarde par machine virtuelle (dépréciés mais fonctionnels)

Comprendre les fonctionnalités de stockage NFS

Snapshots et clones avec qcow2

NFS ne prenant pas en charge les snapshots matériels, Proxmox Format qcow2 pour ces caractéristiques:

# Créer une machine virtuelle avec qcow2 sur NFS qm set 100 --scsi0 nfs-storage:vm-100-disk-0.qcow2 # Créer un snapshot (snapshot interne qcow2) snapshot 100 avant la mise à jour # Créer un clone (qcow2-backed) qm clone 100 101 --nom cloned-vm

La différence avec LVM-Thin:

  • LVM-Thin: Snapshots de niveau matériel (très rapide)
  • NFS + qcow2: Snapshots de niveau logiciel (plus souples mais plus lents)

Migration et migration en direct

C'est le Principal avantage des PRN en clusters:

# Migration en direct entre les nœuds (sans transfert de stockage!) qm migrate 100 node2 --online # Pourquoi est-ce si rapide? 
# - Les données de VM sont sur NFS (accessibles à tous les nœuds)
# - Seul le contenu RAM est transféré
# - Aucune copie de disque nécessaire

Scénarios d'application pratiques

Scénario 1: Homelab avec Synology NAS

# Activer Synology NFS et créer une exportation
# Tout à propos de DSM: Panneau de configuration → Services de fichiers → NFS → Activer

# Configurer dans Proxmox pvesm add nfs synology-storage \ --server 192.168.1.200 \ --export /volume1/proxmox \ --content images,backup,iso \ --options vers=3,hard,intr

Scénario 2: Serveur NFS dédié (Ubuntu/Debian)

Configuration du serveur NFS:

# Sur le serveur NFS apt install nfs-kernel-server # Configurer les exportations cat >> /etc/exports << 'EOF' /exports/proxmox-vms 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) /exports/proxmox-backup 192.168.1.0/24(rw,sync,no_subtree_check,no_root_squash) /exports/proxmox-iso 192.168.1.0/24(ro,sync,no_subtree_check) EOF exportfs -ra systemctl enable nfs-server

Utiliser dans Proxmox:

# Stockage de VM pvesm add nfs nfs-vms \ --server 192.168.1.100 \ --export /exports/proxmox-vms \ --content images,rootdir # Stockage de sauvegarde  pvesm add nfs nfs-backup \ --server 192.168.1.100 \ --export /exports/proxmox-backup \ --content backup # Stockage ISO (read-only) pvesm add nfs nfs-iso \ --server 192.168.1.100 \ --export /exports/proxmox-iso \ --content iso,vztmpl

Dépannage et suivi

Problèmes courants de NFS

Problème: «Connection refusée» ou «No route to host»

# 1. Tester la connectivité réseau ping 10.0.0.10 # 2. Vérifier le service NFS  rpcinfo -p 10.0.0.10 # 3. Vérifier le pare-feu (côté serveur)
# NFS nécessite plusieurs ports:
# - 111 (rpcbind)
# - 2049 (nfs) 
# - Ports dynamiques pour rpc.statd, rpc.mountd

Problème: «Stale file handle»

# Réaliser le montage umount /mnt/pve/nfs-storage pvesm set nfs-storage --disable 1 pvesm set nfs-storage --disable 0 # Ou ajouter un stockage complètement nouveau pvesm remove nfs-storage pvesm add nfs nfs-storage - serveur ... --export ...

Problème: Mauvaise performance

# Optimiser les options de montage NFS pvesm set nfs-storage --options vers=3,hard,intr,rsize=65536,wsize=65536,tcp # Tester les performances du réseau iperf3 -c serveur nfs # Tester les performances d'E/S  dd if=/dev/zero of=/mnt/pve/nfs-storage/test bs=1M count=1000

Configurer la surveillance NFS

# Surveiller l'état du NFS cat > /usr/local/bin/nfs-health-check.sh << 'EOF' #!/bin/bash for storage in $(pvesm status | grep nfs | awk '{print $1}'); do if ! pvesm status --storage $stockage >/dev/null 2>&1; then echo "Storage NFS $Stockage hors ligne!" | \ logger -t nfs-monitor # Envoyer un e-mail/une alerte fi done EOF # Vérifiez toutes les 2 minutes echo "*/2 * * * * root /usr/local/bin/nfs-health-check.sh" >> /etc/crontab

Meilleures pratiques pour NFS dans Proxmox

Conception de réseau

# Utiliser un réseau de stockage dédié
# Gestion: 192.168.1.x 
# Stockage: 10.0.0.x (Gigabit ou supérieur) auto vmbr1 iface vmbr1 inet static address 10.0.0.11/24 ports de pont eth1 # Pas de passerelle - seulement du trafic de stockage

Options de montage en fonction de l'application

# Pour le contenu en lecture seule (ISO, Templates) --options vers=3,ro,soft,intr # Pour les images de VM (critique)  --options vers=3,hard,intr,tcp,rsize=32768,wsize=32768 # Pour les sauvegardes (peut être interrompu) --options vers=3,soft,bg,intr

Redondance et haute disponibilité

# Serveur NFS avec basculement
# Primary: 10.0.0.10
# Secondaire: 10.0.0.11

# Script Heartbeat pour le basculement automatique cat > /usr/local/bin/nfs-failover.sh << 'EOF' #!/bin/bash PRIMARY="10.0.0.10" SECONDARY="10.0.0.11" if ! ping -c 3 $PRIMARY >/dev/null 2>&1; then # Primary offline - basculer vers secondaire pvesm set nfs-storage --server $SECONDARY logger "NFS failover to secondary server" fi EOF

NFS est particulièrement adapté si vous recherchez une solution de stockage partagé simple mais professionnelle pour votre cluster Proxmox. La configuration est simple, les performances sont suffisantes pour la plupart des cas d'utilisation et la maintenance minimale!

Par souci d'exhaustivité, je voudrais également aborder la variante Windows de NFS. Elle écoute le nom CIFS et se comporte dans l'ensemble sous Proxmox égal à: La principale différence entre le PRN et le CIFS (aujourd'hui SMB C'est-à-dire dans leur Historique de développement et plate-forme cible. NFS a été développé pour les systèmes basés sur Unix tels que Linux, tandis que CIFS/SMB était à l'origine conçu pour les systèmes Windows.

NFS (Network File System)

  • Origine: Développé par Sun Microsystems pour les systèmes Unix.
  • fonctionnement: Permet aux clients d'accéder aux fichiers et répertoires stockés sur un serveur distant comme s'ils étaient locaux. L’accès s’effectue au moyen d’un processus de «monture».
  • performance: Souvent considéré comme plus performant pour les environnements Unix/Linux, car il y est intégré de manière native et a moins de frais généraux.
  • restriction: Peut nécessiter beaucoup de ressources lorsqu'il est utilisé dans des environnements non Linux, car des logiciels supplémentaires sont souvent nécessaires.
  • État actuel: NFSv4 est la version la plus récente et offre des fonctionnalités de sécurité et de performance améliorées. Il est activement développé.

CIFS (Common Internet File System) / SMB (Server Message Block)

État actuel: Le CIFS est techniquement obsolète. Le protocole actuel s'appelle SMB (Server Message Block), qui est en constante évolution et qui sert de norme pour le partage de fichiers dans les systèmes Windows modernes. Mais avec Samba, il peut également être utilisé dans les environnements Unix/Linux pour assurer la compatibilité avec les systèmes Windows.

Origine: CIFS est une version spéciale du SMBProtocole de Microsoft. Dans le contexte moderne, les termes sont souvent utilisés de manière interchangeable ou CIFS désigne la version 1.0 obsolète de SMB.

fonctionnement: Les clients peuvent accéder aux fichiers, imprimantes et autres ressources d'un serveur via le réseau. CIFS/SMB est un protocole conditionnel, ce qui signifie que le serveur suit les connexions et l'état des fichiers ouverts.

performance: Peut être plus lent que NFS dans les connexions WAN (en particulier les versions plus anciennes), mais les versions SMB modernes (SMB2, SMB3) ont des améliorations significatives des performances.

restriction: CIFS/SMB1 est considéré comme dangereux et est désactivé par défaut ou n'est plus utilisé dans les systèmes modernes.


Si nous y sommes déjà, regardons le reste de plus près. Les Documentation officielle montre comment Proxmox utilise les types de mémoire ZFS, BTRFS et CEPH comme Backends de stockage utilise. Il existe des recommandations claires pour différents cas d'utilisation.


Proxmox et ZFS

Proxmox considère ZFS comme une Solution puissante et fiable pour le stockage sur un seul hôte ou de petites configurations répliquées.

Implémentation dans Proxmox: ZFS est utilisé dans Proxmox comme un plugin de stockage intégré. Vous pouvez créer un pool ZFS sur des disques locaux directement dans l'interface Web. Proxmox utilise la capacité de copie sur écriture de ZFS pour Snapshots et clones très rapides de machines virtuelles à créer.

Intégrité des données: Les sommes de contrôle de ZFS protègent vos données de machine virtuelle contre la corruption silencieuse des données, ce qui est essentiel pour les charges de travail critiques.

Des snapshots efficaces: Les snapshots sont très rapides et consomment peu d'espace de stockage, ce qui est extrêmement utile pour les stratégies de sauvegarde + test/staging.

RAID-Z: Proxmox prend en charge la création de configurations RAID ZFS (RAID-Z1, RAID-Z2, RAID-Z3) via l'interface Web, ce qui améliore la sécurité des données.

Quand utiliser: ZFS est le choix préféré pour un Serveur unique, qui nécessite une fiabilité élevée, une intégrité des données et des fonctionnalités de snapshot simples. La documentation officielle recommande également aux clusters de synchroniser ZFS via le moteur de réplication Proxmox.


Proxmox et BTRFS

BTRFS est décrit dans la documentation Proxmox comme une Alternative flexible à ZFS qui offre également des fonctions de copie sur écriture. Il est également conçu pour le stockage local sur un hôte.

Implémentation dans Proxmox: Semblable à ZFS, BTRFS peut être configuré directement dans l'interface Web Proxmox en tant que système de fichiers et type de stockage. Proxmox utilise les fonctions de sous-volume et d'instantané de BTRFS.

simplicité: BTRFS est souvent considéré comme plus facile à gérer, en particulier dans la gestion des sous-volumes.

Fonctionnalités RAID intégrées: BTRFS propose ses propres niveaux RAID (RAID 0, 1, 10). Cependant, la documentation mentionne que RAID 5 et RAID 6 sont toujours considérés comme expérimentaux. C'est donc là qu'il faut absolument faire attention!

Équilibre: BTRFS propose une fonctionnalité intégrée appelée «Balance», qui distribue les données entre les disques durs et optimise les métadonnées.

Quand utiliser: BTRFS est une bonne option si vous souhaitez profiter de la flexibilité et des fonctionnalités d'un système de fichiers moderne sur un Hôte individuel Vous voulez utiliser, mais vous voulez éviter les besoins en ressources de ZFS. C'est un choix solide pour les environnements plus petits.


Proxmox et Ceph

Ceph est dans Proxmox Solution recommandée pour le stockage en cluster. Il est profondément intégré à l'infrastructure Proxmox et permet de pool de stockage distribué hautement disponible créer sur plusieurs hôtes.

Quand utiliser: Ceph est la solution idéale pour clusters plus importants (trois nœuds ou plus). Il vous permet de créer un pool de stockage centralisé et hautement disponible pour toutes les machines virtuelles du cluster qui n'ont pas de point d'échec unique. La documentation Proxmox souligne également clairement que Ceph est le meilleur choix pour le stockage partagé dans un cluster Proxmox HA.

Implémentation dans Proxmox: Proxmox propose une Intégration native de Ceph via l'interface Web qui vous permet de configurer et de gérer un cluster Ceph sur votre hôte Proxmox. Chaque hôte peut servir de nœud Ceph (OSD, Monitor, Manager).

Avantages:

Grande évolutivité: Il est facile d'ajouter d'autres hôtes au cluster pour augmenter la capacité et les performances.

Haute disponibilité: Ceph réplique les données via les nœuds du cluster. En cas de défaillance d'un hôte, le stockage reste disponible.

Stockage unifié: Ceph vous permet de déployer des périphériques de bloc (RBD) pour les machines virtuelles, le stockage d'objets (RADOS Gateway) et les systèmes de fichiers (CephFS).


Les différents backends de stockage en détail

1. Directory Storage (simple mais flexible)

# Répertoire local en tant que stockage pvesm add dir backup-local \ --path /backup \ --content backup,iso,template \ --shared 0 # NFS Share en tant que stockage pvesm add nfs shared-storage \ --server 192.168.1.100 \ --export /exports/proxmox \ --content images,template,backup \ --options vers=3

Avantages:

  • Facile à comprendre et à gérer
  • Flexible pour différents contenus
  • Snapshots via le système de fichiers (en cas d'utilisation de ZFS/BTRFS)

Inconvénients:

  • Des snapshots plus lents pour les grandes images
  • Utilisation moins efficace du stockage

2. ZFS Storage (Caractéristiques d'entreprise)

# Créer un pool ZFS zpool create -f tank \ raidz2 /dev/sdb /dev/sdc /dev/sdd /dev/sde \ cache /dev/nvme0n1p1 \ log /dev/nvme0n1p2 # Optimisations de ZFS zfs set compression=lz4 tank zfs set atime=off tank zfs set xattr=sa tank zfs set relatime=on tank # Ajouter comme stockage Proxmox pvesm add zfspool zfs-storage \ --pool tank \ --content images,rootdir \ --sparse 1

Avantages de ZFS:

  • Snapshots et réplication intégrés
  • Compression et déduplication
  • Très robuste grâce aux checksums
  • Cache et L2ARC pour la performance

3. Ceph Storage (pour clusters)

# Créer Ceph OSD ceph-deploy osd create --data /dev/sdb proxmox1 ceph-deploy osd create --data /dev/sdc proxmox2 ceph-deploy osd create --data /dev/sdd proxmox3 # Créer un pool pour les machines virtuelles ceph osd pool create vm-storage 128 128 ceph osd pool application enable vm-storage rbd # Intégrer à Proxmox pvesm add ceph ceph-storage \ --pool vm-storage \ --content images \ --krbd 0

ZFS et BTRFS: Les approches «scale-up» (serveur unique)

ZFS (Zettabyte File System) Il s'agit d'un système de fichiers et d'un gestionnaire de volumes matures, principalement conçus pour Intégrité des données forte est connu. Il a été conçu pour être utilisé sur un seul serveur puissant.

  • avantages: Intégrité des données supérieure grâce à la copie sur écriture et aux sommes de contrôle. Variantes RAID flexibles (RAID-Z). Très fiable et stable.
  • inconvénients: Peut avoir faim de ressources (RAM). Principalement mis à l'échelle uniquement verticalement. Parfois complexe à manipuler.
  • Champ d'application: Systèmes mono-hôte, stations de travail, serveurs de petite à moyenne taille, systèmes NAS.

BTRFS (B-Tree File System) est une approche moderne du système de fichiers «copy-on-write» pour Linux, qui reproduit de nombreuses fonctionnalités de ZFS, mais qui est souvent considérée comme plus flexible et plus simple à gérer.

  • avantages: Fonctions de gestion de volume intégrées. Manipulation facile des sous-volumes et des snapshots. Sauvegardes incrémentielles. RAID intégré.
  • inconvénients: L'implémentation RAID5/6 est en partie encore considérée comme expérimentale et n'est pas aussi robuste que ZFS.
  • Champ d'application: Systèmes Linux dans lesquels vous souhaitez tirer parti des snapshots et de l'intégrité des données sans la surcharge de ressources de ZFS. Idéal pour les serveurs domestiques et les hôtes Proxmox qui stockent des données localement.

Ceph: L’approche à l’échelle (cluster)

Ceph n'est pas une alternative à ZFS ou BTRFS sur un seul serveur. C'est une Solution de stockage définie par logiciel pour les grands clusters distribués. Son objectif principal est de fournir un pool de stockage centralisé sur de nombreux serveurs.

  • avantages: Extrêmement grande évolutivité (horizontale). Haute résilience grâce à l'auto-guérison et aux données distribuées. Fournit un stockage de blocs, d'objets et de fichiers.
  • inconvénients: Très complexe dans la mise en place et l'administration. Exigences élevées en matière d'infrastructure (minimum 3 nœuds recommandés).
  • Champ d'application: Grands environnements cloud, clusters de virtualisation, très grandes archives de données.

Résumé et recommandation

caractéristiqueZFSBTRFSCeph
conceptScale-Up (serveur unique)Scale-Up (serveur unique)Scale-Out (cluster)
Groupe cibleFiabilité, intégrité des donnéesFlexibilité, simplicité (Linux)Évolutivité, haute disponibilité
Mise à l'échelleVertical (plus de disques dans un serveur)Vertical (plus de disques dans un serveur)Horizontal (plus de serveurs dans le cluster)
Taille de l'applicationPetit à moyenPetit à moyenMoyenne à grande (à partir de 3+ nœuds)
Principal avantageNorme industrielle pour l'intégrité des donnéesFlexible et «natif» sous LinuxRésistance maximale aux pannes & Évolutivité
Inconvénient majeurBesoin élevé de RAMRAID5/6 n'est pas encore complètement matureGrande complexité et exigences en matière d'infrastructure

En résumé, on peut donc dire ce qui suit:

Choix d'un hôte Proxmox unique: ZFS ou BTRFS sont le bon choix. Les deux offrent des snapshots et une bonne intégrité des données. ZFS est l'étalon-or pour la fiabilité, mais BTRFS est souvent plus simple et certainement plus économe en ressources.

Choix d'un cluster Proxmox: Ceph est le meilleur choix si vous avez plusieurs hôtes et que vous souhaitez créer un pool de stockage centralisé et hautement disponible qui peut également se développer à long terme avec votre cluster.


Optimisation des performances en détail

Optimisations de SSD

Activer TRIM/Discard

# Pour les VM individuelles qm set 100 --scsi0 local-lvm:vm-100-disk-0,discard=on,ssd=1 # Global pour toutes les nouvelles machines virtuelles (en configuration de stockage) pvesm set local-lvm --content images --discard-support 1 # Niveau système TRIM (hebdomadaire) systemctl enable fstrim.timer

Planificateurs spécifiques aux SSD

# Optimal pour les SSD echo mq-deadline > /sys/block/sda/queue/scheduler # Permanent via udev cat > /etc/udev/rules.d/60-ssd-scheduler.rules << 'EOF' ACTION=="add|change", KERNEL=="sd[a-z]|nvme[0-9]n[0-9]", \ ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline" EOF

Thread d'E/S et optimisation du cache

# Thread d'E/S pour une meilleure parallélisation qm set 100 --scsi0 local-lvm:vm-100-disk-0,iothread=1 qm set 100 --scsihw virtio-scsi-single # Modes de cache en fonction de l'application
# writethrough: Sûr, mais plus lent qm set 100 --scsi0 local-lvm:vm-100-disk-0,cache=writethrough # writeback: Risque de perte de données plus rapide en cas de panne de courant  qm set 100 --scsi0 local-lvm:vm-100-disk-0,cache=writeback # none: Stockage partagé (cluster) qm set 100 --scsi0 ceph-storage:vm-100-disk-0,cache=none

E/S multivoies pour le stockage d'entreprise

# Installer et configurer Multipath apt install multipath-tools cat > /etc/multipath.conf << 'EOF' defaults { user_friendly_names yes find_multipaths yes } multipaths { multipath { wwid 36001405d27e5d898dd34a9f98a9a8f55 alias shared-storage-lun1 } } EOF systemctl enable multipathd systemctl start multipathd

Meilleures pratiques de mise en page du stockage dans TL:DR

Mise en page recommandée pour différents scénarios

Homelab (1 ou 2 serveurs)

# SSD 1 : Système + machines virtuelles locales /dev/sda1: EFI boot (512MB) /dev/sda2: root (50GB) /dev/sda3: LVM-Thin Pool (résiduel) # HDD 1: Sauvegardes + stockage ISO /dev/sdb1: /backup (disque complet) # Configuration :
# local-lvm: images,rootdir (SSD)
# backup-local: backup,iso (HDD)

Petit environnement de production (3+ serveurs)

# Par serveur:
# NVMe 1: Système (RAID1 Mirror) /dev/nvme0n1: Système Proxmox # NVMe 2 : VMs locales (Hot Data)  /dev/nvme1n1: Local LVM-Thin Pool # SAS/SATA : Stockage partagé via Ceph /dev/sd[a-c]: OSD de Ceph # NAS externe: sauvegardes nfs://backup.internal.lan/proxmox

Enterprise (beaucoup de serveurs, fonctionnement en cluster)

# Stockage dédié:
# - SAN (iSCSI/FC) pour VM Images
# - NFS pour Templates/ISOs 
# - Système de sauvegarde dédié
# - Clusters Ceph séparés

# Uniquement SSD système par nœud Proxmox /dev/sda: Système Proxmox (RAID1) # Tout le reste sur le réseau

Mettre en œuvre le niveau de stockage

# niveau 1: NVMe pour les machines virtuelles critiques pvesm add lvmthin nvme-tier1 \ --vgname nvme-vg \ --thinpool nvme-pool \ --content images # niveau 2: SSD SATA pour les machines virtuelles standard  pvesm add lvmthin ssd-tier2 \ --vgname ssd-vg \ --thinpool ssd-pool \ --content images,rootdir # Tier 3: Disque dur pour archives/sauvegarde pvesm add dir hdd-tier3 \ --path /archive \ --content backup,template

Meilleures pratiques de la documentation Proxmox

Attribuer correctement les types de contenu

Différents types de stockage prennent en charge différents types de contenu Stockage:

# Stockage spécialisé à des fins diverses pvesm add lvmthin vm-storage --vgname pve-fast --thinpool fast --content images pvesm add lvmthin ct-storage --vgname pve-bulk --thinpool bulk --content rootdir pvesm add dir iso-storage --path /var/lib/vz/template --content iso,vztmpl

Stockage non aliasé

Il est difficile de montrer plusieurs configurations de stockage sur le même stockage Stockage:

# FAUX - Les deux pointent vers le même Thin Pool pvesm add lvmthin storage1 --vgname pve --thinpool data --content images pvesm add lvmthin storage2 --vgname pve --thinpool data --content rootdir # Correct - Un seul stockage pour les deux types de contenu pvesm add lvmthin local-lvm --vgname pve --thinpool data --content images,rootdir

Comprendre le Volume Ownership

Chaque volume appartient à une machine virtuelle ou à un conteneur Stockage:

# Comprendre le format Volume ID:
# local-lvm:vm-100-disk-0
# ^ ^ ^
# | | ⁇ ── Numéro du disque 
# |  ⁇ ────────── VM-ID # ⁇ ────────────────────── ID de stockage

# Détecter le chemin du volume pvesm path local-lvm:vm-100-disk-0 # /dev/pve-data/vm-100-disk-0

Réglage des performances selon les normes Proxmox

Optimiser le planificateur d'E/S pour LVM-Thin

# Pour les SSD sous LVM-Thin echo mq-deadline > /sys/block/sda/queue/scheduler # Personnalisation de Queue-Depth echo 32 > /sys/block/sda/queue/nr_requests # Read-ahead pour les charges de travail séquentielles blockdev --setra 4096 /dev/sda

Configuration de la machine virtuelle pour des performances optimales

# Meilleurs paramètres de performance pour LVM-Thin qm set 100 --scsi0 local-lvm:vm-100-disk-0,iothread=1,discard=on,ssd=1 # Paramètre expliqué:
# iothread=1: Threads d'E/S séparés pour une meilleure parallélisation
# discard=on: Support TRIM pour l'optimisation SSD 
# ssd=1: Indique à la VM qu'il s'agit d'un SSD

Maintenance et surveillance

Bilan de santé de Thin Pool

# Informations détaillées sur la piscine dmsetup status | grep thin # Réparer Thin Pool (lorsque corrompu) lvconvert --repair pve-data/data # Voir l'utilisation de Thin Pool Chunk thin_dump /dev/pve-data/data_tmeta | less

Tâches d'entretien régulières

# Maintenance hebdomadaire cat > /etc/cron.weekly/lvm-maintenance << 'EOF' #!/bin/bash # Thin Pool défragmenter fstrim -av # Sauvegarde des métadonnées LVM vgcfgbackup # Unused Logical Volumes nettoyer lvremove $(lvs --noheadings -o lv_path,lv_attr | \ awk '$2 ~ /^V.*a.*z/ {print $1}' | \ head -5) EOF

Cette section de code est la base d'un stockage flexible et hautement performant dans Proxmox.

Migration et maintenance du stockage

Migrer des machines virtuelles entre les stockages

# Migration hors ligne (VM désactivé) qm migrate 100 node2 --targetstorage new-storage # Migration en ligne (VM continue)  qm migrate 100 node2 --online --targetstorage new-storage # Modifier uniquement le stockage (same node) qm move-disk 100 scsi0 new-storage --delete

Maintenance du stockage sans temps d'arrêt

# 1. Migrer les machines virtuelles à partir du stockage for vm dans $(qm list | grep running | awk '{print $1}'); do qm migrate $vm node2 --targetstorage backup-storage --online done # 2. Effectuer la maintenance du stockage
# - Échanger des disques durs
# - RAID reconstruit 
# - etc.

# 3. Migrer les VMs en arrière for vm dans $(qm list | grep running | awk '{print $1}'); do qm migrate $vm node1 --targetstorage main-storage --online done

Suivi et dépannage

Surveiller les performances du stockage

# Statistiques d'E/S en direct iostat -x 1 # Surveillance des E/S par VM iotop -ao # Mesurer la latence de stockage ioping /var/lib/vz/

Résoudre les problèmes de stockage courants

Problème: «No space left on device» (Pas de fuite d’espace sur l’appareil)

# 1. Analyser la consommation de mémoire df -h lvs --all du -sh /var/lib/vz/* # 2. Élargir le Thin Pool lvextend -L +100G /dev/pve/data # 3. Débloquer des blocs non utilisés fstrim -av

Problème: Mauvaises performances d'E/S

# 1. Vérifier le planificateur cat /sys/block/sda/queue/scheduler # 2. Optimiser les E/S queue-depth echo 32 > /sys/block/sda/queue/nr_requests # 3. Vérifier la configuration de la VM  qm config 100 | grep scsi # iothread=1, cache=none/writeback selon la configuration

Problème: Stockage non disponible

# 1. Vérifier l'état du stockage pvesm status # 2. Vérifier les points de montage mount | grep /var/lib/vz # 3. Tester le stockage réseau serveur de stockage ping showmount -e serveur de stockage # 4. Réactiver le stockage pvesm set storage-name --disable 0

Le stockage est la base de votre installation Proxmox – investissez la plupart de votre temps dans la planification et la configuration! Cela paie plus tard dans la consommation de café et ou la consommation de comprimés contre les maux de tête de manière définie à nouveau. ⁇


Achèvement et ressources supplémentaires

Proxmox est un outil puissant, mais avec une grande puissance vient aussi une grande responsabilité. (clin d'œil) Les meilleures pratiques présentées ici sont le résultat d'une expérience pratique. Commencez par les bases et avancez progressivement vers les fonctionnalités avancées.

Vos prochaines étapes:

  1. Construire un environnement de test/staging: Teste toutes les configurations dans un environnement séparé
  2. Mettre en œuvre le monitoring: Surveillez votre système dès le début
  3. Tester la stratégie de sauvegarde: Effectue des tests de restauration réguliers
  4. Rejoindre la communauté: Le forum Proxmox est très utile

Alors rappelez-vous ceci: Prenez le temps, les bases Comprendre avant de Des configurations plus complexes passe. Le Guide d'administration Proxmox En tant que site Web que j'ai lié à plusieurs reprises dans l'article pour référence, il vaut également la peine d'or. Regardez-vous tranquillement sur le forum, Si vous avez une question. Sinon, il y a aussi un point d'entrée Chaîne Youtube.

Les autres parties de cette série d'articles, je vous les ai reliées ici: Partie 1: réseau | Deuxième partie: Stockage | Troisième partie: Sauvegarde | Partie 4 : sécurité | Cinquième partie: performance