Git-Hashing geschieht nur zu dem Zeitpunkt, zu dem Commits erstellt werden, und von dort aus werden die Hashes zum Identifizieren der Commits verwendet. Dies stellt keinesfalls die Integrität der Dateien sicher. Git-Repos können beschädigt werden und Daten verlieren. Git hat zwar einen integrierten Befehl zum Erkennen dieser Art von Verlust, git fsck, aber wie in der Dokumentation heißt, sind Sie für die Wiederherstellung beschädigter Daten aus Sicherungen verantwortlich.
Verhindert Git Datenverschlechterung
Ich habe gelesen, dass ZFS und Btrfs Prüfsummen verwenden, um eine Datenverschlechterung zu verhindern , und ich habe gelesen, dass Git Integrität hat, indem im Wesentlichen alles mit jedem Commit gehasht wird.
Ich wollte einen Git-Server auf einem Linux-NAS mit Btrfs-RAID 1 für die Speicherung verwenden, aber wenn Git Integrität hat, wäre dies wahrscheinlich nicht erforderlich (zumindest nicht, wenn das Verhindern von Datenverschlechterung alles ist, was ich möchte).
Frage: Also verhindert Gits Integrität, obwohl er mit jedem Commit im Wesentlichen alles hash, gegen Bit-rot?
3 Antworten auf die Frage
Kommt drauf an was du mit "verhindern" meinst.
(Zuallererst ist Bit-Rot ein Begriff mit mehreren Definitionen. Bei dieser Frage geht es nicht darum, dass Code aufgrund mangelnder Wartung nicht lauffähig ist .)
Wenn Sie mit "verhindern" meinen, dass Korruption wahrscheinlich durch Zerfall von Bits erkannt wird, funktioniert dies. Es hilft jedoch nicht, diese Beschädigung zu beheben: Die Hashes bieten nur eine Fehlererkennung, keine Korrektur .
Im Allgemeinen ist dies mit "Integrität" gemeint: Die Möglichkeit, unbefugte / unbeabsichtigte Manipulationen von Daten zu erkennen, nicht die Möglichkeit, dies zu verhindern oder zu korrigieren.
Im Allgemeinen möchten Sie immer noch ein RAID1 zusammen mit Sicherungen (möglicherweise mit ZFS-Snapshots oder ähnlichem implementiert, ich bin mit der ZFS-Semantik von RAID1 + Snapshots nicht vertraut), und zwar aus mehreren Gründen:
Fällt ein Datenträger fatal aus, benötigen Sie entweder ein RAID1 (oder ein aktuelles Backup), um Ihre Daten wiederherzustellen. Keine Fehlerkorrektur kann den Ausfall einer ganzen Festplatte korrigieren, es sei denn, sie verfügt über eine vollständige Kopie der Daten (RAID1). Für eine kurze Ausfallzeit benötigen Sie grundsätzlich RAID1.
Wenn Sie versehentlich Teile oder das gesamte Repository löschen, benötigen Sie eine Sicherungskopie (RAID1 schützt Sie nicht, da die Änderung sofort für alle Geräte gilt).
RAID1 auf Blockebene (z. B. über LVM oder Ähnliches) mit nur zwei Festplatten an sich schützt Sie jedoch nicht vor Datenverlust im Hintergrund: Der RAID-Controller kann nicht wissen, auf welcher der beiden Festplatten sich die korrekten Daten befinden. Dazu benötigen Sie zusätzliche Informationen, wie eine Prüfsumme über Dateien. Hier werden die ZSF und Btrfs Prüfsummen kommen: sie verwendet werden können (was nicht heißt, dass sie sich in diesen Fällen verwendet werden, ich weiß nicht, wie ZFS oder Btrfs Dinge behandeln dort) zu unterscheiden, welche der beiden Scheiben hält die korrekten Daten.
Bitfäule verhindern
Nein, auf keinen Fall. Es gibt keine RAID-artige Redundanz, die von git eingeführt wurde. Wenn die Dateien in Ihrem .git
Verzeichnis unter Bit-Rot leiden, werden Sie wie gewohnt Sachen verlieren.
Hilfe gegen Bitfäule?
Yyyy ... nein. Es hilft nicht gegen Bitfäule, aber es hilft, Bitfäule zu erkennen. Dies geschieht jedoch während des normalen Gebrauchs zu keinem Zeitpunkt auf eigene Rechnung (naja, natürlich beim Auschecken von Objekten usw., aber nicht für Ihre Historie). Sie müssen Cron-Jobs erstellen, um die Hashes aus dem Inhalt neu zu berechnen und mit den tatsächlichen Hashwerten zu vergleichen. Es ist ziemlich trivial, dies zu tun, da git
Hashes buchstäblich nur die Inhaltshashes sind. Es ist trivial, sie neu zu berechnen, und git fsck
tut dies für Sie. Wenn es aber Bit-rot erkennt, kann es nichts Bestimmtes dagegen tun. Da größere Blöcke automatisch komprimiert werden, ist es wahrscheinlich, dass ein Gesamtverlust auftritt, wenn ein Teil eines größeren Objekts umgedreht wird.
Verwandte Probleme
-
11
Lohnt sich die Verwendung von ZFS und RAID-Z in einem hausgemachten NAS (zum Beispiel FreeNAS)
-
3
Um Mail für `git am` arbeiten zu lassen
-
8
Verwenden von Git zum Verwalten einer iTunes-Bibliothek?
-
8
Git Client für OS X & Windows?
-
11
Gibt es Anwendungen für die verteilte Revisionskontrolle (DVCS), wenn ich kein Programmierer bin?
-
14
Wie kann ich git-completion.bash unter Mac OS X zum Laufen bringen?
-
2
Wie man "git pull" wieder wie erwartet zum Laufen bringt
-
2
Git - GitHub Repository Setup möglich?
-
9
Wie kann ich ein Commit zurücksetzen?
-
3
git-receive-pack: Befehl nicht gefunden