ZFS Erfahrung mit Plattencrash und Frage dazu

pit234a

Well-Known Member
Hi.
Mein Fileserver ist immer noch FreeBSD 7.2-Release und fünf SATA-Platten zu einem raidz zusammengefasst, ZFS6. Das System liegt auf einem USB-Stick.
Nun starb eine Platte. Obwohl natürlich jeder vor dem Einsatz eines SW-Raid entsprechend probiert, ist der Ernstfall dann doch immer ein wenig anders. Durch besondere Umstände musste ich den Server innerhalb kurzer Zeit mehrmals ausschalten und dementsprechend auch wieder einschalten. Plötzlich ging er nicht mehr, weil das Bios mit der neuen Konfiguration nicht zu Recht kam und nicht mehr vom Stick bootete. Dadurch wurde ich natürlich aufmerksam und merkte gleich den Ausfall einer Platte im Pool. Nach Umstellen des Bios funktionierte der Rechner tadellos, meldete natürlich den Pool als degraded, wenn ich ihn mir ansah. Alle Daten waren ohne merkliche Einbußen verfügbar (ich fordere den Server nicht sehr und das ist kein wirklich ernster Einsatz, ein Haushalts-Server halt).
Im nächsten PC-shop bekam ich eine ähnliche Platte, statt 1TB hatte die neue nun 1.5TB, ansonsten alle Daten vergleichbar, sogar der Hersteller ist angeblich der gleiche.
Der Ersatz der defekten Platte gelang spielend leicht. Bemerkenswert einfach und durchsichtig mit ZFS!
Dazu hatte ich nicht mal die man-page gelesen, sondern war einfach der Empfehlung gefolgt, die mir zpool status gab. Deshalb ersetzte ich die alte Platte durch eine neue am gleichen physikalischen Platz mit einem einfachen zpool replace "pool" "device".
Das funktionierte grandios, weshalb ich das gerne zurückmelde, allerdings wird damit nun die 1.5TB auch als 1TB behandelt.
Also, das ist nicht wirklich die große zusätzliche Menge an Speicher und ich bin damit sehr froh, wie es gelaufen ist und dass mein Verband nun wieder sauber da steht. Ich frage mich aber, wieso diese 500GB vollends verschenkt werden sollen.
Hätte ich eine 1.5TB Platte hinzugefügt, wäre die doch auch voll genommen worden und nicht nur als 1TB. Durch den Ersatz der defekten, liegt nun scheinbar ein drittel dieser neuen Platte vollkommen brach.
Ist das so? Oder mache ich einen Fehler? Hätte ich besser vorher partitioniert und eine 1TB Partition als Replacement genommen, um dann die 500G noch verfügbar zu haben? Oder kann ich die nun noch nutzen (und am liebsten dem raidz verfügbar machen)?
 
Das ist so. RaidZ verlangt, dass alle Platten gleichgroß sind. Also wird von jeder Platte nur der Speicherplatz genutzt, den die kleinste Platte zur Verfügung stellt.
 
Jeder RAID Controller würde es ebenso handhaben. Es ist nun einmal so, dass die Daten Blockweise gleichmäßig verteilt werden. Da ist es einfach nicht möglich diesen Mehrplatz im Raid unterzubringen, denn dann würde ja an dieser einen Stelle eine Datenhäufung geschehen für die dann keine Sicherung mehr gewährleistet wäre.
Die einzige Möglichkeit die ich sehe den Platz zu Nutzen - und mit Software Raid, ZFS und Intel Matrix Raid geht das - ist eine Partition in den Raid einzubinden. Für die ersten beiden Lösungen ist das aber nicht empfehlenswert und vom Matrix Raid ist generell abzuraten da nur mit bestimmten Intel Chipsätzen möglich, vom jeweiligen Board abhängig und recht lahm.
 
Hab damal eine kurze Zwischenfrage.
Wenn pit234a jetzt nach und nach alle übrigen Festplatten ersetzen würde bis alle Platten 1.5 TB Kapazität habe, vergrößert sich das Raid dann automatisch?

Grüße.
arcona
 
Ja. Wenn die letzte Platte auf 1,5TB erhöht wurde, steht plötzlich der ganze Speicherplatz zur Verfügung. Wie gesagt, es orientiert sich an der kleinsten Platte. :)
 
Dabei aber bitte Beachten dass sich dadurch, dass sich der Raid vergrößert, sich das darauf befindliche Volume in aller Regel nicht vergrößert. Das muss man dann noch von Hand machen - das wird je nachdem was man laufen hat recht hässlich. Von "kann man resizen" bis "Zweites Volume erstellen und ein weiteres über die beiden vorhanden spannen" ist da alles dabei.
 
Ja. Wenn die letzte Platte auf 1,5TB erhöht wurde, steht plötzlich der ganze Speicherplatz zur Verfügung. Wie gesagt, es orientiert sich an der kleinsten Platte. :)
Cool. Das wusste ich bisher nicht.

Ich habe seit einigen Tagen ebenfalls (endlich) einen Homeserver unter FreeBSD und ZFS am laufen.

Mein Setup sind 2x1.5tb und 2x1tb. Das Raidz besteht aus 4x1tb, allerdings habe ich die 1.5tb Platten vorher partitioniert. ~1tb für zfs, 50gb für FreeBSD, den rest wieder für einen zfs mirror aus dem übrigegeblienen Platz da die beiden 1.5tb Platten identisch aufgebaut sind (FreeBSD wird zusätzlich per dump/rsync gespiegelt).

Das funktioniert einwandfrei und war beim testen auch nicht wirklich kaputt zu bekommen.
 
Dabei aber bitte Beachten dass sich dadurch, dass sich der Raid vergrößert, sich das darauf befindliche Volume in aller Regel nicht vergrößert. Das muss man dann noch von Hand machen - das wird je nachdem was man laufen hat recht hässlich. Von "kann man resizen" bis "Zweites Volume erstellen und ein weiteres über die beiden vorhanden spannen" ist da alles dabei.

Afaik spielt alles dies bei ZFS keine Rolle. Sobald alle Platten mit der neuen Größe erstetzt sind, sollte sofort ohne weitere Schritte die neue Kapazität zur Verfügung stehen.
(Sollte man jedoch nicht die physikalischen Platten sondern irgendwelche Partitonen für sein ZFS-Pool hergenommen haben magst du wieder recht behalten. Aber sowas macht man nicht mehr mit ZFS (zumindest nicht, wenn es sich vermeiden lässt.)
 
Je mehr ich darüber lese, desto neugieriger werde ich auch ZFS.....

Kann mich nur anschliessen. :)

Bin deshalb gerade dabei, mein zu-hause-serverchen mit amd64 neu aufzusetzen. Die bestehende Installation ist schon seit 5.x auf i386 gewesen. Mach ich halt mal alles neu.

Sehr nützlich die Infos hier!
 
Back
Top