Aller au contenu

Choisir sa topologie : mirror, RAIDZ1/2/3, dRAID

Day 0 · ConcevoirNiveau 2 · OpérerCoursRédigé · à valider en lab

Pour des disques de VM, la réponse par défaut est un pool de mirrors (RAID10) ; RAIDZ2 se réserve aux volumes de données froides et aux datastores de sauvegarde, dRAID aux très grands pools. Cette règle découle d'un fait simple : un vdev RAIDZ offre à peu près les IOPS aléatoires d'un seul disque.

Les topologies comparées

Topologie Disques min. par vdev Pannes tolérées par vdev Capacité (n disques) IOPS aléatoires d'un vdev Resilver Usage typique
Mirror 2 voies 2 1 n / 2 Écriture : 1 disque. Lecture : 2 disques Rapide (copie d'un disque) VM, bases de données
Mirror 3 voies 3 2 n / 3 Écriture : 1 disque. Lecture : 3 disques Rapide VM critiques, gros disques
RAIDZ1 3 1 n - 1 ≈ 1 disque Lent, lit tout le vdev Petits SSD, données non critiques
RAIDZ2 4 2 n - 2 ≈ 1 disque Lent Fichiers, archives, datastore PBS
RAIDZ3 5 3 n - 3 ≈ 1 disque Lent Très gros HDD, archivage
dRAID1/2/3 2 / 3 / 4 (doc PVE) 1 / 2 / 3 + spares distribués Selon la géométrie Comparable à RAIDZ Très rapide vers les spares distribués Pools de plus de 10 à 15 disques

Les performances d'un pool s'additionnent par vdev : un pool de 4 mirrors (8 disques) offre environ 4 fois les IOPS en écriture d'un disque ; un RAIDZ2 de 8 disques, environ 1 fois.

flowchart TB
    Q1{"Usage principal ?"} -- "Disques de VM, bases" --> M["Mirrors (RAID10)<br/>2 voies, 3 voies si gros disques"]
    Q1 -- "Fichiers, archives, datastore PBS" --> Q2{"Combien de disques ?"}
    Q2 -- "4 à 10" --> Z2["RAIDZ2, un ou plusieurs vdevs"]
    Q2 -- "Plus de 10 à 15" --> Q3{"Resilver rapide indispensable ?"}
    Q3 -- oui --> DR["dRAID2 avec spare distribué<br/>(validation MSP)"]
    Q3 -- non --> Z2N["Plusieurs vdevs RAIDZ2<br/>de 6 à 10 disques"]

Notions clés

Largeur de vdev. Restez entre 4 et 10 disques par vdev RAIDZ. Plus large, le resilver s'allonge et le padding des petits blocs augmente.

RAIDZ et zvols. Les disques de VM sont des zvols à volblocksize fixe (16 Kio par défaut avec OpenZFS 2.2 et suivants). En RAIDZ, chaque bloc est complété pour respecter la géométrie : un RAIDZ2 de 6 disques n'offre pas 4/6 de la capacité brute pour des zvols. Le calcul exact est sur la page Sizing ZFS.

dRAID. Les spares sont distribués sur tous les disques : la reconstruction écrit sur tout le vdev en parallèle, d'où sa rapidité. En contrepartie, la largeur de bande est fixe (8 disques de données par défaut) : avec des secteurs de 4 Kio, l'allocation minimale est de 32 Kio, ce qui pénalise les petits blocs et la compression. La documentation Proxmox réserve dRAID aux pools de plus de 10 à 15 disques. La GUI exige un disque de plus que le minimum, car elle prévoit un spare.

Ce qui se change après coup.

Opération Possible ?
Ajouter un vdev au pool (zpool add) Oui, irréversible si le pool contient un vdev RAIDZ
Ajouter un disque à un mirror (2 → 3 voies, zpool attach) Oui
Ajouter un disque à un vdev RAIDZ (extension, OpenZFS 2.3, PVE 9) Oui, voir Agrandir un pool
Passer de RAIDZ1 à RAIDZ2, ou de RAIDZ à mirror Non : recréer le pool et restaurer
Changer l'ashift Non

Recommandations MSP

Architecture livrée Pool système Pool de VM recommandé
Mono-nœud ZFS rpool en mirror 2 SSD Mirrors de SSD entreprise (RAID10)
ZFS répliqué 2 nœuds + QDevice rpool en mirror sur chaque nœud Même pool tank en mirrors, même nom sur les deux nœuds
PBS local rpool en mirror RAIDZ2 de HDD + special vdev SSD en mirror, ou RAIDZ2/mirrors de SSD
  • RAIDZ1 est exclu avec des disques de 8 To ou plus : une seconde panne pendant un resilver de plus de 24 h détruit le pool.
  • Tous les disques d'un vdev ont la même taille et la même technologie. Pas de disques SMR.
  • Prévoyez un disque de rechange sur site plutôt qu'un hot spare permanent dans un petit pool.
  • Toute topologie hors de ces standards (dRAID, RAIDZ3, special vdev) se valide avec l'avant-vente MSP.

Pièges vus en support

  • RAIDZ2 de 6 HDD pour 40 VM : latences de plusieurs dizaines de millisecondes dès que les sauvegardes démarrent. Un vdev RAIDZ ne fait pas plus d'IOPS qu'un disque.
  • Capacité attendue « 4 disques sur 6 » en RAIDZ2 et pool plein bien avant : le padding des zvols n'avait pas été compté.
  • Un disque ajouté seul avec zpool add dans un pool de mirrors : le pool dépend désormais d'un disque sans redondance.
  • RAIDZ1 de gros HDD choisi pour la capacité : perte du pool lors du resilver après la deuxième panne.

Testez-vous

  1. Vous avez 8 SSD pour héberger 30 VM Windows. Quelle topologie proposez-vous et pourquoi ?

    Réponse

    4 vdevs mirror de 2 SSD (RAID10). On obtient environ 4 fois les IOPS en écriture d'un SSD et 8 fois en lecture, contre environ 1 fois pour un RAIDZ2 de 8 disques. La capacité est de 50 % du brut.

  2. Combien de disques peut perdre un pool composé de deux vdevs RAIDZ2 de 6 disques ?

    Réponse

    Jusqu'à 2 disques par vdev, soit 4 au total si les pannes se répartissent sur les deux vdevs. Une troisième panne dans le même vdev détruit le pool.

  3. Pourquoi RAIDZ1 est-il déconseillé avec des disques de 16 To ?

    Réponse

    Le resilver doit lire tous les autres disques du vdev pendant de longues heures, souvent plus de 24 h. Pendant ce temps, le vdev n'a plus de redondance : une seconde panne ou des secteurs illisibles entraînent une perte de données.

  4. Dans quel cas dRAID a-t-il un intérêt ?

    Réponse

    Sur de grands pools (plus de 10 à 15 disques) où la durée de reconstruction est critique. Les spares distribués permettent un resilver beaucoup plus rapide. Sur un pool de 6 disques de VM, il n'apporte rien et pénalise les petits blocs.

Pour aller plus loin