Ich habe einen Server, der für wissenschaftliche Berechnungen verwendet wird. Jeder Benutzer hat eine virtuelle Maschine (Linux oder Windows) zur Nutzung. Das Problem besteht darin, dass die durch diese Berechnungen generierten Berichte sehr viel Speicherplatz beanspruchen, wenn viele Benutzer diesen Server verwenden.
Ich möchte wissen, ob es eine Möglichkeit gibt, die Ausgaben zu komprimieren, nicht nachdem der Bericht fertig ist, sondern wenn er auf die Festplatte geschrieben werden soll.
Aktualisierung 1:Wir verwenden Vsphere als Hypervisor und HDD zur Speicherung
Antwort1
Sie können Ihren Speicher inline komprimieren und/oder deduplizieren. Dafür gibt es mehrere Möglichkeiten – manche einfacher, manche effektiver.
Zunächst einmal können Linux- und UNIX-Systeme ZFS verwenden – ein Dateisystem und einen Volume-Manager, der sowohl Komprimierung als auch Deduplizierung auf Blockebene unterstützt. Jedes darauf aufbauende gemeinsam genutzte oder lokale Speichersystem kann diese Funktionen nutzen, sodass etwas so Einfaches wie NFS auf ZFS mit einem gemeinsamen Pool über alle VMs hinweg alles tun kann, was Sie möchten.
Linux kann btrfs verwenden, ein Dateisystem für mehrere Geräte, das Inline-Deduplizierung und -Komprimierung unterstützt. Dieselben Ideen wie oben. Btrfs hat weniger Hardwareanforderungen als ZFS, aber Inline-Deduplizierung ist immer noch ziemlich intensiv (da Sie es am besten über einen größeren gemeinsam genutzten Datensatz mit einem der beiden Dateisysteme durchführen). Bei btrfs sollten Sie bedenken, dass es in erster Linie ein Dateisystem und erst in zweiter Linie ein Volume-Manager ist. Es bietet auch keine blockbasierten Abstraktionen wie ZFS, es ist also ein rein dateibasiertes System.
Es gibt mehrere NAS/SAN-Angebote, die diese Funktionalität beinhalten. Die Verwendung eines solchen für gemeinsam genutzten Speicher würde Deduplizierung und Komprimierung sinnvoll nutzen, während es sich gleichzeitig um ein vorgefertigtes und unterstütztes Produkt handelt. FreeNAS ist ein Beispiel für ein solches System, das ZFS verwenden kann. Synology NAS-Geräte können auch btrfs verwenden und tun dies häufig auch.
Antwort2
Ich stimme mit @SmallLoanOf1M überein, aber eine weitere Idee, die Sie umsetzen könnten, wäre, die Berichte tatsächlich innerhalb der VM zu komprimieren – auf diese Weise belasten Sie den zugrunde liegenden Hypervisor (d. h. Xen Dom0) nicht und bewegen ihn innerhalb der CPU-Grenzen der VM.
Wenn Sie die Daten weiterleiten können, können Sie immer Folgendes tun:
report-generator-program | lz4 > report-file.lz4
Oder verwenden Sie es gzip
, wenn Sie eine langsamere, aber bessere Komprimierung wünschen oder xz
wenn Sie Ihre CPU zum Schmelzen bringen möchten.