Linux (debian 9): partición raíz llena: mover directorios desde/hacia una unidad externa

Linux (debian 9): partición raíz llena: mover directorios desde/hacia una unidad externa

Tengo un sistema Debian 9 que está instalado en un único dispositivo de almacenamiento.

El tamaño del dispositivo es un poco menos de 4 GB y hay una única partición en la que se ha escrito la imagen de Debian.

No puedo quitar este dispositivo. Es parte de un sistema integrado y está conectado permanentemente.

Sin embargo, puedo agregar una tarjeta SD al sistema, ya que se proporciona una ranura adicional para la expansión del usuario si se requiere un FS más grande.

Mi intención es crear una única partición en una tarjeta SD, probablemente de 16 GB.

Me gustaría saber ¿qué directorios es seguro mover a la tarjeta SD? ¿Y cómo puedo hacer esto?

Por ejemplo, muchos sistemas Linux mueven la carpeta /home a un dispositivo físico separado o a una partición separada.

Entonces sé que puedo crear un directorio/home en la raíz del sistema de archivos SD. Lo que no sé hacer es cómo decirle al sistema Debian que /home se ha movido. ¿Presumiblemente necesito copiar todo el contenido de /home en el sistema de archivos original a la nueva tarjeta SD antes de decirle a Debian que se ha movido?

Supongo que también puedo mover las carpetas/tmp y/var.

¿Hay algo más que pueda mover con seguridad? ¿Supongo que no debería mover /bin, /sbin o /root bajo ninguna circunstancia?

He trabajado con sistemas como este antes, donde /home está en un disco diferente, pero nunca tuve que moverlo una vez finalizada la instalación.

Tampoco sabía qué palabras clave debería buscar para encontrar esta información; lo siento si parece una solicitud un poco inexperta. Gracias

Respuesta1

El hecho de que /homeno sea una parte estrictamente esencial del sistema operativo hace que esto sea más factible que pasar, por ejemplo, /usra un nuevo dispositivo. Si estuviera moviendo una jerarquía de sistema operativo esencial, querrá apagar y arrancar desde algún otro rescuesistema de archivos USB o CD en vivo. Esto podría ser desde difícil hasta imposible en su dispositivo integrado.

Pero como usted se está mudando, /homepodemos proceder con cautela.

Primero, inicie en modo de usuario único. Detenga los servicios no esenciales, especialmente cualquier cosa que pueda escribir en archivos en formato /home. Asegúrate de que pwdno estés en /home y luego obtén root:

$ cd /tmp
$ sudo -i

Entonces:

1) Inserte su tarjeta SD y cree una partición. Después de haber creado una partición, cree un sistema de archivos que contendrá su nueva /homejerarquía. Supongamos que la partición de su tarjeta SD es el dispositivo/dev/sdc1

# mkfs.ext4 /dev/sdc1

2) Monte el nuevo sistema de archivos en /mnt:

# mount /dev/sdc1 /mnt

3)COPIAR(no te muevas) o rsynctu /homejerarquía en la tarjeta SD (cuidado con las barras). Después de rsyncfinalizar, desmonte la tarjeta SD:

# rsync -HAXav /home/ /mnt/
# umount /mnt

4) Haz una copia de seguridad de tu/etc/fstab

# cp -p /etc/fstab /etc/fstab.safety

5) Identifique el sistema de archivos de la tarjeta SD UUIDy edítelo /etc/fstabpara agregar una entrada para UUIDmontarlo /home. Puedes encontrar el UUIDuso blkid:

# blkid /dev/sdc1
/dev/sdc1: UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" TYPE="ext4"

Dado el resultado anterior, su nueva fstablínea sería:

UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /home ext4 defaults 0 0

Ese es un ejemplo de Ubuntu ya que no tengo un sistema Debian a mano. Tendrá que reemplazar la parte xxxxx... con el UUID correcto del sistema de archivos de la tarjeta SD y reemplazarla ext4con el tipo de sistema de archivos que utilizó cuando instaló mkfsla tarjeta SD (y confirmó en el resultado de blkid).

6) Cambie el nombre del /homedirectorio anterior:

# mv /home /home.old

7) Cree un nuevo punto de montaje para la tarjeta SD:

# mkdir /home

En este punto, deberías poder montar manualmente la tarjeta SD:

# mount /home

y vea el contenido a continuación /homeque es idéntico al contenido a continuación /home.old. Verifique el contenido cuidadosamente, incluida la propiedad y los permisos de los directorios de inicio y .sshlos directorios, o es posible que no pueda iniciar sesión de forma remota cuando el sistema se reinicie. Si es posible, inicie el servicio sshd y pruebe un inicio de sesión remoto en una cuenta sin privilegios.

Si todo se ve bien, reinicie. Cuando el sistema vuelva a funcionar, verifique el espacio disponible en los sistemas de archivos montados:

# df

Aún no tendrás espacio libre /porque /home.oldtodavía está dando vueltas. Deberías ver mucho espacio disponible en /home:

# du -h /
# du -h /home

Una vez que esté satisfecho de que todo se ve bien, puede deshacerse de /home.old:

# cd /; rm -rf home.old

También puedes hacerlo rm /etc/fstab.safety, pero probablemente sea lo suficientemente pequeño como para que no haga mucho daño dejarlo.

información relacionada