2009-12-14 5 views
5

Viele Dateispeichersysteme verwenden Hashes, um eine Duplizierung derselben Dateiinhaltsdaten zu vermeiden (neben anderen Gründen), z. B. verwenden Git und Dropbox beide SHA256. Die Dateinamen und Daten können unterschiedlich sein, aber solange der Inhalt den gleichen erzeugten Hash erhält, wird er nie mehr als einmal gespeichert.Verwenden gängige Betriebssystem-Dateisysteme Hashwerte, um zu vermeiden, dass dieselben Inhaltsdaten mehr als einmal gespeichert werden?

Es scheint, dass dies in einem Betriebssystem-Dateisystem sinnvoll wäre, um Platz zu sparen. Gibt es irgendwelche Dateisysteme für Windows oder * nix, die das tun, oder gibt es einen guten Grund, warum keiner von ihnen das tut?

Dies würde die Notwendigkeit für doppelte Dateifinder-Dienstprogramme größtenteils eliminieren, da zu diesem Zeitpunkt der einzige Speicherplatz, den Sie speichern würden, für den Dateieintrag im Dateisystem wäre, was für die meisten Benutzer nicht ausreicht bedeuten.

Edit: Wahrscheinlich könnte dies auf ServerFault gehen, aber ich denke, Entwickler sind eher zu verstehen, die Probleme und Kompromisse beteiligt.

+1

Ein Anwendungsfall ist ein Freund von mir mit vielen Tausenden von Videodateien, von denen viele doppelte Videos mit unterschiedlichen Namen sind. Er schreibt einen Code, um sie alle zu hacken und herauszufinden, welches das gleiche Video ist, damit er die Duplikate löschen kann, und mir ist aufgefallen, dass das Dateisystem das für ihn erledigen könnte. – RedFilter

Antwort

7

ZFS unterstützt Deduplizierung seit dem letzten Monat: http://blogs.oracle.com/bonwick/en_US/entry/zfs_dedup

Obwohl ich dies ein „gemeinsames“ Dateisystem nicht nennen würde (afaik wird derzeit nur von * BSD unterstützt), es ist auf jeden Fall ein sich sehen.

+2

Es wird auch von Solaris unterstützt ... – prestomation

+0

Ich plane einen Dateiserver zu bauen und Solaris ist meine Wahl genau wegen ZFS. – liori

+0

Danke für die Info! – RedFilter

2

Es würde Platz sparen, aber die Zeitkosten sind unerschwinglich. Die Produkte, die Sie erwähnen, sind bereits gebunden, so dass die Berechnungskosten von Hashing kein Flaschenhals sind. Wenn Sie auf Dateisystemebene hashen, werden alle io-Operationen, die bereits langsam sind, schlechter.

+0

... mein Punkt über die Leistung. – jldupont

+0

Aber Sie müssten nicht alle Dateien hashen, nur die, die genau die gleiche Größe wie eine andere Datei hatten ... – RedFilter

+0

Aber woher wissen Sie, dass es eine andere Datei derselben Größe gibt? Würden Sie das als Index speichern? die Dateisystemtabelle? Dann wird das Hinzufügen/Aktualisieren von Dateien teuer, um die Suche nach Dateien mit der gleichen Größe zu unterstützen. Technisch gesehen, könnten Sie sicherlich Dateien hashen und versuchen, Duplikate zu entdecken, aber da io bereits der Ratenbegrenzer für so viele Operationen ist, bin ich mir nicht sicher, ob Sie irgendetwas tun könnten, das performant genug wäre und trotzdem 100 Prozent genau wäre. – Matt

0

Es würde eine Menge Arbeit erfordern, um dies in einem Dateisystem zu erledigen. Erstens erstellt ein Benutzer möglicherweise eine Kopie einer Datei und plant, eine Kopie zu bearbeiten, während die andere intakt bleibt. Wenn Sie also die Duplizierung eliminieren, müsste die von Ihnen erstellte feste Verknüpfung eine COW-Semantik ergeben.

Zweitens basieren die Berechtigungen für eine Datei oft auf dem Verzeichnis, in dem der Name dieser Datei platziert wird. Sie müssen sicherstellen, dass beim Erstellen Ihrer versteckten festen Verknüpfung die Berechtigungen basierend auf dem Link und nicht nur auf dem Speicherort des tatsächlichen Inhalts korrekt angewendet wurden.

Drittens sind Benutzer wahrscheinlich verärgert, wenn sie (sagen wir) drei Kopien einer Datei auf physisch getrennten Medien machen, um Datenverlust durch Hardwarefehler zu verhindern, dann herauszufinden, dass es wirklich nur eine Kopie der Wenn diese Hardware fehlschlug, verschwanden alle drei Kopien.

Das erscheint mir ein bisschen wie ein Zweitsystem-Effekt - eine Lösung für ein Problem, lange nachdem das Problem aufgehört hat zu existieren (oder zumindest von Bedeutung). Mit Festplatten, die aktuell weniger als 100 US $/Terabyte verbrauchen, ist es schwer zu glauben, dass dies den meisten Menschen einen ganzen Festplattenplatz sparen würde. An diesem Punkt ist es schwer vorstellbar, dass sich die meisten Menschen viel kümmern.

+0

Interessant, war mir nicht bewusst, COW. Der zweite Punkt scheint kein Problem zu sein, da Sie den Speicherort des Inhalts ignorieren würden. Alle Berechtigungen würden auf dem Link basieren. Zum dritten Punkt macht das Speichern einer einzelnen Kopie nur auf dem gleichen physischen Laufwerk Sinn, sobald eine neue Festplatte vorhanden ist (soweit das Betriebssystem dies erkennen kann), wäre eine doppelte Kopie des Inhalts erforderlich. – RedFilter

+0

Als letzten Punkt kommt es auf die Dateigröße an, die ständig wächst. Es wäre schön, die Option zu haben, insb. Da der Inhalt dessen, was ein Dateisystem ist, sich bald über die Cloud erstrecken könnte, wäre es der Aufwand für die Berechnung über die Laufzeit wert (a la Dropbox). – RedFilter

2
+0

Danke, von hier http://blogs.techrepublic.com.com/datacenter/?p=266, gefunden "Single Instance Storage wird auch in Windows Server 2008 enthalten sein, aber nur in der Storage-Edition. Die Funktion wird nicht sein in anderen Editionen verfügbar gemacht. " Es ist auch in Exchange implementiert. – RedFilter

+0

In der nächsten Version von Exchange ist es weg. Es ist jedoch auch in Windows Home Server implementiert, darunter Win2003. – blowdart

4

NetApp hat deduplication unterstützt (das ist, was sein in der Storage-Branche genannt) im WAFL Dateisystem (ja, nicht Ihr gemeinsames Dateisystem) für ein few years jetzt. Dies ist eine der wichtigsten Funktionen, die heute in den Enterprise-Dateisystemen zu finden sind (und NetApp unterscheidet sich dadurch, dass sie dies auf ihrem primary storage auch im Vergleich zu anderen ähnlichen Produkten unterstützen, die es nur auf ihrem Backup- oder Sekundärspeicher unterstützen; sie sind zu langsam für primäre Lager).

Die Menge der Daten, die in einem großen Unternehmen mit Tausenden von Benutzern doppelt vorhanden ist, ist atemberaubend. Viele dieser Benutzer speichern die gleichen Dokumente, den Quellcode usw. in ihren Home-Verzeichnissen. Reports of 50-70% data deduplicated wurden oft gesehen, Speichern lots of space und tons of money for large enterprises.

All dies bedeutet, dass Sie, wenn Sie ein gemeinsames Dateisystem auf einer von einem NetApp Filer exportierten LUN erstellen, Deduplizierung kostenlos erhalten, unabhängig davon, welches Dateisystem in dieser LUN erstellt wurde. Prost. Finden Sie heraus, wie es funktioniert here und here.

0

btrfs unterstützt Online-Deduplizierung von Daten auf Blockebene. Ich würde duperemove empfehlen, da ein externes Werkzeug benötigt wird.