Deduplizierendes Dateisystem auf Blockebene


8

Ich suche nach einer deduplizierenden Copy-on-Write-Dateisystemlösung für allgemeine Benutzerdaten wie /homeund Backups davon. Es sollte eine Online- / Inline- / synchrone Deduplizierung auf Blockebene mit sicherem Hashing (für vernachlässigbare Kollisionsgefahr) wie SHA256 oder TTH verwenden . Doppelte Blöcke müssen nicht einmal die Festplatte berühren.

Die Idee ist, dass ich in der Lage sein sollte, /home/<user>mit demselben Dateisystem einfach auf eine externe Festplatte zu kopieren , um eine Sicherung durchzuführen. Einfach. Kein Herumspielen mit inkrementellen Sicherungen, bei denen eine Beschädigung eines der Snapshots fast immer alle späteren Snapshots beschädigt, und kein spezielles Tool zum Löschen oder "Auschecken" eines Snapshots erforderlich ist. Alles sollte einfach über den Dateibrowser ohne Sorgen erledigt werden. Können Sie sich vorstellen, wie einfach das wäre? Ich würde nie wieder zweimal über ein Backup nachdenken müssen!

Ich habe nichts gegen einen Leistungseinbruch, Zuverlässigkeit ist das Hauptanliegen. Mit bestimmten Implementierungen von cp, mvund scpund einem Dateibrowser-Plugin wären diese Vorgänge jedoch sehr schnell, insbesondere wenn viel dupliziert wird, da nur die fehlenden Blöcke übertragen werden müssten. Die versehentliche Verwendung herkömmlicher Kopiertools, die nicht in den FS integriert sind, würde lediglich länger dauern, beim Remote-Kopieren etwas Bandbreite verschwenden und etwas CPU verschwenden, da die doppelten Daten erneut gelesen, erneut übertragen und erneut gehasht würden (obwohl nichts wäre) neu geschrieben), würde aber absolut nichts beschädigen. (Einige Filesharing-Software kann möglicherweise auch von der Integration in den FS profitieren.)

Was ist der beste Weg, dies zu tun?

Ich habe mir einige Optionen angesehen:

  • lessfs - Sieht nicht gepflegt aus. Jeder gute?
  • Opendedup / SDFS - Java? Könnte ich das auf Android verwenden?! Wofür steht SDFS ?
  • Btrfs - Einige Patches schweben in Mailinglisten-Archiven herum, aber keine wirkliche Unterstützung.
  • ZFS - Hoffentlich werden sie eines Tages eine Lizenz unter einer echten Free / Opensource GPL-kompatiblen Lizenz neu vergeben.

Vor zwei Jahren habe ich versucht, in Python Fuse auf Dateiebene zu verwenden, um es über einem typischen soliden FS wie EXT4 zu verwenden, aber ich fand Fuse for Python unterdokumentiert und konnte es nicht implementieren Alle Systemaufrufe.


Kein Dateisystem, aber vielleicht möchten Sie sich das kürzlich veröffentlichte Backup-Tool Obnam ansehen .
Januar

@ JanC: Danke, es sieht definitiv so aus, als ob Backup-Software richtig gemacht wurde! Dies wird vermieden: "Kein Herumspielen mit inkrementellen Sicherungen, bei denen durch Beschädigung eines der Snapshots fast immer alle späteren Snapshots beschädigt werden" ... aber nicht das: "und es ist nicht erforderlich, ein bestimmtes Tool zum Löschen oder" Auschecken "von a zu verwenden Schnappschuss.". Auf jeden Fall ein guter Fund! Möglicherweise kann ich mit einem Teil des Python-Codes arbeiten. :-)
James Haigh

@JamesHaigh Vielleicht möchten Sie diese Idee auch in Ubuntu BrainStorm veröffentlichen . wenn du es noch nicht getan hast.
Samik

@JamesHaigh Eines der Dinge auf der Obnam-Roadmap ist ein auf Sicherungen basierendes Dateisystem (aber ich glaube nicht, dass es eine Zeitleiste gibt, die zeigt, wann das zu erwarten ist). Das würde "kein zusätzliches Werkzeug" näher bringen.
Januar

Wenn Sie die Beschädigung einer Sicherung vermeiden möchten, die letztere beschädigt, führen Sie einfach eine inkrementelle Sicherung mit mehreren Generationen durch. Anstatt am Sonntag eine vollständige und eine tägliche Differenz durchzuführen, die immer relativ zum Vortag ist, führen Sie beispielsweise am Mittwoch eine inkrementelle Sicherung relativ zur vollständigen am Sonntag (und nicht am Dienstag) durch. Wenn der Dienstag dann beschädigt ist, ist es Ihnen egal, da Sie bei der Wiederherstellung des Mittwochs Montag und Dienstag beim Wiederherstellen überspringen.
Psusi

Antworten:


1

Das klingt sehr unternehmerisch (wie teuer).

datadomain bietet die Deduplizierung von Daten und möglicherweise netapp mit ihrem wafl-Dateisystem. Aber zu hohen Kosten.

Eine "kostenlose" Alternative könnte zfs sein.

Meiner Meinung nach wäre die "beste" und am meisten Linuxy-Alternative, obwohl auf Dateiebene anstelle von "Blockebene", rsnapshot. Es verwendet rsync und Hardlinks, um die Versionierung zu verwalten.

Ich vertraue eher alten, bewährten Tools als der Verwendung eines neuen Dateisystems wie Btrfs, das nicht lange genug existiert, um alle möglichen bösen Fehler zu entdecken.


Unternehmen? Nein, es ist eher das, was ich in Zukunft standardmäßig in Ubuntu erwarten würde, da es einfach zu bedienen ist. Ich habe ZFS erwähnt, aber es ist CDDL, also nicht frei mit einem Großbuchstaben F. Es rsnapshotist kein Dateisystem, es ist eher ein Hack, um Snapshot-ähnliche Funktionen in ältere Dateisysteme zu bringen, es werden keine "echten" Snapshots erstellt (Snapshots sollen atomar sein ) und ist inkrementell (siehe 2. Absatz). Ich würde lieber einen relativ neuen FS verwenden als etwas, das Inkrementelle verwendet.
James Haigh

Ich denke, 'Dateiebene' ist ein wenig mehrdeutig, aber ich habe den Begriff gesehen, der im Kontext von Dateisystemen zusammen mit Block-, Byte- und Bitebene verwendet wird. Dies war der Kontext, als den ich es meinte.
James Haigh

1
@JamesHaigh Laut der Free Software Foundation ist die CDDL eine kostenlose Lizenz (wie in Freiheit), sie ist einfach nicht GPL-kompatibel . Dies bedeutet, dass der CDDL-Code (wie die offizielle ZFS-Implementierung) und der GPL-Code (wie der Linux-Kernel) nicht legal miteinander verknüpft werden können. Da Treiber unter Linux im Allgemeinen als Module verknüpft sind, behindert dies die CDDL-Unterstützung in Linux-basierten Betriebssystemen.
Eliah Kagan

2
Möglicherweise umgeht ZFS unter Linux (abhängig davon, wen Sie fragen) dies, indem es separat verteilt wird . Alternativ lässt FUSE "Treiber" des Dateisystems in einem Benutzerbereich arbeiten, in dem sie nicht selbst eine Verbindung zum Kernel herstellen müssen, und es gibt auch eine FUSE-Version von ZFS . Sie haben also mehrere Möglichkeiten, ZFS-Dateisysteme auf Betriebssystemen wie Ubuntu zu verwenden, die Linux als Kernel verwenden. (Einige Betriebssysteme, wie Debian, lassen Sie einen anderen Kernel verwenden.)
Eliah Kagan

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.