ZFS-Speicher
Wir möchten unseren Dank an Ed Rawlings ([Spaceinvader One])(https://www.youtube.com/c/SpaceinvaderOne) für das Fachwissen und die Anleitung zum Ausdruck bringen, von denen diese ZFS-Speicherdokumentation angepasst wurde. Seine Tutorials und Erkenntnisse haben zahllosen Unraid-Nutzern geholfen, fortgeschrittene Speichertechniken zu meistern. Wir schätzen seine anhaltenden Beiträge zur Unraid-Gemeinschaft sehr.
ZFS bringt fortschrittliche Datenintegrität, flexible Speicher-Konfigurationen und hohe Leistung in Ihr Unraid-System. Dieser Leitfaden erklärt die grundlegenden Konzepte von ZFS und führt Sie durch die Verwaltung von ZFS-Pools direkt über das Unraid WebGUI. Egal, ob Sie einen neuen ZFS-Speicher einrichten oder einen bestehenden Pool integrieren, Sie finden hier die notwendigen Schritte und den Kontext, um sicher anzufangen.
Warum ZFS?
ZFS ist ein modernes Dateisystem und Volume-Manager, der Ihre Daten schützt, Korruption verhindert und die Speicherverwaltung vereinfacht.
Mit ZFS erhalten Sie:
- Automatische Datenintegritätschecks und Selbstheilung
- Eingebaute RAID-Unterstützung (Spiegelungen, RAIDZ)
- Snapshots und Klone für einfache Backups und Rollbacks
- ZFS send/receive für effiziente Replikation
- Kompression in Echtzeit
Unraid supports ZFS for any storage pool. You can create a new ZFS pool, import one from another system, or use Unraid’s unique hybrid ZFS setup: add a ZFS-formatted disk directly to the Unraid array (not a pool) and combine ZFS features with Unraid’s parity protection.
The hybrid ZFS-in-array approach is helpful for specific backup or replication scenarios but is not a replacement for a full ZFS pool. ZFS disks in the array are managed individually; you do not get the combined performance, redundancy, or self-healing of a true multi-disk ZFS pool. For full ZFS functionality, always use dedicated ZFS pools.
Pools, Vdevs und Redundanz
Ein ZFS-Pool (genannt "Zpool") besteht aus einem oder mehreren Vdevs (virtuellen Geräten). Jedes Vdev ist eine Gruppe physischer Festplatten mit einem eigenen Redundanzgrad. ZFS schreibt Daten über Vdevs hinweg, aber jedes Vdev ist für seine eigene Fehlertoleranz verantwortlich.
Redundanz ist immer pro VDEV gegeben. Wenn ein VDEV ausfällt, fällt der gesamte Pool aus, selbst wenn andere VDEVs gesund sind. Planen Sie Ihre VDEVs sorgfältig!
Erstellen eines ZFS-Pools
So erstellen Sie einen ZFS-Pool über das WebGUI:
- Stoppen Sie das array.
- Pool hinzufügen klicken.
- Wählen Sie einen Namen für Ihren Pool (zum Beispiel
raptor
). - Stellen Sie die Anzahl der Slots auf die Anzahl der Festplatten ein, die Sie in Ihren primären Daten-Vdev(s) haben möchten.
Diese anfängliche Slot-Anzahl ist nur für Daten-VDEVs gedacht. Support-VDEVs (wie Protokoll- oder Cache-Laufwerke) können separat hinzugefügt werden, nachdem der Pool erstellt wurde.
- Weisen Sie dem Pool Festplatten zu (die Reihenfolge spielt keine Rolle).
- Klicken Sie auf den Pool-Namen (z.B.
raptor
), um den Konfigurationsbildschirm zu öffnen. - Stellen Sie den Dateisystemtyp auf
zfs
oderzfs-verschlüsselt
(für LUKS-Verschlüsselung) ein.
- Wählen Sie Ihr Zuordnungsprofil - dies bestimmt die Redundanz und Leistung Ihres Pools.
Überprüfen Sie vor dem Abschluss die Abschnitte über Zuordnungsprofile und Topologie, um eine fundierte Entscheidung zu treffen.
- Aktivieren Sie die Komprimierung, wenn gewünscht (empfohlen für die meisten Workloads).
- Klicken Sie auf Erledigt, dann starten Sie das array.
Eine ZFS-Disk ins Array integrieren (Hybrid-Setup)
You can add a standalone ZFS disk to your Unraid array (not a ZFS pool) to combine ZFS features with Unraid's parity protection.
-
Parity-Schutz: Die ZFS-Festplatte ist durch die array-parity von Unraid geschützt, wodurch Ihre Daten vor einzelnen (oder mehreren, abhängig von Ihren parity drives) Festplattenausfällen gesichert sind.
-
Datenintegrität: ZFS bietet Integritätsprüfungen auf Blockebene (Prüfsummen). Während eine einzelne Festplatte Bit Rot nicht selbstständig heilen kann, wird ZFS Korruption erkennen und Sie alarmieren, damit Sie aus dem Backup wiederherstellen können, bevor ein stiller Datenverlust auftritt.
-
ZFS features: You can utilize ZFS snapshots and replication on this disk, making it ideal for backup targets, specific datasets, or scenarios where you want ZFS features alongside traditional Unraid storage.
To add a ZFS disk to the array:
- Gehen Sie zum Main-Tab im WebGUI.
- Stoppen Sie das array.
- Klicken Sie auf einen leeren Slot unter Array Devices.
- Wählen Sie die Festplatte aus, die Sie hinzufügen möchten.
- Wählen Sie unter Dateisystem
zfs
oderzfs-verschlüsselt
.
- Klicken Sie auf Übernehmen.
- Starten Sie das array und lassen Sie die Festplatte bei Bedarf formatieren.
Wahl eines Zuordnungsprofils
Wenn Sie einen ZFS-Pool einrichten, bestimmt Ihr Zuweisungsprofil, wie Ihre Daten geschützt werden, wie Ihr Pool performt und wie Sie ihn erweitern können. Hier ist ein einfacher Vergleich, der Ihnen hilft zu entscheiden, welches Profil Ihren Bedürfnissen entspricht:
Profil | Redundanz | Leistung | Erweiterung | Speichereffizienz | Typische Anwendungsfälle |
---|---|---|---|---|---|
Stripe | Keine | Schnell, aber riskant | Hinzufügen von mehr Festplatten | 100% | Temporärer/Cache-Speicher |
Spiegel | 1:1 (RAID 1-Stil) | Ausgezeichnet für zufälligen I/O | Hinzufügen von mehr Spiegelungen | 50% | Hohe Leistung, einfache Erweiterung |
RAIDZ1 | 1 Festplatte pro Vdev | Schnell für große Dateien. Nicht ideal für kleine oder zufällige Schreibvorgänge. | Neue Vdevs hinzufügen | Hoch | Allgemeine Nutzung, 1-Festplatten-Toleranz |
RAIDZ2 | 2 Festplatten pro Vdev | Wie Z1, aber leicht langsamere Schreibvorgänge (zusätzliche Parität) | Neue Vdevs hinzufügen | Mittel | Wichtige Daten, 2-Festplatten-Toleranz |
RAIDZ3 | 3 Festplatten pro Vdev | Wie Z2, mit mehr Schreibaufwand (für maximale Sicherheit) | Neue Vdevs hinzufügen | Niedriger | Mission-kritisch, 3-Festplatten-Toleranz |
- Verwenden Sie Mirror, wenn Sie die beste Leistung und einfache, flexible Erweiterung wünschen und es Ihnen nichts ausmacht, mehr Speicherplatz für Redundanz zu nutzen.
- Wählen Sie RAIDZ1/2/3, wenn Sie den nutzbaren Speicher maximieren und große Dateien speichern möchten, beachten Sie jedoch, dass die Erweiterung weniger flexibel ist und die Leistung bei zufälligem Schreiben geringer ist.
- Stripe ist nur für nicht-kritische, temporäre Daten geeignet – bei Ausfall einer Festplatte verlieren Sie alles.
Topologie und Erweiterung
Wie Sie Festplatten in Vdevs gruppieren, beeinflusst sowohl die Datensicherheit als auch die Geschwindigkeit.
- Wenn Sie alle Festplatten in einem großen RAIDZ2-Vdev einfügen, können Sie zwei beliebige Festplatten ohne Datenverlust verlieren. Die Erweiterung bedeutet jedoch, dass man ein weiteres vollständiges Vdev hinzufügen muss.
- Sie erzielen bessere Parallelleistung, wenn Sie Festplatten in mehrere kleinere RAIDZ1-Vdevs aufteilen. Seien Sie vorsichtig; wenn im selben Vdev zwei Festplatten ausfallen, verlieren Sie den gesamten Pool.
- ZFS streift Daten über Vdevs, nicht einzelne Festplatten, daher können mehr Vdevs bei Workloads mit vielen kleinen Dateien oder zufälligen I/O zu besseren Leistungen führen.
- Das Erweitern eines ZFS-Pools bedeutet in der Regel das Hinzufügen eines neuen Vdevs mit demselben Layout, nicht nur einer einzelnen Festplatte.
Kompression und RAM
ZFS offers advanced features that can significantly improve Unraid's storage efficiency and performance. Two common topics of interest are compression and memory requirements.
ZFS-Kompression arbeitet transparent – sie funktioniert im Hintergrund und schrumpft Daten, bevor sie die Festplatte erreicht.
Dies bietet zwei wesentliche Vorteile:
- Reduzierte Festplattennutzung: Weniger Speicherplatz wird genutzt.
- Verbesserte Leistung: Weniger Daten zu schreiben und zu lesen kann zu schnelleren Vorgängen führen, besonders bei modernen CPUs.
Der ZFS RAM-Mythos - Klicken zum Erweitern/Einklappen
Sie könnten auf den veralteten Ratschlag gestoßen sein: „ZFS benötigt 1 GB RAM pro 1 TB Speicher." Dies trifft auf die meisten Nutzer nicht mehr zu. ZFS nutzt RAM für seinen Adaptive Replacement Cache (ARC), der häufig abgerufene Lesevorgänge beschleunigt.
Unraid begrenzt ZFS automatisch auf die Nutzung eines angemessenen Teils des Arbeitsspeichers Ihres Systems (normalerweise 1/8 des gesamten RAMs). Dadurch kann ZFS gut performen, ohne Docker-Container, VMs oder das Unraid-OS zu beeinträchtigen.
Importieren von auf anderen Systemen erstellten ZFS-Pools
Unraid kann mit minimalem Aufwand ZFS-Pools importieren, die auf anderen Plattformen erstellt wurden.
Wie importiert man einen ZFS-Pool - Klicken zum Erweitern/Einklappen
- Array stoppen: Stellen Sie sicher, dass Ihr Unraid-array angehalten ist.
- Neuen Pool hinzufügen: Klicken Sie auf Pool hinzufügen.
- Alle Laufwerke zuweisen:
- Stellen Sie Anzahl der Daten-Slots auf die Gesamtzahl der Laufwerke in Ihrem ZFS-Pool ein (einschließlich Daten-Vdevs und Support-Vdevs).
- Weisen Sie jedem Laufwerk den richtigen Slot zu.
- Beispiel: Für einen Pool mit einem 4-Laufwerke gespiegelt vdev und einem 2-Laufwerke L2ARC vdev, setzen Sie 6 Slots und weisen Sie allen sechs Laufwerken zu.
- Stellen Sie Dateisystem auf "Auto": Klicken Sie auf den Pool-Namen (z.B.
raptor
) und stellen Sie Dateisystem auf Auto. - Abschließen und Array starten: Klicken Sie auf Erledigt, dann starten Sie das array.
Unraid wird den ZFS-Pool automatisch erkennen und importieren. Unterstützende Vdevs (wie Log, Cache/L2ARC, Spezial/Dedup) werden unter Subpools im WebGUI aufgelistet. Es ist nicht notwendig, Subpools separat nach dem Beginn des Imports hinzuzufügen. Unraid importiert sie automatisch zusammen mit den Hauptdatenträgern, sobald alle notwendigen Laufwerke zugewiesen sind.
Es wird dringend empfohlen, nach dem Import einen scrub durchzuführen, um die Datenintegrität zu überprüfen.
- Klicken Sie auf den Poolnamen (z.B.
raptor
), um seine Konfiguration zu öffnen. - Unter Poolstatus den Status überprüfen und auf Scrub klicken.
Unterstützende vdevs (Unterpools)
Unraid bezeichnet ZFS-unterstützende Vdevs als Subpools. Die meisten Nutzer benötigen diese nicht, aber fortgeschrittene Nutzer könnten ihnen begegnen:
Unterstützender vdev (Unterpool) | Zweck | Risiko/Anmerkungen |
---|---|---|
Spezial-Vdev | Speichert Metadaten und kleine Dateien | Der Pool wird unlesbar, wenn er verloren geht. |
Dedup-Vdev | Ermöglicht Deduplizierung | Benötigt große Mengen RAM; riskant für die meisten Nutzer. Vermeiden Sie es, es sei denn, Sie haben spezielle Bedürfnisse. |
Log-Vdev (SLOG) | Verbessert die Synchronisierungs-Schreibleistung | Optional. Nur sinnvoll für bestimmte Arbeitslasten. |
Cache vdev (L2ARC) | Bietet SSD-basierten Lese-Cache | Optional. Kann Lese-Geschwindigkeiten für große Arbeitssätze verbessern. |
Reserve-Vdev | In Unraid nicht unterstützt (ab 7.1.2) |
Die meisten Unraid-Nutzer sollten unterstützende Vdevs/Subpools vermeiden, es sei denn, Sie haben spezielle und gut verstandene Bedürfnisse. Sie sind für spezialisierte Arbeitslasten ausgelegt und können Komplexität oder Risiken einführen, wenn sie missbraucht werden.
Kritische unterstützende vdev-Laufwerke beim Import nicht zugewiesen
When you import a ZFS pool into Unraid, you need to assign every drive from your original pool, including those used for support vdevs, to the pool slots. Unraid will automatically recognize each drive’s role (data, log, cache, special, or dedup) once the array starts. You don’t need to specify which drive serves what purpose manually.
Wenn Sie vergessen, ein Laufwerk, das Teil eines unterstützenden vdev war, beim Import einzubeziehen, hängt das Ergebnis von der Funktion des vdev ab:
Vdev-Typ | Wenn Laufwerk beim Import fehlt | Ergebnis |
---|---|---|
Spezial-vdev oder Dedup vdev | Pool wird nicht importiert oder ist unbenutzbar | Diese Vdevs speichern kritische Metadaten oder Deduplizierungstabellen. Ohne sie kann %%ZFS |
Log-Vdev (SLOG) | Pool wird importiert, aber die Synchronisierungs-Schreibleistung nimmt ab. | Der Pool bleibt zugänglich, aber Sie könnten eine langsamere Leistung für Arbeitslasten bemerken, die auf Synchronisierungs-Schreibvorgänge angewiesen sind. |
Cache-Vdev (L2ARC) | Pool wird importiert, aber Lesecache geht verloren. | Der Pool funktioniert normal, aber Sie verlieren den Leistungsschub durch den L2ARC-Cache. Es gehen keine Daten verloren. |
Weisen Sie beim Import in Unraid immer alle physischen Laufwerke aus Ihrem ursprünglichen ZFS-Pool zu, einschließlich aller unterstützenden Vdevs. Dies gewährleistet eine reibungslose Erkennung und Integration. Für neue Pools, die in Unraid erstellt werden, sind unterstützende Vdevs optional und im Allgemeinen für die meisten Nutzer nicht erforderlich.
Speicher erweitern
ZFS ist mächtig, aber es ist wichtig zu verstehen, wie seine Speichererweiterung funktioniert - besonders wenn Sie zukünftiges Wachstum planen.
Historisch gesehen haben ZFS-Vdevs eine feste Breite. Sie können keine Festplatte zu einem bestehenden RAIDZ-Vdev hinzufügen, um es zu vergrößern.
Möglichkeiten zur Erweiterung Ihres Pools umfassen:
- Hinzufügen eines neuen Vdev: Erweitern Sie Ihren Pool, indem Sie ein weiteres Vdev hinzufügen (wie eine neue Spiegelung oder RAIDZ-Gruppe). Dies erhöht die Kapazität, aber Sie müssen Festplatten in Sets hinzufügen, die der Konfiguration des Vdevs entsprechen.
- Ersetzen von Laufwerken durch größere: Tauschen Sie jedes Laufwerk in einem Vdev nacheinander gegen eine größere Festplatte aus. Siehe Laufwerkaustausch für detaillierte Verfahren. Nachdem alle Laufwerke ersetzt wurden und der Pool sich aufgelöst hat, erhöht sich die Kapazität des Vdevs.
- Erstellen eines neuen Pools: Das Starten eines neuen ZFS Pools hält Dinge für verschiedene Datentypen oder Arbeitslasten organisiert und unabhängig.
Bevor Sie Ihren Pool aufbauen, überlegen Sie, wie viel Speicher Sie benötigen werden - nicht nur heute, sondern auch in Zukunft. ZFS belohnt gute Planung, besonders wenn Sie disruptive Upgrades später vermeiden möchten.
Die Verwendung von ZFS-Pools auf einem vorhandenen Unraid-Server
Wenn Sie ein traditionelles Unraid array laufen haben und ZFS Pools hinzufügen möchten, finden Sie hier einige effektive Möglichkeiten, sie zu integrieren:
Anwendungsfall | Beschreibung | Details/Beispiele |
---|---|---|
Schneller SSD/NVMe-Pool für App-Daten & Docker | Store the appdata share for fast, responsive containers and databases. This supports snapshots for easy rollbacks and can also host VMs for high I/O. | Viele Nutzer wählen hierfür einen 2-Festplatten-%%ZFS |
%%ZFS | zfs%%-Pool für wichtige Daten | Use a ZFS mirror or RAIDZ2 pool for irreplaceable files like photos, tax records, and user share data. ZFS checks for corruption and self-heals with redundancy. |
Tägliches Backup oder Replikationsziel | Use a ZFS disk (even within the Unraid array) as a replication target. You can replicate other pools locally or from another Unraid server. | Nutzen Sie zfs send/receive oder Tools wie Syncoid für schnelle und zuverlässige Backups und Wiederherstellungen. |
%%Snapshot | snapshot%%-basierter Wiederherstellungspool | Keep point-in-time snapshots of critical data or containers. snapshots can be auto-scheduled and are space-efficient. |
Vermeidung häufiger ZFS-Fehler
ZFS ist ein leistungsfähiges Dateisystem, aber es gibt mehrere häufige Fallstricke, die seine Vorteile untergraben können. Es ist wichtig, die folgenden Punkte zu beachten, bevor Sie Ihren Pool konfigurieren für eine reibungslosere Erfahrung:
-
Unterschiede in der Festplattengröße in RAIDZ: ZFS behandelt alle Festplatten in einem RAIDZ-Vdev als die Größe der kleinsten. Um die beste Effizienz zu gewährleisten, verwenden Sie immer identisch große Laufwerke in jedem Vdev.
-
Erweiterung von RAIDZ-Vdevs über das WebGUI: Während Unraid 7.1.x und neuer die Erweiterung von RAIDZ über die Befehlszeile unterstützt, ist diese Funktion im WebGUI noch nicht verfügbar. Verwenden Sie vorerst die CLI, um zu erweitern, oder fügen Sie neue Vdevs über das GUI hinzu.
-
ZFS disk vs. full zpool: A single ZFS-formatted disk in the Unraid array does not offer the redundancy or features of a dedicated ZFS pool. To leverage advanced functionality, use standalone pools.
-
Deduplizierung ohne ausreichenden RAM: Deduplizierung erfordert erheblichen Speicher, und wenn Sie es ohne genügend RAM aktivieren, kann die Leistung erheblich beeinträchtigt werden. Aktivieren Sie die Deduplizierung nur, wenn Sie die Anforderungen vollständig verstehen.
-
Vdev-Redundanz ist lokal: Die Redundanz in ZFS ist lokal für jedes Vdev und wird nicht über den Pool verteilt. Stellen Sie sicher, dass Sie Ihr Vdev-Layout planen, um das gewünschte Maß an Belastbarkeit zu erreichen.