Mover la carpeta /home a un disco nuevo en Ubuntu 22.04 LTS
Con el paso del tiempo, la información se va acumulando en nuestros discos duros hasta el punto de que supone un problema. En esos casos, la solución puede pasar por remangarnos y hacer limpieza a fondo, eliminando todos esos archivos que, probablemente, no volvamos a utilizar jamás.
Sin embargo, el precio por unidad de almacenamiento en los discos duros va disminuyendo casi a diario y, a cambio de una cantidad de euros bastante razonable, podemos evitar ponernos tan drásticos. Al fin y al cabo, añadiendo un nuevo disco al sistema podemos evitar la desazón que nos produce borrar algo que podemos necesitar en un futuro.
Por ese motivo, hoy vamos a aprender a añadir un nuevo disco al sistema y conseguir que todo el contenido de la carpeta /home (la que contiene todos los archivos de los usuarios) se mueva hasta él. Así, al mismo tiempo liberamos el espacio que estaban ocupando en el disco principal. Y lo que es mejor, lo conseguiremos sin reinstalar el sistema y sin que se note la diferencia una vez terminado el trabajo.
Una precaución que debemos tener en cuenta es que la carpeta de los usuarios no debe estar cifrada. De lo contrario, no podrán iniciar sesión una vez concluido el trabajo.
Tampoco debes olvidar hacer una copia de seguridad de tus datos antes de comenzar. Piensa que un contratiempo podría hacerte perder toda la información del equipo.
Aunque el proceso es muy simpleo, queremos explicarlo con mucho detalle para que no puedas perderte. Por eso, vamos a dividirlo en varias etapas que permitan seguirlo de una forma sencilla. Serán las siguientes:
-
Habilitar la cuenta del usuario root.
-
Preparar el disco nuevo.
-
Cerrar la sesión actual e iniciar sesión como root.
-
Montar el disco nuevo y copiar en él la carpeta /home actual.
-
Modificar el punto de montaje predeterminado de la carpeta /home.
-
Reiniciar y limpiar
Bueno, pues si estás listo, comencemos…
Habilitar la cuenta del usuario root
Una precaución importante para alcanzar nuestro objetivo es que ninguno de los archivos contenidos en la carpeta /home se esté modificando en el momento de hacer el cambio. La forma más sencilla es trabajar con la cuenta root, cuyos archivos se encuentran fuera de /home (en concreto, en la carpeta /root). Sin embargo, por motivos de seguridad, esta cuenta se encuentra deshabilitada en Ubuntu.
Nosotros la habilitaremos siguiendo las indicaciones del artículo Habilitar la cuenta de root en Ubuntu 22.04 LTS e iniciar sesión gráfica. Después, una vez terminada la tarea, recurriremos a las indicaciones del mismo artículo para deshabilitarla.
Preparar el disco nuevo
Para la explicación de hoy, supondremos que la parte hardware ya está resuelta. Es decir, que ya has abierto el ordenador y has conectado correctamente un nuevo disco duro en su interior.
Lo normal es que, una vez conectado físicamente el disco al ordenador, al arrancarlo por primera vez, la BIOS lo detecte automáticamente. Si no es así, deberás recurrir a la documentación de tu ordenador para habilitar la detección automática de dispositivos.
Es bastante habitual que los discos nuevos vengan formateados de fábrica. Si es así, probablemente tenga una sola partición, que estará formateada en NTFS.
En cualquier caso, lo primero que tendremos que hacer será iniciar sesión como habitualmente y ejecutar la herramienta Discos de Ubuntu. Para lograrlo, comenzaremos por hacer clic sobre el elemento Mostrar aplicaciones del Escritorio.
Cuando se muestre el Panel de actividades, comenzaremos a escribir el nombre del programa para buscarlo. En este caso, Discos.
Mucho antes de que acabemos, lo veremos entre las aplicaciones sugeridas que van apareciendo bajo el cuadro de texto. En ese momento, volveremos a hacer clic sobre su icono para ejecutarlo.
Cuando se abra la ventana Discos, identificamos el disco nuevo y hacemos clic sobre él.
Aquí podemos comprobar el tamaño, el formato actual y el archivo de dispositivo asignado, entre otras características. Como puedes ver en la imagen, en nuestro ejemplo, el disco aún no tiene formato y se encuentra asociado a /dev/sdb. Sin embargo, esto puede ser diferente en tu caso particular.
De cualquier modo, tanto si el disco no tiene formato, como si su formato es diferente de ext4, lo siguiente será darle formato. Incluso si ya dispone del formato adecuado, volver a formatearlo te asegurará que eliminas todo su contenido y lo dejas listo para la tarea que vamos a realizar.
Por lo tanto, el siguiente paso será hacer clic sobre el botón que representa un engranaje…
Al hacerlo, obtendremos una nueva ventana titulada Formatear volumen. En ella, elegiremos las características del nuevo formato.
Para este artículo, nos aseguramos de que el tipo sea Disco interno para usarlo solamente con sistemas Linux (Ext4) y le asignamos un nombre que nos permita identificarlo (en este caso, hemos escrito Nuevo).
A continuación, el sistema nos avisa de que el proceso de formateo destruirá los datos que pudiera contener el disco con anterioridad.
Al tratarse de una tarea administrativa, antes de continuar, se nos solicita la contraseña de administración.
Poco después, comprobaremos que el disco ha sido formateado y que presenta la información correcta.
Cerrar la sesión actual e iniciar sesión como root
Como hemos dicho más arriba, para evitar que ninguno de los archivos contenidos en la carpeta /home se encuentre en uso, debemos realizar la tarea con la cuenta root que, de forma predeterminada, guarda sus archivos en la carpeta /root.
Por lo tanto, comenzaremos cerrando la sesión actual. Hacemos clic sobre el área de notificaciones y, en el menú que aparece, desplegamos la opción Apagar / cerrar sesión.
Al hacerlo, aparece una ventana que nos informa de que, si no hacemos nada, la sesión se cerrará dentro de un minuto. Esto nos ofrece la oportunidad de cambiar de opinión pulsando la tecla Cancelar.
De esta forma, se habrán cerrado todos los archivos que dependen de la sesión actual y el sistema nos presentará la pantalla de autenticación de GDM.
Sin embargo, ahora, en lugar de escribir la contraseña, pulsamos la combinación de teclas Alt + Control + F3.
Al hacerlo, veremos que la interfaz gráfica desaparece y nos encontramos únicamente en una consola de texto.
Para volver a la consola gráfica sólo tenemos que usar la combinación de teclas Alt + Control + F2.
A continuación, iniciaremos sesión con la cuenta root. Ten en cuenta que esto sólo funcionará si antes hemos seguido el artículo que mencionábamos más arriba para habilitar la cuenta del administrador.
Montar el disco nuevo y copiar en él la carpeta /home actual
El siguiente paso será montar el disco nuevo, de forma temporal, para hacer una copia del contenido completo de la carpeta /home actual.
Para lograrlo, necesitaremos dos cosas: una carpeta donde realizar el montaje y el archivo de dispositivo al que se encuentra vinculado el nuevo disco duro.
Para crear la carpeta, bastará con utilizar el comando mkdir, escribiendo algo parecido a esto:
mkdir /mnt/home
Así, habremos creado una nueva carpeta llamada home, dentro de la carpeta actual mnt, que es donde suelen crearse todas las carpetas de montaje para dispositivos.
No hace falta incluir sudo porque ya estamos ejecutando las ordenes como root.
En cuanto al archivo de dispositivo, cuando formateamos el disco más arriba, pudimos observar que se trataba de /dev/sdb. Lógicamente, en tu sistema podrá ser diferente, pero, si no tomaste nota en su momento, siempre puedes recurrir al siguiente comando para consultarlo:
blkid
blkid determina el sistema de archivos, la etiqueta, el archivo de dispositivo y el identificador (UUID) de los dispositivos de bloque presentes en el equipo.
Después de esto, estaremos listos para montar el disco, para lo que escribiremos algo como esto:
mount /dev/dsb /mnt/home
Aunque la orden podrá cambiar si tu disco se encuentra vinculado a un archivo de dispositivo diferente o si has decidido darle otro nombre a la carpeta de montaje.
Si todo ha sido correcto, sólo queda copiar el contenido de la carpeta /home actual en el disco que acabamos de montar. Para lograrlo, basta con escribir una orden como esta:
cp -av /home/* /mnt/home
El argumento a nos permite preservar la estructura y los atributos que tenían los archivos originales. El argumento v muestra cada uno de los archivos copiados.
Una vez completado el trabajo, podemos desmontar la unidad con lo que, además, nos aseguramos de que se escriben los datos que puedan haber quedado en la memoria intermedia. Lo conseguimos escribiendo la siguiente orden:
umount /mnt/home
Modificar el punto de montaje predeterminado de la carpeta /home
Ya estamos casi listos. Sólo nos falta decirle al sistema operativo que, ahora, la carpeta /home se encuentra en un lugar diferente.
Para lograrlo, sólo tenemos que modificar el archivo fstab, que es donde se leen los parámetros de montaje de dispositivos durante el arranque del sistema.
Podemos editar su contenido con cualquier editor de textos. Por ejemplo, usando nano:
nano /etc/fstab
Cuando tengamos el contenido del archivo en pantalla, nos desplazamos hasta el final y añadimos una línea como esta:
UUID=28351b91-32d9-46f7-824b-3fbd0510f6af /home ext4 defaults 0 2
Como es lógico, deberás cambiar el valor UUID por el de tu disco. Recuerda que lo obtuvimos con el comando blkid.
En cuanto al resto de opciones, su significado es el siguiente:
-
La ruta donde se montará el dispositivo (como es lógico, indicaremos /home).
-
El sistema de archivos que utiliza (ext4)
-
Las opciones de montaje:
-
defaults representa las opciones predeterminadas.
-
El valor 0, consigue que el programa dump (que se encarga de hacer copias de seguridad) ignore el dispositivo,
-
Y el valor 2 indica la prioridad de comprobación del sistema de archivos (lo normal es que el sistema de archivos raíz tenga prioridad 1 y el resto 2).
Al salir, nano nos pregunta si queremos guardar los cambios. Lógicamente, la respuesta debe ser Sí.
Como última precaución, nano nos ofrece la posibilidad de cambiar el nombre del archivo, por si no queremos reescribirlo.
El último paso consistirá en cambiar el nombre de la carpeta /home actual, para evitar que aparezcan dos ubicaciones con el mismo nombre la próxima vez que reiniciemos (algo que produciría un error).
También podríamos eliminarla pero, por cuestiones de seguridad, no lo haremos hasta que comprobemos que todo ha funcionado correctamente.
El comando que usaremos para cambiar el nombre de la carpeta será el siguiente:
mv /home /home-old
Yo he elegido /home-old, pero tú puedes usar el nombre que prefieras.
Después de esto, estaremos listos para reiniciar el equipo y comprobar que todo funciona.
Reiniciar y limpiar
Reiniciar el equipo desde la consola es tan sencillo como usar el siguiente comando:
reboot
Cuando se complete, volverá a aparecer la pantalla de autenticación y, si todo ha funcionado correctamente, no tendremos dificultad en iniciar sesión con nuestro usuario habitual.
Después, para comprobar que los dispositivos se han montado de forma correcta, podemos utilizar el siguiente comando, que nos aporta información sobre los dispositivos de almacenamiento de bloques disponibles:
lsblk -fm
El argumento f nos ofrece información sobre los sistemas de archivos instalados y el argumento m nos informa de quién es su propietario, su tamaño, etc.
También puedes abrir la carpeta principal del usuario, para comprobar que todo está en su sitio.
Si todo es correcto, ya podemos borrar los datos de la carpeta /home original (que ahora se llama /home-old) y la carpeta que creamos para montar de forma temporal el disco nuevo (/mnt/home). En ambos casos, recurriremos al comando rm:
sudo rm -R /mnt/home sudo rm -R /home-old
Usamos el argumento -R para eliminar recursivamente todo el contenido del directorio antes de eliminar el propio directorio. De lo contrario, recibiríamos un error cuando el directorio no esté vacío.
Como último detalle a tener en cuenta, deberíamos volver a deshabilitar la cuenta de root, tal y como indicábamos en el artículo Habilitar la cuenta de root en Ubuntu 22.04 LTS e iniciar sesión gráfica.
Bueno, pues esto es todo por el momento. Espero que te resulte útil.