Aller au contenu

Créer un pool depuis la GUI et en CLI, ashift, compression

Day 1 · DéployerNiveau 2 · OpérerProcédureRédigé · à valider en lab

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 pve01 et pve02 (tank).

Étapes

  1. 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).
  2. Si un disque porte d'anciennes partitions : le sélectionner → Wipe Disk. Relire le numéro de série avant de confirmer.
  3. 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) ou lz4 explicitement
    • ASHIFT : 12
    • Add Storage : coché sur le premier nœud
    • cocher les 4 disques
  4. Create, puis suivre la tâche jusqu'à TASK OK.
  5. Second nœud (architecture répliquée) : même opération sur pve02 avec Add Storage décoché, puis Datacenter → Storage → tank → Edit → Nodes : ajouter pve02.
  6. 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  ...
GUI : le stockage 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.
  • ashift laissé à la détection automatique sur des disques qui annoncent des secteurs de 512 octets : pool en ashift=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.

Ouvrir un ticket iTop

Pour aller plus loin