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!