Créer un pool depuis la GUI et en CLI, ashift, compression¶
Objectif : créer le pool de VM tank (ici 4 SSD en deux mirrors) avec ashift=12 et la compression lz4, puis l'enregistrer comme stockage Proxmox VE de type ZFS. Durée : 15 minutes par nœud.
Avant de toucher la prod
- Topologie validée (voir Choisir sa topologie et le calculateur).
- Disques raccordés à un HBA ou à un contrôleur en mode HBA/IT, pas en volumes RAID.
- Disques vides : toute donnée présente sera détruite. Numéros de série notés.
- Aucun de ces disques n'appartient à rpool (
zpool status rpool). - Architecture répliquée : nom de pool et ID de stockage identiques prévus sur
pve01etpve02(tank).
Étapes¶
- Identifier les disques : nœud
pve01→ Disks. Vérifier le modèle, le numéro de série et la colonne Usage (doit être vide ou No). - Si un disque porte d'anciennes partitions : le sélectionner → Wipe Disk. Relire le numéro de série avant de confirmer.
- Disks → ZFS → Create: ZFS, puis renseigner :
- Name :
tank - RAID Level :
RAID10(deux mirrors avec 4 disques) ;Mirror,RAIDZ2,dRAID2… selon la conception - Compression :
on(lz4 par défaut) oulz4explicitement - ASHIFT :
12 - Add Storage : coché sur le premier nœud
- cocher les 4 disques
- Name :
- Create, puis suivre la tâche jusqu'à TASK OK.
- Second nœud (architecture répliquée) : même opération sur
pve02avec Add Storage décoché, puis Datacenter → Storage → tank → Edit → Nodes : ajouterpve02. - Contrôler le stockage : Datacenter → Storage → tank : type ZFS, contenu Disk image, Container, option Thin provision selon la politique convenue.
# 1. Repérer les disques par identifiant stable
ls -l /dev/disk/by-id/ | grep -v part
lsblk -o NAME,SIZE,MODEL,SERIAL
# 2. Effacer d'anciennes signatures (disque par disque, après vérification du numéro de série)
wipefs -a /dev/disk/by-id/nvme-SAMSUNG_MZQL21T9HCJR_S64GNE0T100001
# 3. Créer le pool : deux mirrors, ashift 12, compression lz4
zpool create -o ashift=12 -O compression=lz4 tank \
mirror /dev/disk/by-id/nvme-..._S64GNE0T100001 /dev/disk/by-id/nvme-..._S64GNE0T100002 \
mirror /dev/disk/by-id/nvme-..._S64GNE0T100003 /dev/disk/by-id/nvme-..._S64GNE0T100004
# Variante RAIDZ2 de 6 disques :
# zpool create -o ashift=12 -O compression=lz4 tank raidz2 <d1> <d2> <d3> <d4> <d5> <d6>
# 4. Déclarer le stockage dans le cluster (une seule fois)
pvesm add zfspool tank --pool tank --content images,rootdir --sparse 1 --nodes pve01,pve02
-o règle une propriété du pool (ashift), -O une propriété du dataset racine, héritée par tous les zvols (compression). Retirez --sparse 1 si la politique est le provisionnement épais.
Choisir ashift et compression¶
| Paramètre | Valeur conseillée | Pourquoi |
|---|---|---|
ashift |
12 (secteurs 4 Kio) | Correspond aux SSD et HDD actuels ; 9 dégrade les performances sur disques 4K. Non modifiable après création |
ashift 13 |
Cas particuliers | Certains SSD à pages de 8 Kio ; augmente le padding RAIDZ |
compression |
lz4 |
Coût CPU très faible, gain fréquent de 1,2 à 2 sur des VM ; abandonne d'elle-même les blocs incompressibles |
compression=zstd |
Datastores, archives | Meilleur ratio (zstd = zstd-3), plus de CPU ; à éviter sur les pools de VM très sollicités |
autotrim |
Laisser off |
Proxmox VE planifie un TRIM le premier dimanche du mois (/etc/cron.d/zfsutils-linux) |
Changer la compression ne s'applique qu'aux blocs écrits ensuite.
Vérifications
zpool status tank
# state: ONLINE ; deux lignes mirror-0 et mirror-1 de deux disques by-id chacune
zpool get ashift tank
# tank ashift 12 local
zfs get compression tank
# tank compression lz4 local (ou "on" via la GUI)
pvesm status --storage tank
# tank zfspool active ...
tank apparaît sous chaque nœud concerné, icône sans point d'interrogation.
Rollback
Tant qu'aucun disque de VM n'y est créé : supprimer le stockage (Datacenter → Storage → tank → Remove, ou pvesm remove tank), puis détruire le pool : Disks → ZFS → tank → More → Destroy ou zpool destroy tank. Vérifier deux fois le nom du pool et le nœud : zpool destroy ne demande pas de confirmation.
Pièges vus en support
- Disques désignés par
/dev/sdb,/dev/sdc: après un redémarrage ou l'ajout d'un disque, l'ordre change et l'import du pool peut échouer ou devenir confus. ashiftlaissé à la détection automatique sur des disques qui annoncent des secteurs de 512 octets : pool enashift=9, irrécupérable sans recréation.- Add Storage coché sur le second nœud : création d'un deuxième stockage ou erreur d'ID existant. Un seul ID
tank, restreint aux nœuds qui ont le pool. - Stockage déclaré pour tous les nœuds alors que le pool n'existe que sur
pve01: les autres nœuds affichent le stockage en erreur. - Disques montés derrière un contrôleur RAID en « RAID0 par disque » : ZFS ne voit ni SMART ni les vraies erreurs.
Quand ouvrir un ticket iTop
Disques non visibles dans Disks, doute sur l'ashift ou la topologie, création d'un pool sur un nœud de production en contrat N2/N3 (réalisée par le MSP) : P3 avant intervention. Joindre lsblk -o NAME,SIZE,MODEL,SERIAL,TRAN et la sortie du calculateur ZFS.