Vue normale
- Sciences et Avenir
- "Quand les Dieux s’en mêlent" : le Théâtre Antique d’Orange allie technologie et mythologie
Proxmox Backup Server : Stockage ZFS
Un mémo sur la mise en place d’un stockake ZFS pour l’hébergement des sauvegardes d’un Proxmox Backup Server.
L’objectif premier était de concevoir une architecture de stockage à la fois performante, résiliente et facile à maintenir.
Le serveur à ma disposition dispose de 12 disques HDD de 8 To (7.3 To nets) et d’un RAID1 pour le système.
NB : Cet article se concentre exclusivement sur la configuration de ZFS. Il ne couvre pas l’intégration dans proxmox, ni les fonctionnalités avancées telles que les politiques de rétention (Prune), la collecte des données obsolètes (Garbage Collection), ou d’autres options spécifiques à PBS.
Pourquoi ZFS et RAIDZ2 ?
ZFS est un système de fichiers avec comme fonctions :
- Protection contre la corruption de données
- Compression native
- Snapshots incrémentaux
- Et une gestion avancée des volumes et disques.
RAIDZ2 est l’équivalent du RAID6 : il permet de tolérer la perte de deux disques par vdev sans perte de données.
Architecture retenue
Configuration :
- 2 vdevs de 5 disques en RAIDZ2
- 2 disques en spare
-
Détails :
- Disques actifs : 10 (5+5 + 2×parité RAIDZ2)
- Disques spare : 2 (remplacement automatique en cas de panne)
- Tolérance aux pannes : jusqu’à 2 disques HS par vdev
- Capacité utilisable : environ 58.4 To nets (8 disques × 7.3 To)
Pourquoi deux vdevs RAIDZ2 au lieu d’un seul ?
Choisir 2 vdevs RAIDZ2 au lieu d’un seul vdev de 12 disques RAIDZ2 présente plusieurs avantages :
- Performance accrue : les deux vdevs fonctionnent en parallèle → plus d’IOPS.
- Resilvering plus rapide : une reconstruction de disque touche seulement un vdev (6 disques), pas 12.
- Risque réduit : 3 disques HS ne sont pas fatal si répartis sur les 2 vdevs.
- Évolutivité : possibilité d’ajouter un 3e vdev plus tard sans casser le pool.
Création du pool ZFS avec 2 disques en spares
- Création du pool :
zpool create -o ashift=12 -o autotrim=on \ -O compression=lz4 -O atime=off -O xattr=sa -O acltype=posixacl \ pbs_pool \ raidz2 /dev/sd[a-e] \ raidz2 /dev/sd[f-j] \ spare /dev/sdk /dev/sdl
-o ashift=12
:-O compression=lz4
-O atime=off
-O xattr=sa
-O acltype=posixacl
pbs_pool
raidz2 /dev/sd[a-e]
raidz2 /dev/sd[f-j]
spare /dev/sdk /dev/sdl
- Lister le pool :
Définit la taille minimale d’allocation à 4 Ko (2^12 = 4096).
Une fois définie, cette valeur ne peut pas être changée.
Active la compression transparente avec l’algorithme LZ4 (rapide, efficace).
Réduit l’espace utilisé sans impacter les performances.
Désactive la mise à jour automatique de l’horodatage d’accès à chaque lecture.
Réduit significativement les écritures inutiles → plus de performance.
Stocke les attributs étendus (xattr) dans des structures ZFS internes (plutôt qu’en fichiers séparés).
Améliore les performances, notamment avec PBS.
Permet de gérer des ACL POSIX (permissions avancées).
Important si PBS gère plusieurs utilisateurs ou scripts avec droits précis.
Nom du pool ZFS, ici pbs_pool
Crée un vdev RAIDZ2 avec 6 disques (ici sda à sde).
Tolère la perte de 2 disques dans ce groupe.
Deuxième vdev RAIDZ2 identique au premier.
Les deux vdevs forment un pool unique avec une performance en lecture/écriture parallèle.
Définit deux disques de secours.
ZFS les utilise automatiquement si un disque actif tombe en panne (resilvering automatique).
NAME SIZE ALLOC FREE CKPOINT EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT pbs_pool 72.8T 1.37M 72.7T - - 0% 0% 1.00x ONLINE -
- zpool list affiche la taille brute du pool
Ici 2 vdevs en RAIDZ2 de 6 disques de 7.3 To.
RAIDZ2 utilise 2 disques pour la parité par vdev, donc :- 6 disques – 2 parités = 4 disques utiles × 2 vdevs = 8 disques utiles.
- 8 × 7.3 To = ≈ 58.4 To utilisables.
C’est la capacité effective, celle réellement disponible pour les données.
Pourquoi zpool list indique 72.8 To ?
Explication :
- ZFS additionne tous les disques du pool, même ceux réservés à la parité.
- 12 disques × 7.3 To ≈ 87.6 To physiques.
- Deux disques sont hot spares, donc non comptés ici.
- 10 disques actifs × 7.3 To = ≈ 72.8 To ➜ c’est bien ce que ZFS affiche le SIZE.
Important à retenir :
- SIZE ≠ capacité utilisable.
Pour connaître l’espace réel du stockage, faut retirer les disques de parité.
zpool status
pool: pbs_pool state: ONLINE config: NAME STATE READ WRITE CKSUM pbs_pool ONLINE 0 0 0 raidz2-0 ONLINE 0 0 0 sda ONLINE 0 0 0 sdb ONLINE 0 0 0 sdc ONLINE 0 0 0 sdd ONLINE 0 0 0 sde ONLINE 0 0 0 raidz2-1 ONLINE 0 0 0 sdf ONLINE 0 0 0 sdg ONLINE 0 0 0 sdh ONLINE 0 0 0 sdi ONLINE 0 0 0 sdj ONLINE 0 0 0 spares sdk AVAIL sdl AVAIL errors: No known data errors
- Création du dataset pour PBS :
zfs create -o mountpoint=/mnt/datastore/pbs pbs_pool/pbs
L’écart entre la capacité brute ZFS et celle exposée dans PBS s’explique en trois points :
-
Unités To vs TB :
ZFS indique en tébioctets (1 To = 2¹⁰ GiB), PBS en téraoctets décimaux (1 TB = 10¹² octets).
~58.4 To ZFS ≃ 64.2 TB décimaux. -
Overhead et réserves ZFS :
ZFS réserve slack space et métadonnées pour maintenir les perfs (80–85 % d’usage max recommandé). -
Datastore PBS :
PBS ne compte que l’espace réellement assigné à son point de montage, en arrondissant et en gardant une marge pour ses opérations internes.
Élément | Valeur approximative |
---|---|
Disques utiles (8 × 7.3 To) | ≈ 58.4 To |
Conversion To → TB | 58.4 × 1.0995 ≃ 64.2 TB |
Overhead ZFS + réserves PBS | – 15–20 % |
Capacité visible dans PBS | ≈ 47.2 TB |
Cette valeur reflète l’espace réellement exploitable et sécurisé pour les sauvegardes PBS.
Bonus : Resilvering (reconstruction de disque)
Le resilvering est le processus par lequel ZFS reconstruit les données d’un disque défaillant ou remplacé dans un pool RAIDZ, en utilisant les autres disques et les données redondantes (parité).
C’est l’équivalent du rebuild dans les RAID classiques.
Contrairement aux RAID matériels, ZFS ne recopie pas tout le disque, mais uniquement les blocs réellement utilisés, ce qui rend le resilvering souvent plus rapide et plus sûr.
Ressources
Codes de temps Ninja pour mai 2025 : révélations sur les raids clés !
Entrez dans le monde vibrant du Village Caché des Feuilles avec Ninja Time. Ce jeu s’inspire de l’emblématique anime Naruto, vous permettant d’explorer des lieux mémorables et de rencontrer des personnages bien-aimés. Préparez-vous à maîtriser vos compétences de ninja et à rendre Kakashi fier alors que vous vous lancez dans des missions palpitantes. Devenir Hokage […]
Le post Codes de temps Ninja pour mai 2025 : révélations sur les raids clés ! est apparu en premier sur Moyens I/O.
Joueurs clés pour EA FC 25 Temps additionnel : Guide de l’évolution de Lisbonne
EA FC 25 les joueurs peuvent s’attendre à un traitement passionnant avec l’Évolution Ajoutée de Temps à Lisbonne, une initiative spéciale célébrant la finale de la Ligue des champions de l’UEFA. Cette fonctionnalité vous permet d’améliorer une carte de votre choix, rehaussant ainsi votre expérience de jeu. Cette dernière évolution est proposée au prix de […]
Le post Joueurs clés pour EA FC 25 Temps additionnel : Guide de l’évolution de Lisbonne est apparu en premier sur Moyens I/O.
Rejoignez notre Zone de Spoilers de The Last of Us : Discutez des Moments Clés !
Depuis l’annonce d’une deuxième saison pour The Last of Us, les fans sont en émoi autour d’un moment clé de l’intrigue : le sort de Joel. Cette scène pivot déclenche un tourbillon d’émotions et pose les bases du parcours captivant d’Ellie à venir. Pour ceux qui connaissent The Last of Us Part II, la mort […]
Le post Rejoignez notre Zone de Spoilers de The Last of Us : Discutez des Moments Clés ! est apparu en premier sur Moyens I/O.
Rivaux d’Ultron de Marvel : Date de sortie, capacités et points clés
L’excitation autour de l’arrivée d’Ultron dans Marvel Rivals est palpable, surtout depuis que son annonce a suivi de près celle d’Emma Frost. Eh bien, l’attente est terminée—NetEase Games a officiellement confirmé qu’Ultron fera son grand début le 30 mai 2025. En plongeant dans son gameplay, ses capacités et son timing, vous verrez bientôt pourquoi ce […]
Le post Rivaux d’Ultron de Marvel : Date de sortie, capacités et points clés est apparu en premier sur Moyens I/O.
Événement : la conférence phare de NVIDIA débarque à Paris, participez à GTC
OpenAI dévoile Codex, son agent IA dédié au développement logiciel
Viens chez moi, j'habite dans une éolienne !
- Les joies du code
- IA, Local-first, observabilité : ce que dotJS 2025 révèle sur l’avenir de JavaScript
IA, Local-first, observabilité : ce que dotJS 2025 révèle sur l’avenir de JavaScript
Proxmox : utiliser un miroir local pour l’installation de Ceph
Un petit mémo pour expliquer comment forcer l’utilisation d’un miroir local lors de l’installation de Ceph sur Proxmox.
Par défaut, que ce soit via l’interface web de Proxmox ou la commande pveceph
, l’installation de Ceph s’appuie sur le script Perl pveceph.pm
, qui impose l’utilisation du dépôt officiel https://enterprise.proxmox.com ou http://download.proxmox.com.
Cela pose problème lorsqu’on souhaite utiliser un miroir local, par exemple avec Proxmox Offline Mirror. En effet, même si un miroir local est disponible sur le système, il ne sera pas pris en compte : le script pveceph.pm
remplace automatiquement les dépôts configurés par ceux qu’il contient en dur.
Configurer et utiliser un dépôt local Ceph pour Proxmox
Comme indiqué en début d’article, les urls des dépots sont renseignées dans le script perl pveceph.pm
:
grep proxmox.com /usr/share/perl5/PVE/CLI/pveceph.pm my $cdn = $enterprise_repo ? 'https://enterprise.proxmox.com' : 'http://download.proxmox.com';
- Changer l’url http://download.proxmox.com par celle du dépôt local (dans mon cas http://mirrors.local) :
sed -i 's/download\.proxmox\.com/mirrors\.local/g' /usr/share/perl5/PVE/CLI/pveceph.pm
- Dans mon cas : http://mirrors.local/ceph/latest/ceph-squid/
- Changement du chemin :
sed -i 's/debian\/ceph/ceph\/latest\/ceph/g' /usr/share/perl5/PVE/CLI/pveceph.pm
Installation de Ceph via le dépôt local
- Les joies du code
- JetBrains dynamise son offre IA : Junie disponible, assistant boosté et abonnement gratuit
JetBrains dynamise son offre IA : Junie disponible, assistant boosté et abonnement gratuit
GitHub Copilot embarque un mode agent sur VS Code : tout ce que vous devez savoir
- Les joies du code
- OpenAI dévoile GPT-4.1 : son modèle IA nouvelle génération pensé pour les développeurs
OpenAI dévoile GPT-4.1 : son modèle IA nouvelle génération pensé pour les développeurs
- Les joies du code
- Challenge Top Code MyDigitalSchool : je vous fais gagner une souris MX Master 3S, retrouvez-moi en live !
Challenge Top Code MyDigitalSchool : je vous fais gagner une souris MX Master 3S, retrouvez-moi en live !
Hackathon grandeur nature : codez au Parc des Princes, 150 000 dollars à la clé
- Les joies du code
- Meta soupçonné d'avoir triché pour faire briller son nouveau modèle Llama 4 dans les benchmarks d'IA
Meta soupçonné d'avoir triché pour faire briller son nouveau modèle Llama 4 dans les benchmarks d'IA
"Je voulais juste régler mon problème" : il y a 20 ans, Linus Torvalds créait Git
- Les joies du code
- Elon Musk veut réécrire tout le code Cobol sur lequel repose la sécurité sociale américaine en quelques mois
Elon Musk veut réécrire tout le code Cobol sur lequel repose la sécurité sociale américaine en quelques mois
- Les joies du code
- Pour célébrer les 50 ans de Microsoft, Bill Gates partage le code source historique qui lança son aventure