Wie kann ich einem vorhandenen raidz zpool eine Festplatte hinzufügen?

21

Ich habe einen OpenSolaris-Server mit einem Zpool, backupzder aus vier SCSI-Laufwerken besteht:

-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

Ich möchte ein fünftes Laufwerk hinzufügen ... aber zpool add backupz raidz c7t4d0es funktioniert nicht ...

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

Kann ich keine raidz config mit 5 Geräten haben? Muss ich zwei Geräte gleichzeitig hinzufügen? oder mache ich hier überhaupt etwas falsch?

Josh
quelle

Antworten:

14

Sie können ein vorhandenes raidz vdev nicht erweitern, Sie müssen es wegblasen und mit den neuen Laufwerken neu erstellen. Weitere Informationen finden Sie in der anderen Antwort.

Randnotiz: Jemand hat tatsächlich herausgefunden, dass es technisch möglich ist, einem Raidz Laufwerke hinzuzufügen, aber die Funktionalität wurde nicht implementiert. Das gleiche gilt für das Entfernen einer Festplatte.

Chris S
quelle
5
Oh oh. Wenn das der Fall ist, habe ich irgendwo eine schreckliche Entscheidung getroffen! = o
Josh
2
-1 Natürlich kann ein zpool erweitert werden. Was glaubst du, macht der zpool addBefehl? Die Einschränkung, auf die Josh stößt, besteht darin, dass Sie die Zusammensetzung eines raidz vdev (in seinem Beispiel "raidz1") nicht ändern können. Sie können problemlos neue Geräte zum Pool hinzufügen. Dies ist einer der Gründe, warum Mirror-Vdevs bevorzugt werden: serverfault.com/questions/63809/zfs-mirror-vs-raid-z
Wim Coenen
8
@Wim, mir ist klar, dass Sie einem Pool zusätzliche vdevs hinzufügen können. Es war ein kleiner Tippfehler, und es gibt keinen Grund, so über mich hinwegzuspringen.
Chris S
Cool, ich wusste nicht, dass jemand eine Möglichkeit gefunden hat, die Architektur zu umgehen, um das Hinzufügen von Laufwerken zu ermöglichen! Haben Sie einen Link, über den ich mehr darüber lesen kann?
Lindhe
31

Sehen Sie sich diesen Thread in einer der FreeBSD-Listen an: http://lists.freebsd.org/pipermail/freebsd-fs/2009-June/006327.html

Um Dan Naumov zu zitieren,

Um es noch einmal zu wiederholen, können Sie nicht einfach ein einzelnes Festplattenlaufwerk zu einem raidz1- oder raidz2-Pool hinzufügen. Dies ist eine bekannte Einschränkung (Sie können dies anhand von SUN ZFS-Dokumenten überprüfen). Wenn Sie ein Raidz haben und die Speicherkapazität dieses Pools erhöhen MÜSSEN, haben Sie drei Möglichkeiten:

1) Fügen Sie dem Pool ein Raidz der gleichen Konfiguration hinzu (denken Sie beispielsweise 3 Festplatten-Raidz + 3 Festplatten-Raidz oder 5 + 5).

2) Ersetzen Sie jede (und jede) Festplatte in Ihrem RAIDZ-Pool nacheinander, und lassen Sie sie nach dem Einlegen jeder aktualisierten Festplatte neu starten

3) Sichern Sie Ihre Daten, zerstören Sie Ihren Pool und erstellen Sie einen neuen Raidz-Pool mit einer größeren Anzahl von Festplatten.

brent
quelle
3
+1: Danke @brent! Deine Antwort war detaillierter als die von Chris, aber er hat mir im Chat detaillierte Informationen geliefert, sodass ich seine Antwort akzeptierte. Ich schätze die Information!
Josh
1
Warum muss man eine RAIDZ mit derselben Konfiguration hinzufügen und kann zB keine RAIDZ mit 8 Festplatten zu einer mit 3 hinzufügen? Sind die Daten nicht über alle VDEVs (auch RAIDZs genannt) verteilt?
Thorsten Schöning
@Thorsten Schöning Die Antwort ist Leistung, ZFS funktioniert am besten mit VDEVs der gleichen Größe: serverfault.com/a/564436/333397
Thorsten Schöning