Copias de seguridad fáciles con el sistema de ficheros HAMMER


Al fin he podido avanzar un poco en uno de mis mini-proyectos. Una versión inicial del script hammer-backup ha sido publicada en la rama maestra en el repositorio de DragonFly BSD, puedes ver el commit aquí.

Para aquellos que no lo sepan, DragonFly BSD es una bifurcacion (fork en inglés) de FreeBSD 4.x. Su líder, Matthew Dillon, implementó un sistema de ficheros del tipo “log structured” desde cero llamado HAMMER. Se divide en “subsistemas de ficheros” independientes llamados PFS (del inglés pseudo-filesystem).

La instalación estándar de DragonFly BSD con un sistema de ficheros HAMMER proporciona, por defecto, una distribución de PFSes como se ve a continuación:

koprulu# df -h
Filesystem                                               Size   Used  Avail Capacity  Mounted on
ROOT                                                     926G    14G   912G     2%    /
devfs                                                    1.0K   1.0K     0B   100%    /dev
/dev/part-by-uuid/cb4561e2-8aaf-11e3-9867-535400123456   1.2G   303M   784M    28%    /boot
/pfs/@@-1:00001                                          926G    14G   912G     2%    /var
/pfs/@@-1:00002                                          926G    14G   912G     2%    /tmp
/pfs/@@-1:00003                                          926G    14G   912G     2%    /usr
/pfs/@@-1:00004                                          926G    14G   912G     2%    /home
/pfs/@@-1:00005                                          926G    14G   912G     2%    /usr/obj
/pfs/@@-1:00006                                          926G    14G   912G     2%    /var/crash
/pfs/@@-1:00007                                          926G    14G   912G     2%    /var/tmp
procfs                                                   4.0K   4.0K     0B   100%    /proc

HAMMER es un sistema de ficheros que dispone de la característica “copy-on-write” que almacena cada cambio que realiza en una especie de historial. También es transaccional y cada transacción tiene un identificador asociado (TID). Aquí es donde las cosas se ponen realmente interesantes, HAMMER proporciona una herramienta para operar el sistema de ficheros mismo llamada ‘hammer’.

El contenido de cada uno de los PFS puede ser volcado a la salida estándar (stdout) y es ésta característica la que el script de copias seguridad utiliza.

Puedes comprobar como funciona el script aquí.