Suele ser habitual en soluciones de hosting con servidores tanto dedicados como VPS que tengamos un espacio de "FTP" en el que poder almacenar las copias de seguridad de nuestros datos. Según las características del hotsing que adquiramos, el tamaño puede oscilar entre 10GB y 100GB, habitualmente. Como posibilidades de conexión a este espacio de backup nuestro ISP nos puede ofrecer FTP, SFTP y/o SAMBA. Estos sistemas carecen de la posibilidad de hacer "enlaces duros" (hard links), lo cual es una gran desventaja si queremos utilizar rsync o alguna otra solución similar que utiliza dicho tipo de enlaces con el objetivo de ocupar menos espacio para aquellos ficheros que no han sido modificados de una rotación a otra.
En este artículo vamos a proponer una solución para solventar esta carencia y poder tener enlaces duros, además de otras ventajas adicionales.
Realmente vamos a montar un sistema de ficheros completo sobre nuestro espacio de backup utilizando todo lo siguiente:
Paso 1. Montar el espacio de backup mediante FUSE.
Lo primero que necesitamos es poder tener acceso aleatorio a un fichero que posteriormente usaremos como imagen loopback. Para ello nos podemos servir de cualquier módulo de FUSE adecuado. Dependiendo de las posibilidades de acceso al espacio de backup, deberemos utilizar la adecuada entre sshfs, smbfs o CurlFtpFS. En el ejemplo que voy a poner a continuación utilizaré sshfs, aunque con los otros el procedimiento es equivalente.
Para habilitarlo debemos poder montar el sistema de ficheros desde /etc/fstab con una línea similar a esta (adaptando las rutas, puntos de montaje y usuario/grupo):
## sshfs al espacio de backup
sshfs#usuario@backuphost:/ /mnt/sshfs fuse comment=sshfs,BatchMode=yes,noauto,allow_other,reconnect,compression=yes,uid=usuario,gid=grupo 0 0
Debemos asegurarnos de que el sistema de ficheros se puede montar de forma automática en el arranque ejecutando con credenciales de root el comando:
# mount /mnt/sshfs
En caso de que nos solicite la contraseña para el usuario, deberemos utilizar autentificación por clave pública RSA de igual manera que con un servidor ssh normal. El objetivo en este paso es poder montar el sostema de ficheros de forma automática.
Como podremos comprobar una vez que hayamos configurado nuestro SSHFS, los enlaces duros no son posibles aún. SSHFS (o SMBFS, FTP) no soportan enlaces duros.
Paso 2. Crear y activar imagen de loopback
A continuación crfearemos en el espacio de FTP montado mediante FUSE / SSHFS una imagen de disco, la cual será utilizada como tal mediante dispositivo loopback con losetup:
crear imagen de 10GB en espacio de FTP
# dd if=/dev/zero of=/mnt/sshfs/image.lvm bs=1M count=10000
activar loopback sobre imagen
# losetup /dev/loop0 /mnt/sshfs/image.lvm
Paso 3. Configurar LVM en imagen de loopback
La ventaja de confugurar un LVM sobre el loopback es que podremos modificar el tamaño de la imagen de loopback posteriormente y hacer que determinadas unidades lógicas crezcan de tamaño a la par, con lo que si ampliamos nuestro plan de hosting / backup podremos también ampliar el tamaño de nuestro sistema de ficheros de backup de una manera cómoda y sencilla.
Para crear el sistema LVM sobre el loopback montado, lo hacemos de la misma manera que si se tratara de un disco duro o partición normal. Nuestro volumen lógico tendrá la ruta /dev/backup/vol0:
# pvcreate /dev/loop0
# vgcreate backup /dev/loop0
# lvcreate --name vol0 --extents 100%FREE /dev/backup
Paso 4. Crear sistema de ficheros y montarlo
Personalmente prefiero XFS como sistema de ficheros para una configuración de LVM y baja latencia de ref, aunque se puede utilizar cualquier otro FS. Para crear el sistema de ficheros con XFS utilizamos el comando:
# mkfs.xfs /dev/backup/vol0
Para montarlo en el sistema, usamos:
# mkdir /mnt/backup
# mount /dev/backup/vol0 /mnt/backup
¡Ya lo tenemos todo hecho!. Ahora podemos utilizar nuestro nuevo sistema de ficheros montado en /mnt/backup de la misma manera que cualquier otro sistema de ficheros local, lo cual significa que, entre otras muchas cosas, ya tenemos enlaces duros.
Lo único que nos falta es hacer que el sistema de ficheros se monte de forma automática al reiniciar nuestro servidor. Para ello, en una distribución Debian GNU/Linux y/o Ubuntu, metemos en el fichero /etc/rc.local lo siguiente::
# Montar backup en SSHFS + LOOP + LVM + XFS
mount /mnt/sshfs
sudo losetup /dev/loop0 /mnt/sshfs/image.lvm
vgchange -a y backup
mount /dev/backup/vol0 /mnt/backup
Espero que os sea de utilidad. Por favor, si tenéis cualquier duda dejadme un comentario.
Mario J. Barchéin.
En este artículo vamos a proponer una solución para solventar esta carencia y poder tener enlaces duros, además de otras ventajas adicionales.
Realmente vamos a montar un sistema de ficheros completo sobre nuestro espacio de backup utilizando todo lo siguiente:
- FUSE
- loopback devices
- LVM
- XFS / EXT3 / EXT4 / cualquier otro FS de nuestra elección
Nuestro objetivo final es poder tener un sistema de ficheros completo montado en nuestro host de manera que podamos utilizar cualquier herramienta convencional de nuestra distribución GNU/Linux, tal como rsync, ln, etc.
Paso 1. Montar el espacio de backup mediante FUSE.
Lo primero que necesitamos es poder tener acceso aleatorio a un fichero que posteriormente usaremos como imagen loopback. Para ello nos podemos servir de cualquier módulo de FUSE adecuado. Dependiendo de las posibilidades de acceso al espacio de backup, deberemos utilizar la adecuada entre sshfs, smbfs o CurlFtpFS. En el ejemplo que voy a poner a continuación utilizaré sshfs, aunque con los otros el procedimiento es equivalente.
Para habilitarlo debemos poder montar el sistema de ficheros desde /etc/fstab con una línea similar a esta (adaptando las rutas, puntos de montaje y usuario/grupo):
## sshfs al espacio de backup
sshfs#usuario@backuphost:/ /mnt/sshfs fuse comment=sshfs,BatchMode=yes,noauto,allow_other,reconnect,compression=yes,uid=usuario,gid=grupo 0 0
Debemos asegurarnos de que el sistema de ficheros se puede montar de forma automática en el arranque ejecutando con credenciales de root el comando:
# mount /mnt/sshfs
En caso de que nos solicite la contraseña para el usuario, deberemos utilizar autentificación por clave pública RSA de igual manera que con un servidor ssh normal. El objetivo en este paso es poder montar el sostema de ficheros de forma automática.
Como podremos comprobar una vez que hayamos configurado nuestro SSHFS, los enlaces duros no son posibles aún. SSHFS (o SMBFS, FTP) no soportan enlaces duros.
Paso 2. Crear y activar imagen de loopback
A continuación crfearemos en el espacio de FTP montado mediante FUSE / SSHFS una imagen de disco, la cual será utilizada como tal mediante dispositivo loopback con losetup:
crear imagen de 10GB en espacio de FTP
# dd if=/dev/zero of=/mnt/sshfs/image.lvm bs=1M count=10000
activar loopback sobre imagen
# losetup /dev/loop0 /mnt/sshfs/image.lvm
Paso 3. Configurar LVM en imagen de loopback
La ventaja de confugurar un LVM sobre el loopback es que podremos modificar el tamaño de la imagen de loopback posteriormente y hacer que determinadas unidades lógicas crezcan de tamaño a la par, con lo que si ampliamos nuestro plan de hosting / backup podremos también ampliar el tamaño de nuestro sistema de ficheros de backup de una manera cómoda y sencilla.
Para crear el sistema LVM sobre el loopback montado, lo hacemos de la misma manera que si se tratara de un disco duro o partición normal. Nuestro volumen lógico tendrá la ruta /dev/backup/vol0:
# pvcreate /dev/loop0
# vgcreate backup /dev/loop0
# lvcreate --name vol0 --extents 100%FREE /dev/backup
Paso 4. Crear sistema de ficheros y montarlo
Personalmente prefiero XFS como sistema de ficheros para una configuración de LVM y baja latencia de ref, aunque se puede utilizar cualquier otro FS. Para crear el sistema de ficheros con XFS utilizamos el comando:
# mkfs.xfs /dev/backup/vol0
Para montarlo en el sistema, usamos:
# mkdir /mnt/backup
# mount /dev/backup/vol0 /mnt/backup
¡Ya lo tenemos todo hecho!. Ahora podemos utilizar nuestro nuevo sistema de ficheros montado en /mnt/backup de la misma manera que cualquier otro sistema de ficheros local, lo cual significa que, entre otras muchas cosas, ya tenemos enlaces duros.
Lo único que nos falta es hacer que el sistema de ficheros se monte de forma automática al reiniciar nuestro servidor. Para ello, en una distribución Debian GNU/Linux y/o Ubuntu, metemos en el fichero /etc/rc.local lo siguiente::
# Montar backup en SSHFS + LOOP + LVM + XFS
mount /mnt/sshfs
sudo losetup /dev/loop0 /mnt/sshfs/image.lvm
vgchange -a y backup
mount /dev/backup/vol0 /mnt/backup
Lo que se hace en este script es:
- Montar el espacio de backup mediante SSHFS. Para ello debe estar correctamente configurado y accesible sin contraseña interactiva desde /etc/fstab.
- Activar el dispositivo loopback con la imagen de disco que hay en el SSHFS montado
- Activar el LVM para el loopback. Esto hará que aparezca /dev/backup/*
- Montar la unidad lógica /dev/backup/vol0 en /mnt/backup
Mario J. Barchéin.
No hay comentarios:
Publicar un comentario