¿Git previene la degradación de datos?

¿Git previene la degradación de datos?

Leí que ZFS y Btrfs usan sumas de verificación para evitardegradación de datosy leí que Git tiene integridad al aplicar hash esencialmente a todo con cada confirmación.

Iba a usar un servidor Git en un NAS Linux con Btrfs RAID 1 para almacenamiento, pero si Git tiene integridad, supongo que esto no sería necesario (al menos no si todo lo que quiero es evitar la degradación de datos).

Pregunta: Entonces, ¿la integridad de Git, aunque haga hash esencialmente de todo con cada confirmación, previene o ayuda contra la descomposición de bits?

Respuesta1

El hash de Git solo ocurre en el momento en que se crean las confirmaciones y, a partir de ahí, los hashes se utilizan para identificar las confirmaciones. Esto de ninguna manera garantiza la integridad de los archivos. Los repositorios de Git pueden corromperse y perder datos. De hecho, git tiene un comando incorporado para detectar este tipo de pérdida,gitfsck, pero como dice la documentación, usted es responsable de restaurar los datos dañados a partir de las copias de seguridad.

Respuesta2

Depende de lo que quieras decir con "prevenir".

(En primer lugar, bit-rot es un término con múltiples definiciones. Esta pregunta esnoacerca deEl código se vuelve inejecutable debido a la falta de mantenimiento..)

Si con "prevenir" quiere decir que probablemente detectará corrupción por descomposición de bits, sí, funcionará. Sin embargo, lo haránoayuda para solucionar esa corrupción: los hashes solo proporcionan errordetección, no corrección.

Esto es lo que generalmente se entiende por "integridad": la posibilidad dedetectarmanipulación no autorizada/involuntaria de datos, no la posibilidad de prevenirla o corregirla.

Por lo general, aún querrá un RAID1 junto con copias de seguridad (posiblemente implementadas con instantáneas ZFS o similares, no estoy familiarizado con la semántica ZFS en instantáneas RAID1 +), por varias razones:

  • si un disco falla fatalmente, necesitará un RAID1 (o una copia de seguridad reciente) para restaurar sus datos; ninguna corrección de errores puede corregir la falla de un disco completo, a menos que tenga una copia completa de los datos (RAID1). Para un breve tiempo de inactividad, básicamente debes tener RAID1.

  • Si elimina accidentalmente partes o la totalidad del repositorio, necesita una copia de seguridad (RAID1 no lo protege ya que refleja inmediatamente el cambio en todos los dispositivos)

RAID1 a nivel de bloque (por ejemplo, a través de LVM o similar) con solo dos discos en sí mismonoSin embargo, le protegerá contra el deterioro silencioso de los datos: el controlador RAID no puede saber cuál de los dos discos contiene los datos correctos. Necesita información adicional para eso, como una suma de verificación sobre los archivos. Aquí es donde entran en juego las sumas de comprobación ZSF y btrfs: se pueden utilizar (lo que no quiere decir que seansonusado en estos casos, no sé cómo ZFS o btrfs manejan las cosas allí) para distinguir cuál de los dos discos contiene los datos correctos.

Respuesta3

prevenir la pudrición de bits

No, no es así, de ninguna manera. Git no introduce ninguna redundancia similar a RAID. Si los archivos de su .gitdirectorio se pudren, perderá cosas como de costumbre.

¿Ayuda contra la putrefacción?

Aaaa...no. No ayuda contra la pudrición de la broca, pero ayudará a detectarla. Pero en ningún momento durante el uso normal lo hace por cuenta propia (bueno, obviamente lo hace cuando revisas algunos objetos y demás, pero no para tu historial). Tendría que crear trabajos cron para recalcular los hashes del contenido y compararlos con los hashes reales. Es bastante trivial hacerlo, ya que gitlos hashes son literalmente simplemente hashes de contenido, es trivial recalcularlos y git fscklo hace por usted. Pero cuando detecta bit-rot, no hay nada en particular que pueda hacer contra él. Específicamente, como los fragmentos más grandes se comprimen automáticamente, es probable que incurra en una pérdida total de fragmentos si se voltea un bit en un objeto más grande.

información relacionada