Sistema de archivos con deduplicación a nivel de bloque


8

Estoy buscando una solución de sistema de archivos de copia y escritura con deduplicación para datos generales del usuario, como /homecopias de seguridad de los mismos . Debe usar la deduplicación en línea / en línea / síncrona a nivel de bloque utilizando hashing seguro (para una posibilidad insignificante de colisiones) como SHA256 o TTH . Los bloques duplicados ni siquiera necesitan tocar el disco.

La idea es que debería poder copiar /home/<user>a un HDD externo con el mismo sistema de archivos para hacer una copia de seguridad. Simple. Sin perder el tiempo con copias de seguridad incrementales donde la corrupción de cualquiera de las instantáneas casi siempre romperá todas las instantáneas posteriores, y no es necesario usar una herramienta específica para eliminar o 'retirar' una instantánea. Todo debe hacerse simplemente desde el navegador de archivos sin preocupaciones. ¿Te imaginas lo fácil que sería? ¡Nunca tendría que pensar dos veces antes de retroceder!

No me importa un golpe de rendimiento, la fiabilidad es la principal preocupación. Aunque, con implementaciones específicas de cp, mvy scp, y un complemento de explorador de archivos, estas operaciones serían muy rápidas, especialmente cuando hay mucha duplicación, ya que solo tendrían que transferir los bloques ausentes. El uso accidental de herramientas de copia convencionales que no se integran con el FS simplemente llevaría más tiempo, desperdiciaría algo de ancho de banda al copiar de forma remota y desperdiciaría algo de CPU, ya que los datos duplicados se volverían a leer, se volverían a transferir y se volverían a codificar (aunque nada sería reescrito), pero absolutamente no corrompería nada. (Algunos software de intercambio de archivos también pueden beneficiarse al integrarse con el FS).

Entonces, ¿cuál es la mejor manera de hacer esto?

He visto algunas opciones:

  • lessfs - Parece sin mantenimiento. ¿Ningún bien?
  • Opendedup / SDFS - Java? ¿Podría usar esto en Android? ¿Qué significa SDFS ?
  • Btrfs : algunos parches que flotan en los archivos de la lista de correo, pero no hay soporte real.
  • ZFS : espero que algún día vuelvan a otorgar una licencia bajo una verdadera licencia compatible con GPL gratuita / de código abierto.

Además, hace 2 años probé un intento en Python usando Fuse en el nivel de archivo para usar sobre la parte superior de un FS sólido típico como EXT4, pero encontré que Fuse para Python estaba subdocumentado y no pude implementarlo todas las llamadas del sistema


No es un sistema de archivos, pero es posible que desee ver la herramienta de copia de seguridad recientemente lanzada Obnam .
JanC

@ JanC: ¡Gracias, definitivamente parece que el software de respaldo está bien hecho! Evita esto: "No perder el tiempo con copias de seguridad incrementales donde la corrupción de cualquiera de las instantáneas casi siempre romperá todas las instantáneas posteriores", pero no esto: "y no es necesario usar una herramienta específica para eliminar o 'pagar' instantánea.". Sin duda, un buen descubrimiento! Podría trabajar con algunos de los códigos de Python. :-)
James Haigh

@JamesHaigh También puede publicar esta idea en Ubuntu BrainStorm ; si aún no lo has hecho.
Samik

@JamesHaigh una de las cosas en la hoja de ruta de Obnam es un sistema de archivos basado en fusibles (pero no creo que haya una línea de tiempo que muestre cuándo esperar eso). Eso acercaría "ninguna herramienta adicional".
JanC

Si desea evitar la corrupción de una copia de seguridad que rompe las últimas, simplemente haga una copia de seguridad incremental multigeneracional. En lugar de hacer un completo el domingo y un diferencial diario que siempre es relativo al día anterior, usted, por ejemplo, realiza una copia de seguridad incremental en relación con el día completo el domingo (en lugar del martes). Entonces, si el martes es corrupto, no le importa, ya que si tiene la copia de seguridad del miércoles, se saltará el lunes y el martes al restaurar.
psusi

Respuestas:


1

Esto suena muy empresarial (como caro).

datadomain ofrece desduplicación de datos y tal vez netapp con su sistema de archivos wafl. Pero a un alto costo.

Una alternativa "gratuita" podría ser zfs.

Según yo, aunque la "mejor" y más alternativa de Linuxy, aunque en un nivel de archivo en lugar de "nivel de bloque", sería rsnapshot. Utiliza rsync y enlaces duros para administrar el control de versiones.

Prefiero confiar en herramientas probadas que usar un nuevo sistema de archivos como Btrfs, que no ha existido el tiempo suficiente para que la gente descubra todo tipo de errores desagradables.


¿Empresa? No, es más el tipo de cosas que esperaría ver por defecto en Ubuntu en el futuro debido a su simple facilidad de uso. Mencioné ZFS pero es CDDL, así que no es gratuito con una F mayúscula. rsnapshotNo es un sistema de archivos, es más bien un truco para llevar la funcionalidad de instantánea a los sistemas de archivos heredados, no crea instantáneas 'reales' (se supone que las instantáneas son atómicas ), y es incremental (ver segundo párrafo). Prefiero usar un FS relativamente nuevo que algo que use incrementales.
James Haigh

Supongo que 'nivel de archivo' es un poco ambiguo, pero he visto el término utilizado en el contexto de sistemas de archivos junto con nivel de bloque, nivel de byte y nivel de bit. Este fue el contexto que quise decir.
James Haigh

1
@JamesHaigh Según la Free Software Foundation , el CDDL es una licencia gratuita (como en libertad), simplemente no es compatible con GPL . Esto significa que el código de CDDL (como la implementación oficial de ZFS) y el código de GPL (como el kernel de Linux) no pueden vincularse legalmente , y dado que los controladores en Linux generalmente están vinculados como módulos, lo que dificulta el soporte de CDDL en sistemas operativos basados ​​en Linux.
Eliah Kagan

2
ZFS en Linux posiblemente (depende de a quién le pregunte) lo soluciona al distribuirse por separado . Alternativamente, FUSE permite que los "controladores" del sistema de archivos operen en el espacio de usuario donde no necesitan vincularse al núcleo, y también hay una versión FUSE de ZFS . Por lo tanto, tiene múltiples opciones para usar sistemas de archivos ZFS en sistemas operativos como Ubuntu que usan Linux como su núcleo. (Algunos sistemas operativos, como Debian, le permiten usar un núcleo diferente.)
Eliah Kagan

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.