Gibt es ein git-ähnliches Dateisystem?

27

Git speichert den Inhalt basierend auf dem berechneten Hash einer Datei eindeutig in seinem Repo. Wenn sich in meinem Verzeichnis zwei Kopien derselben Datei befinden, wird sie von git nur einmal gespeichert.

Ich frage mich, ob dasselbe Konzept auf Betriebssystemebene als eine Art Dateisystem implementiert wurde.

Wenn sich ein Dateisystem standardmäßig so verhält, würde es bei Problemen mit der DLL-Hölle hilfreich sein . Im Wesentlichen würde es automatisch in Ihrem Namen verlinken. Jede Anwendung kann (wie ein JAR) in ein Verzeichnis mit all seinen Abhängigkeiten gepackt werden, ohne dass zusätzliche Speicherkosten anfallen.

Ruby-Enthusiasten teilen Bibliotheken, indem sie sie als Rubygems veröffentlichen. Diese Bemühungen, Edelsteine ​​zu teilen, führten jedoch zu Albträumen bei der Bereitstellung, die zum Konzept von Vendor Everything führten, bei dem alle Abhängigkeiten in lokale Ordner kopiert wurden, um solche Albträume zu vermeiden.

Mario
quelle
2
Ich bin kein Experte, aber schauen Sie sich ZFS an .
ForeverWintr

Antworten:

21

Was Sie suchen, heißt "Deduplizierung". Während es normalerweise von Anbietern spezialisierter Speicherprodukte implementiert wird, implementiert das ZFS-Dateisystem es ebenfalls. Die meisten von Unix abgeleiteten Betriebssysteme können ZFS verwenden, und ich würde es daher als ersten Blickfang empfehlen.

Aaron Miller
quelle
1
Ich sehe, dass "Deduplizierung" auf Dateiebene implementiert werden kann, worum es mir besonders ging.
Mario
3

Network Appliance, Inc. ist seit vielen Jahren in der Lage, solche Daten zu speichern. Tatsächlich wurden bei Sun Microsystems Beschwerden über das ZFS-Dateisystem eingereicht, und Aaron Miller macht das, was er in seiner akzeptierten Antwort erwähnt. Für das, was es wert ist, wurden die Beschwerden nach ca. 3 Jahren bei Oracle beigelegt.

Ich benutze diese seit 2000 als Unternehmenslösung und sie funktioniert gut. Die Kosten für die Speicherung nach der ersten 'Kopie' entstehen, sobald eine Änderung in der Datei vorliegt. Ansonsten kommt bei vielen "Kopien" nur eine geringfügige Erhöhung für den Namensraum.

Ich denke, dies beantwortet nicht die Frage nach der "Betriebssystemebene", sondern nach der "Dateisystemebene".

vgoff
quelle
0

Das neue Apple-Dateisystem (APFS, so genannt, weil es bereits ein AFS gab, das etwas anderes war) bewirkt diese "automatische Hardlinking" / "Deduplizierung" -Magie. macOS 10.13 unterstützt es nativ (auf den meisten Macs), ebenso wie iOS 11.

Abgesehen davon glaube ich nicht, dass dies ausreicht, um es "git like" zu machen, da es, wenn es "git like" wäre, auch eine kryptografische Prüfsumme des Zustands meiner Verzeichnisstruktur zu bestimmten Zeitpunkten haben würde, so dass Ich konnte sicher sein, dass niemand meinen Computer gehackt oder meine Systemverzeichnisse geändert hatte. Tatsächlich verwende ich Git-Repos, um bestimmte kritische Systemverzeichnisse auf meinen Macs zu verfolgen, wie Apache-Konfigurationsdateien, LaunchDaemons, LaunchAgents und einige andere - auf diese Weise kann ich nachsehen, ob etwas auf meinem Server installiert oder ausgeführt wurde vermasselt.

APFS bietet auch eine raffinierte Unterstützung für das Auslagern von Dingen aus dem Dateisystem in die Cloud, wenn sie eine Weile nicht mehr verwendet wurden, aber dennoch so aussehen, als wären sie vorhanden, und sie werden bei Bedarf wieder aus der Cloud geladen.

Man könnte immer einen Hackintosh bauen und damit herumspielen. BSD macht Spaß.

CommaToast
quelle