Kurze Antwort:

Kurze Antwort:

Ich habe im Internet viele kontroverse Aussagen zu ZFS auf Systemen mit geringem Arbeitsspeicher gelesen, aber die meisten Anwendungsfälle betrafen die leistungsstarke Datenspeicherung.

Ich möchte ZFS nicht aus Leistungsgründen verwenden, sondern weil es transparente Komprimierung und Deduplizierung unterstützt (letzteres ist möglicherweise optional) und immer noch ausgereifter zu sein scheint als BTRFS. Ich möchte keine RAID-Konfiguration verwenden.

Ich möchte es auf einem Laptop als Root- und Home-Dateisystem verwenden, und Speicherplatz und Datensicherheit (Wiederherstellung nach Stromausfall oder anderen zufälligen Inkonsistenzen, sehr geringes Beschädigungsrisiko aufgrund von wenig RAM usw.) sind wichtiger als die Festplattenleistung. Ich möchte eine vergleichbare Sicherheit wie bei ext2/3/4.

Ich möchte ext4 auf einem ZVOL verwenden.

Die Fragen lauten also:

  • Kann ZFS so konfiguriert werden, dass es funktioniertzuverlässigmit „wenig RAM“, wenn IO-Leistung/Caching keine Rolle spielen und keine RAID-Funktionalität gewünscht ist?
  • Wie ändert sich der benötigte RAM, wenn ich ZFS nicht selbst als Dateisystem verwende, sondern nur ZVOLs einsetze, auf die ich ein weiteres Dateisystem lege?
  • Wie ändert sich der benötigte RAM, wenn die Deduplizierung aktiviert ist? Wenn die Deduplizierung aktiviert ist und der RAM knapp wird, ist sie dann immer noch sicher? Kann ZFS die Deduplizierung einfach aussetzen und weniger RAM verwenden?
  • Ist es möglich, die automatische Deduplizierung zu deaktivieren, sie aber von Zeit zu Zeit manuell auszuführen?
  • Kann ext4 auf einem ZVOL meine Daten auch bei geringem RAM zuverlässig speichern, und sind die Erfolgschancen für Reparaturen bei Inkonsistenzen hoch (wie bei ext2/3/4)? Erhöht ext4 auf einem ZVOL die Robustheit, weil es die Robustheit von ext4 hinzufügt, oder sind die Daten so robust wie das zugrunde liegende ZVOL?

Systemspezifikationen:

  • Linux
  • 8 GiB RAM (gemeinsam mit der Grafikkarte), aber der Großteil (mindestens 7 GiB) davon sollte für Userspace-Software verfügbar sein,
  • ca. 700 GiB SSD-Speicher zur Nutzung für das ZFS,
  • möglicherweise auf einem anderen System 128 GiB eMMC zur Verwendung für ZFS.
  • Aktuelle Festplattennutzung ( du -shder größeren Verzeichnisse unter /) (/ ist ext4, /var darüber gemountet ist Reiserfs) (möchte das auf einen Speicher mit transparenter Komprimierung verschieben):

    74M     /etc
    342G    /home
    5.0G    /opt
    1.5G    /root
    261M    /tmp
    35G     /usr
    30G     /var
    

ODER einfach BTRFS verwenden (habe gelesen, dass es aufgrund von „Bugs“ zu schwerwiegenden/schwer wiederherstellbaren Datenverlusten kommen kann, aber das ist alles umstritten …)?

Antwort1

Kurze Antwort:

  • Ja, es ist möglich, mit ZFS erfolgreich wenig RAM (~ 1 GB) zu verwenden.
  • Sie sollten keine Deduplizierung verwenden, aber RAID und Komprimierung sind normalerweise ok.
  • Sobald Sie die Duplizierung aktiviert haben, funktioniert sie für alle neu geschriebenen Daten und Sie können sie nicht mehr so ​​einfach löschen.
  • Sie können die Deduplizierung nicht nachträglich aktivieren, da sie nur für Onlinedaten funktioniert.
  • Ihre Idee ist ohne guten Grund unnötig komplex, daher würde ich empfehlen, einfach ZFS zu verwenden und es dabei zu belassen.

Lange Antwort:

Kann ZFS so konfiguriert werden, dass es zuverlässig mit „wenig RAM“ funktioniert, wenn die IO-Leistung/das Caching keine Rolle spielt und keine RAID-Funktionalität gewünscht wird?

Ja, sogar mit aktivierten RAID-Funktionen. Sie benötigen viel weniger, als die Leute im Internet behaupten. Sehen Sie sich beispielsweise diesen Typen an, der einen schnellen Dateiserver mit FreeBSD, 2 Kernen und768 MBvirtualisiert. Oder werfen Sie einen Blick in den SolarisInternals Guide (derzeit nur über archive.org verfügbar), in dem 512 MB als absolutes Minimum, 1 GB als Mindestempfehlung und 2 GB als absolute Empfehlung erwähnt werden.

Ich würde mich jedoch von Deduplizierung fernhalten. Nicht, weil es aufgrund des Paging-Speichers langsam ist, sondern weil Sie nicht zu Nicht-Deduplizierung zurückkehren können, wenn Ihr System zum Stillstand kommt. Außerdem ist es ein Kompromiss zwischen RAM und Festplatten, und auf einem Budgetsystem haben Sie keines von beidem, sodass Sie nicht viel gewinnen.

Wie ändert sich der benötigte RAM, wenn ich ZFS nicht selbst als Dateisystem verwende, sondern nur ZVOLs einsetze, auf die ich ein weiteres Dateisystem lege?

Sie benötigen zusätzlichen Speicher für das zweite Dateisystem und für die Schicht über ZFS, je nachdem, wie Sie darauf zugreifen möchten (Virtualisierung wie KVM, FUSE, iSCSI usw.).

Wie ändert sich der benötigte RAM, wenn die Deduplizierung aktiviert ist? Wenn die Deduplizierung aktiviert ist und der RAM knapp wird, ist sie dann immer noch sicher? Kann ZFS die Deduplizierung einfach aussetzen und weniger RAM verwenden?

Sie können die Deduplizierung nicht unterbrechen, aber Ihre Daten sind trotzdem sicher. Es wird viel Speicher ausgelagert und gewartet, daher ist sie möglicherweise nicht sehr nützlich. Die Deduplizierung ist online. Um sie zu deaktivieren, müssen Sie die Deduplizierung ausschalten und alle Daten erneut schreiben (was im Wesentlichen bedeutet, dass alle Daten in ein neues Dateisystem kopiert und das alte gelöscht wird).

Ist es möglich, die automatische Deduplizierung zu deaktivieren, sie aber von Zeit zu Zeit manuell auszuführen?

Nein, da es keine Auswirkungen auf ruhende Daten hat. Wenn Sie Deduplizierung aktiviert haben und einen Block schreiben möchten, prüft ZFS, ob dieser in der Deduplizierungstabelle vorhanden ist. Wenn ja, wird der Schreibvorgang verworfen und eine Referenz zur Deduplizierungstabelle hinzugefügt. Wenn nicht, wird er geschrieben und die erste Referenz hinzugefügt. Das bedeutet, dass Ihre alten Daten von Deduplizierung nicht betroffen sind und das Aktivieren der Deduplizierung ohne Schreiben eines neuen Blocks keine Auswirkungen auf die verwendete Größe der alten Daten hat.

Kann ext4 auf einem ZVOL meine Daten auch bei geringem RAM zuverlässig speichern, und sind die Erfolgschancen für Reparaturen bei Inkonsistenzen hoch (wie bei ext2/3/4)? Erhöht ext4 auf einem ZVOL die Robustheit, weil es die Robustheit von ext4 hinzufügt, oder sind die Daten so robust wie das zugrunde liegende ZVOL?

Das ist meiner Meinung nach unnötige Komplexität, da man keine neuen Features (wie im umgekehrten Fall mit ext4 unten und ZFS oben, zB Snapshots) bekommt und zusätzlich noch einige neue Aufgaben wie z.B. fsckmehr fdiskFormatierungsübungen bekommt.

Der einzige Anwendungsfall, in dem ich so etwas tun würde, wäre eine spezielle Anwendung, die die Low-Level-Funktionen eines bestimmten Dateisystems erfordert oder fest codierte Annahmen hat (glücklicherweise scheint dieses Verhalten in letzter Zeit ausgestorben zu sein).

Antwort2

user121391 hat Ihnen hervorragende Informationen gegeben, daher werde ich nur auf Ihre Bedenken hinsichtlich des Gedächtnisses eingehen.

Was den Speicher angeht, kann ZFS ein Speicherfresser sein. Es nutzt freien Systemspeicher für die Zwischenspeicherung. Im Laufe der Jahre hat Sun, jetzt Oracle, die Leistung, Zuverlässigkeit und Speichernutzung verbessert. Sie können die ZFS-Interna/Evil-Tuning-Anleitungsseite überprüfen oderZFS-Blogfür Einzelheiten. Die meisten dieser Optimierungen und Funktionen sind jedoch möglicherweise nur in der Solaris 11.x-Version von ZFS zu finden.

Wenn Sie wirklich wegen des Speichers besorgt sind, sollten Sie Dedup nicht verwenden, da es ziemlich viel Speicher erfordert, da Deduplizierungen aktiv sind und die Deduplizierungstabelle im Speicher halten müssen.

verwandte Informationen