Agrandir un pool, extension RAIDZ¶
Objectif : augmenter la capacité du pool tank sans le recréer, avec la méthode adaptée à sa topologie. Pour un pool de mirrors, on ajoute un mirror ; pour un vdev RAIDZ, on peut depuis PVE 9 (OpenZFS 2.3) y ajouter un disque : c'est l'extension RAIDZ.
Choisir la méthode¶
| Méthode | Commande | Topologie | Réversible | Effet |
|---|---|---|---|---|
| Ajouter un vdev | zpool add tank mirror <d1> <d2> |
Pool de mirrors (ou nouveau vdev RAIDZ identique) | Seulement si aucun vdev RAIDZ dans le pool | Capacité et IOPS en plus ; données existantes non rééquilibrées |
| Extension RAIDZ | zpool attach tank raidz2-0 <d> |
vdev RAIDZ1/2/3 | Non | Un disque de plus dans le vdev, même parité |
| Remplacer par des disques plus gros | zpool replace disque par disque + autoexpand |
Toutes | Oui, tant que l'ancien disque est conservé | Capacité accrue quand tous les disques d'un vdev sont remplacés |
flowchart TB
S{"Topologie de tank ?"} -- "Mirrors" --> M["Ajouter un mirror<br/>zpool add tank mirror d1 d2"]
S -- "RAIDZ" --> R{"Baies libres ?"}
R -- "Oui, 1 à 3 disques" --> E["Extension RAIDZ<br/>zpool attach tank raidz2-0 d"]
R -- "Oui, 4 disques et plus" --> V["Ajouter un vdev RAIDZ<br/>de même largeur et parité"]
R -- "Non" --> G["Remplacer les disques un par un<br/>par des plus gros (RB-05)"]
Ce qu'il faut savoir sur l'extension RAIDZ¶
- Disponible à partir de Proxmox VE 9 (OpenZFS 2.3.3) ; elle requiert la fonctionnalité de pool
raidz_expansion(activée parzpool upgrade, voir pièges). - Le nouveau disque doit être au moins aussi grand que le plus petit disque du vdev.
- La parité ne change pas : un RAIDZ2 de 6 disques devient un RAIDZ2 de 7 disques.
- Les blocs existants gardent leur ancien ratio données/parité ; seules les nouvelles écritures profitent du nouveau ratio. L'espace gagné est donc inférieur au calcul théorique, et
zfs listpeut annoncer un peu moins d'espace libre qu'attendu. Réécrire les données (déplacer un disque de VM vers un autre stockage puis le ramener) leur applique le nouveau ratio. - Un vdev peut être étendu plusieurs fois, un disque à la fois.
- Si un disque tombe pendant l'expansion, celle-ci se met en pause jusqu'au retour à l'état sain du vdev.
- L'opération relit et redistribue tout le vdev : comptez des heures à plus d'une journée, avec un impact sur les performances.
- Ne s'applique pas à dRAID.
Avant de toucher la prod
- Sauvegarde PBS récente et vérifiée de toutes les VM du pool (
pbs-local, synchronisée vers le MSP). - Pool sain :
zpool status -xrépondall pools are healthy, dernier scrub sans erreur. - Nouveau disque de même modèle (ou équivalent), taille égale ou supérieure, non SMR, identifié par son numéro de série.
- Pour l'extension : version vérifiée (
zfs version≥ 2.3.3) et fonctionnalitéraidz_expansiondisponible. - Commande relue par une seconde personne :
addetattachne font pas du tout la même chose. - Contrat N2/N3 : opération réalisée par le MSP ; N1 : ticket P3 de validation avant intervention.
Étapes¶
La GUI Proxmox VE sert ici à préparer et contrôler ; l'ajout de disque à un pool existant se fait en CLI.
- Nœud
pve01→ Disks : le nouveau disque apparaît, colonne Usage vide. Sinon : Wipe Disk après vérification du numéro de série. - Disks → ZFS → double-clic sur
tank: noter le nom du vdev à étendre (raidz2-0,mirror-1…). - Après l'opération CLI, revenir sur cet écran : le nouveau disque apparaît dans le vdev, et Datacenter → Storage (ou le résumé du stockage
tank) affiche la nouvelle capacité.
# 0. État et nom des vdevs
zfs version
zpool status tank
zpool get feature@raidz_expansion tank # enabled ou active attendu
# A. Extension RAIDZ : ajouter un disque au vdev raidz2-0
zpool attach tank raidz2-0 /dev/disk/by-id/ata-WDC_WD80..._VK7NEW01
zpool status tank # ligne "expand:" avec l'avancement
# option -w : la commande ne rend la main qu'à la fin de l'expansion
# B. Pool de mirrors : ajouter un mirror (simulation avec -n d'abord)
zpool add -n tank mirror /dev/disk/by-id/<d1> /dev/disk/by-id/<d2>
zpool add tank mirror /dev/disk/by-id/<d1> /dev/disk/by-id/<d2>
# C. Disques plus gros : autoexpand puis remplacement un par un (RB-05)
zpool set autoexpand=on tank
zpool replace tank <ancien> /dev/disk/by-id/<nouveau-plus-gros>
# attendre la fin du resilver avant le disque suivant ; si la taille ne bouge pas à la fin :
# zpool online -e tank <disque>
Vérifications
zpool status tank
# state: ONLINE ; raidz2-0 compte désormais 7 disques ; la ligne "expand:" indique une expansion terminée
zpool list -v tank # SIZE et taille du vdev augmentées
zfs list tank # AVAIL augmenté
zpool scrub tank) et vérifier 0 errors.
Rollback
Il n'y en a pas pour l'extension RAIDZ ni pour un zpool add sur un pool contenant du RAIDZ : le seul retour arrière est la recréation du pool et la restauration depuis PBS (RB-12). Sur un pool composé uniquement de mirrors, un vdev ajouté par erreur se retire avec zpool remove tank mirror-2 (les données sont recopiées sur les autres vdevs). Pour la méthode C, tant que le resilver n'est pas fini, zpool detach tank <nouveau> annule le remplacement.
Pièges vus en support
zpool add tank <disque>au lieu dezpool attach tank raidz2-0 <disque>: le disque devient un vdev seul, sans redondance, impossible à retirer d'un pool RAIDZ. La perte de ce disque détruit le pool. Toujours simuler aveczpool add -n.zpool attachsur un disque d'un mirror (et non sur le vdev RAIDZ) : on obtient un mirror 3 voies, pas plus de capacité.- Extension attendue de +1/6 de capacité et gain constaté plus faible : les anciens blocs gardent l'ancien ratio.
- Fonctionnalité
raidz_expansiondésactivée sur un pool créé avant PVE 9 :zpool upgrade tankl'active, mais rend le pool illisible par des versions plus anciennes d'OpenZFS (ISO de secours, ancien nœud). À décider avec le MSP. - Nouveau mirror ajouté à un pool presque plein : les nouvelles écritures se concentrent sur ce vdev, les performances ne s'améliorent pas tout de suite.
- Disque rpool étendu sans recréer les partitions de boot : voir RB-06.
Quand ouvrir un ticket iTop
Toute extension sur un pool de production, zpool upgrade, expansion qui stagne ou disque en défaut pendant l'expansion : avec le MSP (P3 planifié, P2 si le pool est dégradé). Pool au-delà de 85 % : P2, voir aussi le plan de capacité. Joindre zpool status -v, zpool list -v, zfs list, zfs version.