Hace 3 años | Por mr_b a linuxadictos.com
Publicado hace 3 años por mr_b a linuxadictos.com

Marcus Holland-Moritz (un inginerio de software de Facebook) dio a conocer mediante una publicacion las primeras versiones de DwarFS, un sistema de archivos de solo lectura diseñado para maximizar la compresión y reducir los datos redundantes. Este sistema de archivos usa el mecanismo FUSE y se ejecuta en el espacio del usuario, el código está escrito en C++ y se distribuye bajo la licencia GPLv3. DwarFS se asemeja a los sistemas de archivos como SquashFS, cramfs y CromFS en sus tareas , y se puede usar para crear imágenes en vivo y reducir el tamaño de archivos con una gran cantidad de duplicados y datos duplicados (por ejemplo, almacenamiento de imágenes de máquinas virtuales).

Comentarios

D

#3
BTRFS y ZFS hacen deduplicación a nivel de bloque o a nivel de archivo. Es ortogonal al Copy on Write.
https://btrfs.wiki.kernel.org/index.php/Deduplication

De hecho, Linux ya admite hacer deduplicación a nivel de bloque bajo cualquier sistema de archivos (del anterior enlace, ioctl xfs_io: https://man7.org/linux/man-pages/man8/xfs_io.8.html).

mr_b

#3 Sin duda también se podría hacer con todo sistema archivos más o menos moderno.

mr_b

No exactamente. Btrfs y ZFS tienen copy on write, que viene siendo no duplicar la información hasta que no se sobreescriba, todo ello dentro de un sistema de archivos de lectura/escritura. Pero tanto en squashfs como en este, DwarFS, la deduplicación es a posteriori, es decir, hay un proceso, el de creación del sistema de archivos de sólo lectura a partir de la información que suele estar en un sistema de archivos de lectura/escritura, que busca información duplicada y la deduplica. La diferencia es que en estos sistemas de archivos esa información para deduplicar se busca en todo el sistema de archivos (usando hashes de inodos), no sólo en archivos que se presuponen iguales.

analphabet

#2 También hay soluciones empresariales que hacen algo parecido pero en sistemas de archivos rw. Unos netapp que tengo por aquí cada cierto tiempo ejecutan un proceso que deduplica datos a nivel de bloque.

l

#2 No sé como no está inventado antes. Por ejemplo, las imagenes de disco son bastante habituales.
Hay utilidades no para guardar, sino para descargar lo minimo necesario y no descargar lo que ya tienes. Por ejemplo, jigdo que me parece buen concepto, pero no ha triunfado.
Tambien hay el Zsinc, que es como un rsync sobre http:/
https://en.wikipedia.org/wiki/Jigdo
http://zsync.moria.org.uk/

Hace tiempo lei sobre archivadores especializados en bloques grandes. No recuerdo el o los nombres. Por ejemplo, reconocia un fichero entero y si encontraba otro igual no lo duplicaba. Los zip normales utilizan bloques mas pequeños.
No se hasta que punto hay similitudes y diferencias entre archivadores y sistemas de ficheros. Un archivador que necesita leer todo el fichero como el ARJ, no valdria como sistema de ficheros.

El problemas de los archivadores de bloque grandes es que necesita mucho proceso para encontrar lo fragmentos repetidos. Tal vez seria una ayuda separar la deteccion de firmas de la compresion. Si es una imagen de disco, sabria encontrar los inicios de archivo que son el punto de partida de datos posiblemente iguales.
Para generar los archivos jigdo que necesitaban mucho proceso, habia una alternativa que generaba la ISO de CD/DVD y los jigdo y templates, a la vez y es mucho mas rapido. Tal vez se podria apreder de esa tecnica.
http://www.einval.com/~steve/software/JTE/

D

La deduplicación no es nada nueva. Btrfs y ZFS la tienen.