it-swarm-es.com

¿Cómo mover / usr a una nueva partición?

Mi carpeta /usr necesita moverse a una nueva partición. ¿Cómo puedo hacer esto sin borrar el contenido?

¿Se puede hacer esto mientras Ubuntu se está ejecutando, o necesito usar el LiveCD para esto?

21
Nathan Osman

Sería más seguro usar un Live CD, pero podría hacer lo siguiente:

  • copie todos los archivos en una nueva partición, asegurándose de que el contenido de /usr no cambie mientras lo hace.
  • edite /etc/fstab para que /usr se monte en el próximo reinicio
  • reiniciar
  • eliminar los archivos antiguos

Vea a continuación los detalles de cada paso.

Tenga en cuenta que no puede montar la nueva partición en /usr mientras se ejecuta, ya que habrá muchos archivos en /usr que estarán abiertos.

Copiando los archivos

Yo usaría cp -a. -a es la opción de archivo. Desde el página man :

-a, --archive
          same as -dR --preserve=all
...
-d     same as --no-dereference --preserve=links
...
-P, --no-dereference
          never follow symbolic links in SOURCE
...
--preserve[=ATTR_LIST]
          preserve      the      specified      attributes       (default:
          mode,ownership,timestamps),  if  possible additional attributes:
          context, links, xattr, all
...
-R, -r, --recursive
          copy directories recursively

Edición/etc/fstab

Necesita conocer el UUID de su nueva partición. Puede ver el mapeo haciendo:

$ ls -l /dev/disk/by-uuid/

Y luego agregue esta línea a /etc/fstab:

UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2

Cambie el UUID a su UUID y cambie ext4 para que sea el tipo de sistema de archivos que está utilizando; debe saber esto si ha configurado la partición.

Eliminar los archivos antiguos

Después del reinicio, los archivos antiguos en /usr en la partición raíz serán ocultos por la nueva partición montada en /usr. Pero podemos usar algunos truco de enlace de montaje para acceder a los archivos antiguos y luego eliminarlos.

$ Sudo mount --bind / /mnt
$ Sudo rm -rf /mnt/usr/*
$ Sudo umount /mnt

Pero un poco de error de escritura (digamos, presionar Enter cuando solo escribiste Sudo rm -rf /mnt) podría causar un desastre, por lo que solo usaría este método si estuvieras muy seguro de lo que estabas haciendo, realmente no podría lidiar con ningún tiempo de inactividad, o no tenía acceso físico a la máquina y, por lo tanto, no pudieron iniciar un CD en vivo o una memoria USB en vivo.

25
Hamish Downer

Como la mayoría de las bibliotecas que se usan están en/usr, no recomendaría mover este directorio mientras se ejecuta Ubuntu. De hecho, probablemente reciba mensajes de error cuando intente hacer esto. Por lo tanto, lo mejor es usar el LiveCD.

Puede usar varias posibilidades para mover/copiar los archivos cp, rsync, etc. Desea asegurarse de que se creen enlaces simbólicos y no solo se copien. cp y rsync tienen opciones para esto.

Después de mover los archivos a la otra partición, debe agregar otro montaje en/etc/fstab para montar la nueva partición en/usr.

6
txwikinger

Atención: no tengo idea de lo que estoy haciendo, solo estoy copiando comandos y haciendo lo sugerido por los demás. Esta puede ser la forma incorrecta de hacerlo, pero funciona para mí (al menos por ahora).

Así es como lo hice (siguiendo la respuesta de Hamish y los comentarios):

  1. Copie todos los archivos de la partición recién creada (reemplace con la ubicación de su partición, debería ser similar a la mía):

    rsync -avz /usr /media/aleksandar/750b84e2-e65f-4309-ade5-5af0033a937c 
    
  2. En este punto, me di cuenta de que copió todo en la carpeta /usr en la partición, que no va a funcionar, así que copié todo (con el administrador de archivos) de esa carpeta a la raíz de la partición, y luego eliminó esa carpeta vacía.

  3. Editar /etc/fstab (igual que en la respuesta de Hamish, por supuesto, reemplace con su UUID)

    UUID=634c31a5-e27c-4e33-ac67-2e22491a30c2 /usr           ext4    defaults        0       2
    
  4. Un paso que resultó no ser muy acertado: cambié el nombre de la partición /usr montada actualmente a /usrBACKUP, solo para saber que, cuando reinicio el sistema, de hecho se reinicia en la partición recién creada, y no la antigua. Después de eso, todo falló en la pantalla, y tuve que apagarlo presionando la tecla de encendido (genio como soy). Omita este paso si no desea fallar su sistema.

  5. Reiniciar el sistema

  6. Después de reiniciar, abra System Monitor o una aplicación similar para ver si su nueva partición /usr está montada, y para verificar con seguridad si todo salió según lo planeado.

  7. Después de verificar que todo esté bien, puede eliminar su antigua partición /usr. Guardaré el mío por si algo sale mal.