Comment puis-je ajouter un disque à un zpool raidz existant?

21

J'ai un serveur OpenSolaris avec un zpool backupzcomposé de quatre disques SCSI:

-bash-3.2# zpool status backupz
  pool: backupz
 state: ONLINE
 scrub: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        backupz     ONLINE       0     0     0
          raidz1    ONLINE       0     0     0
            c7t0d0  ONLINE       0     0     0
            c7t1d0  ONLINE       0     0     0
            c7t2d0  ONLINE       0     0     0
            c7t3d0  ONLINE       0     0     0

errors: No known data errors

Je veux ajouter un cinquième lecteur ... mais zpool add backupz raidz c7t4d0ne fonctionne pas ...

-bash-3.2# zpool add backupz raidz c7t4d0
invalid vdev specification: raidz requires at least 2 devices

Puis-je ne pas avoir de configuration raidz avec 5 appareils? Dois-je ajouter deux appareils à la fois? ou est-ce que je fais tout à fait quelque chose de incorrect ici?

Josh
la source

Réponses:

14

Vous ne pouvez pas étendre un raidz vdev existant, vous devez le souffler et le recréer avec le ou les nouveaux lecteurs. Voir l'autre réponse pour plus de détails.

Note latérale: Quelqu'un a en fait compris qu'il était techniquement possible d'ajouter des lecteurs à un raidz, mais la fonctionnalité n'a pas été mise en œuvre. Il en va de même pour la suppression d'un disque.

Chris S
la source
5
Euh oh. Si c'est le cas, j'ai pris une décision terrible quelque part! = o
Josh
2
-1 Bien sûr, un zpool peut être étendu. À votre avis, que fait la zpool addcommande? La limitation dans laquelle Josh se heurte, c'est que vous ne pouvez pas changer la composition d'un raidz vdev ("raidz1" dans son exemple). Vous pouvez très bien ajouter de nouveaux appareils à la piscine elle-même. C'est l'une des raisons pour lesquelles les vdev miroirs sont préférés: serverfault.com/questions/63809/zfs-mirror-vs-raid-z
Wim Coenen
8
@Wim, je suis bien conscient que vous pouvez ajouter des vdev supplémentaires à un pool. C'était une faute de frappe mineure, et il n'y a aucune raison de me sauter dessus comme ça.
Chris S
Cool, je ne savais pas que quelqu'un avait trouvé un moyen de contourner l'architecture pour permettre l'ajout de disques! Avez-vous un lien où je peux en savoir plus à ce sujet?
lindhe
31

Voir ce fil depuis l'une des listes FreeBSD: http://lists.freebsd.org/pipermail/freebsd-fs/2009-June/006327.html

Pour citer Dan Naumov,

Pour réitérer, vous ne pouvez pas simplement ajouter un seul lecteur de disque à un pool raidz1 ou raidz2. Il s'agit d'une limitation connue (vous pouvez vérifier avec les documents SUN ZFS). Si vous avez un raidz existant et que vous DEVEZ augmenter les capacités de stockage de ce pool particulier, vous avez 3 options:

1) Ajoutez un raidz de la même configuration au pool (pensez à 3 disques raidz + 3 disques raidz ou 5 + 5, par exemple)

2) Remplacez chaque (et chaque) disque de votre pool de raidz un par un, en le laissant resilver après avoir inséré chaque disque mis à niveau

3) Sauvegardez vos données, détruisez votre pool et créez un nouveau pool raidz avec une plus grande quantité de disques.

brent
la source
3
+1: Merci @brent! Votre réponse était plus détaillée que celle de Chris, mais il me fournissait des informations détaillées dans le chat, j'ai donc accepté sa réponse. J'apprécie l'information!
Josh
1
Pourquoi faut-il ajouter un RAIDZ de la même configuration et ne peut par exemple pas ajouter un RAIDZ avec 8 disques à un avec 3? Les données ne sont-elles pas réparties sur tous les VDEV ou RAIDZ?
Thorsten Schöning
@Thorsten Schöning La réponse est la performance, ZFS fonctionne mieux avec des VDEV de même taille: serverfault.com/a/564436/333397
Thorsten Schöning