Optimiertes ZFS in einer Umgebung mit wenig RAM?

10

Ich richte gerade einen Dateiserver ein und bin an dem Punkt angelangt, an dem die Datenlaufwerke tatsächlich eingerichtet werden. Das System verfügt über 4 Laufwerke (eine Betriebssystemfestplatte, 3 Datenfestplatten). Die Betriebssystemfestplatte ist als ext4 formatiert und wird nicht zum ZFS-Pool hinzugefügt (wenn ich ZFS ausführen möchte). Mein Hauptanliegen ist die Datenintegrität und das minimale Risiko eines Datenverlusts (das Zwischenspeichern von Laufwerken ist im BIOS deaktiviert). Dafür scheint ZFS der perfekte Kandidat zu sein, da es eine stabile Version für Linux hat (richtig?) Und Datenvervielfältigung, Pooling und RAIDZ unterstützt, bei denen die Festplatten nicht die gleiche Größe haben müssen.

Aber hier ist mein Problem. Der Server verfügt nur über 2 GB RAM und kann in naher Zukunft nicht aktualisiert werden. Realistisch gesehen sind nur 1,5 für ZFS verfügbar, nachdem ich alle anderen Dienste installiert habe. Maximal 10 Clients verwenden es gleichzeitig (durchschnittlich eher 4). Ist das zu niedrig, um als sicher angesehen zu werden?

Soweit ich weiß, kann ZFS in Situationen mit wenig RAM abstürzen und den Pool mitnehmen. Ich habe widersprüchliche Meinungen darüber gehört, ob Swap zur Linderung dieses Problems beiträgt (ich habe ein 20-GB-Swap-Laufwerk). Hat jemand Datenverlust mit ZFS mit wenig RAM erlebt und welche Optimierungen haben Sie vorgenommen, um dies zu verhindern?

In Anbetracht der obigen Ausführungen wäre es möglich, ZFS weiterhin auszuführen, obwohl die Ack-Größe reduziert und etwas reduziert wird, oder ist dies zu riskant?

Systemspezifikationen: 2 GB RAM 20 GB Swap-Laufwerk-Betriebssystem, Debian 7, minimale Installation, mit FTP und XBMC, DNLA (um eine Vorstellung von der RAM-Anforderung zu geben). Wird für das Streamen von Speicherservern und Musikmedien auf andere Geräte verwendet.

Thomas E.
quelle
1
Ich bin kein ZFS-Guru, aber ich kenne mich mit Dateisystemen im Allgemeinen ziemlich gut aus, und ich kenne einen Ort, auf den Sie achten müssen - große Zeit -, damit der Speicherverbrauch die Datendeduplizierung ist. Sie geben nicht an, wie groß Ihre Festplatten sind und wie viele Daten sich auf ihnen befinden. Dies ist enorm, da ZFS eine In-Memory-Nachschlagetabelle führen muss. Ich kann nicht mit anderen Bedenken sprechen, aber ich würde definitiv die Deduplizierung beenden. Außerdem ist btrfs für gesicherte Daten jetzt ziemlich ausgereift. Hast du darüber nachgedacht? Unter arstechnica.com/civis/viewtopic.php?f=16&t=1226135 finden Sie einige Erkenntnisse (mit denen einige zweifellos nicht einverstanden sind).
Ravenpi
Oh ja, das habe ich verpasst. Der Pool wird 3,35 TB groß sein (sowohl Festplatten als auch Daten, da täglich 9 Clients gesichert werden, sodass er sich wahrscheinlich schnell füllt. Ich denke, dies bedeutet zumindest keine Duplizierung, da freebsd 5 GB RAM für jeden TB Speicherplatz vorschlägt Vielen Dank für den Hinweis auf btrfs, ich war mir nicht bewusst, dass es jetzt stabil ist, ich denke, ich werde einen guten Blick darauf werfen.
Thomas E
"Stabil" ist etwas, das ich vielleicht nicht so schnell nennen möchte. man zögert, JEDES sogar irgendwie neuartige Dateisystem als "stabil" zu bezeichnen. Aber es kommt dorthin. LWN (Linux Weekly News) hat gerade eine Serie darüber gemacht; es ist gut - schau es
dir

Antworten:

5

Sie geben die Datenintegrität und das minimale Risiko eines Datenverlusts als Hauptanliegen an. Das Ausführen von ZFS mit nur 2 GB Arbeitsspeicher ist riskant und nicht ratsam. Zu wenig RAM beeinträchtigt die Leistung und war in der Vergangenheit die Ursache für zahlreiche nicht montierbare Pools. Das FreeNAS-Projekt gibt mindestens 8 GB RAM an.

Da Ihr Problem der Datenverlust ist, sollten Sie außerdem ECC-RAM verwenden. Da Ihre Box nur 2 GB RAM unterstützen kann, gehe ich davon aus, dass es sich um eine wirklich alte Box handelt, die für ZFS keine gute Wahl wäre.

So beantworten Sie Ihre Fragen:

[…] Und unterstützt die Vervielfältigung von Daten

Vergessen Sie in der Praxis die Deduplizierung, wenn Sie nicht mindestens 32 GB haben, nur als Faustregel. Abhängig von der Poolgröße benötigen Sie möglicherweise erheblich mehr RAM. Zweitens, rechnen Sie nach, wenn Deduplizierung + RAM-Kosten billiger sind als eine Handvoll zusätzlicher Festplatten. Meistens sind mehr Festplatten die billigere Alternative.

Ist das zu niedrig, um als sicher angesehen zu werden?

Ja, es ist viel zu niedrig.

Soweit ich weiß, kann ZFS in Situationen mit wenig RAM abstürzen und den Pool mitnehmen.

Das stimmt und viele Leute haben ihre Pools aufgrund des geringen Arbeitsspeichers verloren.

Ich hörte widersprüchliche Meinungen darüber, ob ein Tausch zur Linderung dieses Problems beitragen wird

Vergessen Sie den Tausch, Ihre ZFS-Box sollte niemals den Tausch verwenden.

BEARBEITEN: Wenn Sie sich abenteuerlustig fühlen und das Risiko gelegentlicher Panik oder Datenverlust nicht stören, lesen Sie die ZFS-Tuning-Anleitung und passen Sie die genannten Einstellungen an. Hier die Beispieleinstellungen für ein System mit 768MiB Speicher.

vm.kmem_size="330M"
vm.kmem_size_max="330M"
vfs.zfs.arc_max="40M"
vfs.zfs.vdev.cache.size="5M"

Andernfalls investieren Sie hundert Dollar in einen Speicherstreifen und genießen ein stabiles und leistungsfähiges System.

Marco
quelle
3
Aha. Nur um es näher zu erläutern, ja, ich habe ecc ram und die Maschine ist der HP Proliant Microserver Gen7, der bis zu 8 / 16GB RAM unterstützt. Es ist derzeit finanziell nicht tragbar, mehr RAM zu kaufen. Mir war bewusst, dass freenas 8 GB empfohlen hat. In der Dokumentation zu freebsd und Solaris wird jedoch mindestens 1 GB vorgeschlagen, was der Grund für die Frage ist. Ich denke vor diesem Hintergrund sollte ich bei ext4 bleiben und manuell mit rsync und dd auf Offline-Festplatten spiegeln, wahrscheinlich die sicherste Lösung.
Thomas E
Können Sie erläutern, warum ZFS SWAP nicht verwenden sollte?
CMCDragonkai
Es gibt keinen Grund, warum die Verwendung von ZFS ohne ECC gefährlicher ist als die Ausführung derselben Hardware mit einem anderen Dateisystem.
Alicia
5
Warum kommentiert die ZFS-Community immer mit solch arrogantem Snobismus? Nicht jeder, der zuverlässige Daten haben möchte, hat 100 US-Dollar, nur um herumzuliegen , um einige absolut lächerliche Designanforderungen zu erfüllen! Ich habe zum Beispiel einen kleinen ARM-Heimserver mit 1 GB fest verdrahtetem RAM und USB-Festplatten. Ich möchte, dass die Daten darauf vor Bit Rot geschützt sind, indem sie sowohl erkannt als auch korrigiert werden, und dass Snapshots für Sicherungszwecke vorhanden sind. Geschwindigkeit ist nicht erforderlich. Und btrfs ist vom Design her einfach kaputt. ZFS wäre also sinnvoll, wenn ein Idiot es nicht so konzipiert hätte, dass es vor Depressionen implodiert, wenn es <128 Exabyte RAM hat.
Evi1M4chine
0

Bei Systemen mit hohem Speicherdruck (Linux) ist es wirklich notwendig, den Speicher zu aktualisieren. Es gibt immer noch einen Fehler ( Link ), bei dem das Austauschen die E / A (Kernel-Hang-Task) blockiert und sie unbrauchbar macht, sofern sie nicht neu gestartet wird. Ich glaube, dass vm.swappiness = X keinen Einfluss auf zfs hat, daher könnte es ein wenig hilfreich sein, den Bogen auf eine bestimmte Anzahl zu beschränken.

satch_boogie
quelle