Welches ZFS-ähnliche Dateisystem kann die Volume-Auswahl basierend auf Dateizugriffsmustern optimieren?

2

Gibt es ein redundantes RAID / ZFS-ähnliches Dateisystem, das die Platzierung von Dateien basierend auf ihren Zugriffsmustern optimieren kann? Mein Ziel ist es, ein Desktop-System zu erstellen, das Dateien automatisch zwischen einer Festplatte, einem Solid-State-Laufwerk und einer RAM-Disk verschiebt, je nachdem, wie und wie oft auf sie zugegriffen wird, um den Verschleiß durch eine opportunistische Volumenauswahl zu kontrollieren. Beispielsweise werden Dateien, die häufig gelesen (und nur zum Lesen geöffnet) werden, auf einer SSD abgelegt. Dateien, die häufig gelesen, aber für Lese- und Schreibzugriff geöffnet werden, werden auf einer RAM-Platte abgelegt. Dateien, auf die selten zugegriffen wurde, wurden auf die Festplatte verschoben.

Ich stelle mir ein intelligentes virtuelles Dateisystem vor, das Zugriffsmuster automatisch erkennt und die Platzierung des physischen Volumes optimiert. Ich habe jedoch das hinterhältige Gefühl, dass ein ähnlicher Effekt erzielt werden könnte, wenn man ein primäres Dateisystem auf der Festplatte, eine Auslagerungspartition auf der SSD und eine große Menge RAM für einen Dateisystem-Cache reserviert.

Der Nachteil der obigen (einfachen) Lösung ist, dass sie gegenüber den Schwächen der zugrunde liegenden Hardware unempfindlich ist. Beispielsweise führen Schreibvorgänge dazu, dass SSDs schneller ausfallen - und HDs sind noch anfälliger. RAM kann jedoch nahezu unbegrenzt geschrieben werden, ohne dass dies fehlschlägt. Das Dateisystem sollte diese Eigenschaften nutzen, um die Lebensdauer des Geräts zu maximieren.

RubyTuesdayDONO
quelle

Antworten:

3

Sie sollten sich Btrfs ansehen , insbesondere die ausgleichenden Teile. Es kann Code enthalten, der entweder genau oder in der Nähe dessen ist, was Sie benötigen und auf dem Sie aufbauen können.

Das System, wie Sie es beschreiben, ist fast cacheartig und kann gewiss als Add-On zu vorhandenen Dateisystemen in gewissem Umfang durchgesetzt werden. Einige wichtige Dinge im Allgemeinen:

  • Festplattencontroller verbreiten Schreibvorgänge nicht sofort, was bedeutet, dass beim schnellen Schreiben derselben Datei in kurzer Zeit die zugrunde liegende Hardware nicht so oft aktualisiert wird.
  • SSDs sind nicht mehr so ​​schwach wie früher und überleben so viel wie eine Festplatte, wenn nicht sogar mehr. Der Mangel an beweglichen Teilen ist großartig!
  • Ihr vorgeschlagenes Design ist nur dann nützlich, wenn sich die Zugriffsmuster nicht wie bei jedem anderen Cache zu oft ändern. Async I / O hat in den letzten Jahren die wahrgenommenen Festplatteninteraktionszeiten beschleunigt, hängt jedoch manchmal von der Unterstützung auf Anwendungsebene ab. Auf der anderen Seite kann das Affen-Patchen des Betriebssystems, um die In-RAM-Kopie der Datei für Anwendungen bereitzustellen, während AIO auf der Festplatte ausgeführt wird, zu einer Datenbeständigkeit führen, die ein reines In-Memory-System nicht bietet (siehe : memcached, und warum wird dringend davon abgeraten, als Persistenzmodul verwendet zu werden)

Ich verstehe, dass das Endziel darin besteht, für das Betriebssystem / den Benutzer / die Anwendungen so transparent wie möglich zu sein, nur ein Volume / Laufwerk / Partition zu präsentieren und sich intern um alles zu kümmern. Ich bin mir nicht sicher, ob der Desktop das beste Ziel für ein solches System ist, da ich bezweifle, dass er so nützlich ist, als ob er für Server erstellt wurde.

PS In der Hardware gibt es das als Hybridantrieb schon länger . Der RAM-Teil wird nicht verwendet, aber andererseits würden Desktop-Benutzer es sowieso nicht wirklich bemerken. Ein weiterer Vorschlag ist der Combo Drive und Google Scholar hat noch andere.

Roguesys
quelle
Hybridantriebe scheinen eine gute Idee zu sein, aber ich denke nicht, dass die Leistungsökonomie wirklich da ist. Ich bin damit einverstanden, dass diese Art der mehrstufigen Zwischenspeicherung in Serverumgebungen nützlich ist, aber nicht für die meisten Desktopbenutzer.
Jcrawfordor
3

ZFS führt diese Optimierung bereits automatisch durch. Fügen Sie einfach eine SSD als Cache-Gerät in Ihren Pool ein und Ihre Dateien (tatsächlich Datenblöcke) werden gefunden, von den weniger bis zu den aktivsten:

  • auf den regulären Datenträgern
  • auf den SSDs (L2ARC)
  • im RAM (ARC)

Der von ZFS ARC (Adaptive Replacement Cache) verwendete Algorithmus basiert sowohl auf den am häufigsten verwendeten als auch auf den zuletzt verwendeten Blöcken.

http://blogs.oracle.com/brendan/entry/test

jlliagre
quelle
1

Vielleicht möchten Sie einen Blick in den bcache werfen: http://bcache.evilpiepirate.org/

Es sieht vielversprechend aus, aber ich habe es noch nicht versucht.

hurikhan77
quelle
sehr interessant! Ich habe noch nicht fertig gelesen, aber ich frage mich, ob es auch RAM-Cache vor der SSD verwenden kann. das wäre perfekt!
RubyTuesdayDONO
Ich glaube nicht, dass das Speichern von bcache auf einer RAM-Disk irgendwelche Vorteile bringt - hier ist der Cache des Linux-Dateisystems hervorragend. Bcache geht viel tiefer, wenn es darum geht, einen riesigen Cache (im Vergleich zu RAM) zu ermöglichen, der für den Direktzugriff optimiert ist, mit dem sich SSDs (im Vergleich zu Festplatten) auszeichnen. Bcache geht davon aus, dass es mit nichtflüchtigem Speicher funktionieren wird - RAM-Datenträger sind daher nicht die beste Wahl, obwohl dies möglich wäre.
Hurikhan77