Weblog
ZFS auf größere Festplatten erweitern
10.06.2025 2 Min. Lesezeit
Der übliche Weg, ein ZFS-Dateisystem auf größere Festplatten zu erweitern, besteht darin, das Pool-Attribut autoexpand auf on zu setzen und die Festplatten nacheinander auszutauschen. Beispielhaft für einen Pool namens tank, der die beiden Festplatten sdb und sdc enthält:
$ zpool set autoexpand=on tank
$ zpool replace tank /dev/sdb /dev/sdd
$ zpool status -v tank # warte bis das Resilvering abgeschlossen ist!
$ zpool replace tank /dev/sdc /dev/sde
$ zpool status -v tank # warte bis das Resilvering abgeschlossen ist!
$ zpool export tank
$ zpool import tank
Nach dem Austausch beider Festplatten gegen größere Modelle und einem anschließenden Export/Import des Pools erweitert ZFS den Pool automatisch auf die maximale Größe der neuen Datenträger.
ZFS erkennt die neuen Datenträger beim erneuten Import automatisch. Es ist daher nicht notwendig, sich zu merken, welche Festplatte an welchem Controller-Port angeschlossen war.
Besonderheit unter Linux (ZFS on Linux)
Unter Linux mit den „ZFS on Linux“-Modulen sind zusätzliche Schritte erforderlich, damit der Pool tatsächlich auf die volle Größe anwächst:
$ zpool set autoexpand=on tank
$ zpool replace tank /dev/sdb /dev/sdd
$ zpool status -v tank # warte bis das Resilvering abgeschlossen ist!
$ zpool replace tank /dev/sdc /dev/sde
$ zpool status -v tank # warte bis das Resilvering abgeschlossen ist!
$ zpool export tank
$ zpool import tank
$ zpool online -e tank /dev/sdd
$ zpool online -e tank /dev/sde
$ zpool export tank
$ zpool import tank
Der Pool wird dabei zweimal exportiert und importiert. Danach nutzt ZFS die komplette Kapazität der neuen Festplatten aus.
Das gleiche Vorgehen gilt auch dann, wenn statt ganzer Festplatten nur Partitionen oder Slices für ZFS verwendet werden.
Wenn keine freien Controller-Ports verfügbar sind
Falls keine freien Anschlüsse für die neuen Festplatten vorhanden sind, kann man den Pool absichtlich in einen degradierten Zustand versetzen: Dazu wird eine alte Festplatte direkt durch eine neue ersetzt und der degradierte Pool anschließend resilvert.
Der Austauschvorgang funktioniert unabhängig davon, ob der Pool bereits degradiert ist oder nicht.