Linux: mover el directorio /var a otra ubicación


Recientemente me he encontrado con el problema de que la partición raiz / de mi servidor Debian se está quedando sin espacio libre (principalmente porque el directorio /var no para de crecer por diversos motivos no evitables), pero sin embargo tengo otra partición con espacio de sobra donde tambien tengo montado el directorio /home. Lo que quiero hacer es mover /var a /home/var para poder asi liberar espacio en la partición raiz. Los pasos a seguir para conseguirlo son los siguientes:

Si habitualmente nos conectamos al servidor remotamente, en este caso debemos de hacerlo de forma local, por lo que deberemos de tener a mano un monitor externo y un teclado. Una vez conectados localmente ejecutaremos la siguiente orden para reiniciar el sistema con los servicios mínimos y asi evitar que escriban en /var mientras realizamos los cambios. Es por eso que debemos conectarnos de forma local, ya que es probable que el servicio de red se deshabilite:

init 1

Despues hacemos login con el usuario root y comprobamos que efectivamente no hay ningun proceso extra que esté escribiendo en /var ejecutando:

lsof -n | grep /var

Creamos el nuevo directorio donde moveremos todo:

mkdir /home/var

Copiamos todo el contenido de /var a su nuevo destino (las opciones -apx son importantes porque preservan los permisos, enlaces simbolicos etc):

cp -apx /var/* /home/var

Renombramos el directorio /var para mantenerlo como copia de seguridad durante un tiempo por si hubiera que deshacer los cambios:

mv /var /var.old

Re-creamos un nuevo directorio vacío /var en /

mkdir /var

Montamos todo el contenido copiado de /home/var al nuevo directorio /var:

mount -o bind /home/var /var

Comprobamos que todos los datos copiados son accesibles:

ls -la /var

Si todo ha ido bien solo queda configurar que este montaje se repita automaticamente cada vez que se reinicie el servidor. Para ello editamos el fichero /etc/fstab y añadimos la siguiente linea:

/home/var /var none bind

Guardamos los cambios y reiniciamos el servidor.

Comprobamos que todo está en orden y, de ser así, ya podremos borrar la copia de seguridad /var.old

¡Listo!

Previous Next