¿Cómo migrar un sistema de archivos raíz a otra partición desde el sistema en ejecución?

¿Cómo migrar un sistema de archivos raíz a otra partición desde el sistema en ejecución?

Intento migrar un sistema de archivos raíz de ext4 a otro tipo de partición (zfs) y comencé con un simple

rsync -a --exclude=/boot --exclude=/mnt --exclude=/media --exclude=/tmp 
--exclude=[all zfs pools with default mountpoint] 
/ /target/directory/mountpoint/

luego, la transferencia se atascó en archivos diferentes en /proc, después de agregarla --exclude=/proc rsyncse atascó en un archivo en /sys/devices, lo que me llevó a abandonar la prueba y error. Después de leer man procy sobre /sys(Wikipedia) Me doy cuenta de que se necesita más investigación de la que requiere una solución simple para encontrarla. Espero que alguien pueda ayudar. El sistema raíz es Ubuntu 14.04 amd64 (el sistema activo también, pero no dude en hacer sugerencias si ese es un problema limitante).

Por supuesto, es fácil iniciar un sistema en vivo y copiar los datos allí, pero esta es una solución alternativa solo para la pregunta.

Respuesta1

Voy a comenzar con un descargo de responsabilidad sobre este caso, ya que no tengo un sistema que pueda usar para probar si el arranque realmente funcionará. Esta respuesta se basa en mi entendimiento, y solo debes probar esto en un sistema de desarrollo hasta que confirmes que funciona.

Dado que /devson todos sistemas de archivos virtuales, creo que el sistema operativo debería crear su contenido en el arranque /sys. /procSi esto es cierto, deberías poder hacer:

rsync -ax / /target/directory/mountpoint

-x le dice a rsync que no cruce los límites del sistema de archivos, por lo que omitirá los sistemas de archivos virtuales y no será necesario especificar los grupos de zfs. Seguirá creando los puntos de montaje, pero estarán vacíos.

Si su /tmp no es su propia partición y no desea copiar esos archivos, aún deberá hacerlo manualmente --exclude.

Respuesta2

Verifique si está ejecutando LVM. Si es así, puede hacer instantáneas del sistema de archivos usando LVM y luego copiarlas desde allí.

Estos se inventaron porque las copias de seguridad deben crearse desde un sistema de archivos inactivo o la copia de seguridad no es muy útil. Las instantáneas resolverán tanto el problema entre dispositivos como el problema de los archivos transitorios.

Tenga en cuenta que si tiene archivos grandes, como bases de datos, que están activos, es probable que rsync y otras copias de seguridad produzcan versiones inconsistentes, ya que partes del archivo se copiarán antes de un cambio en la base de datos y otras se copiarán después. Las instantáneas también son un intento de resolver este problema.

Nota: btrfs tiene una forma superior de creación de instantáneas del sistema de archivos, pero si ya está ejecutando ext4, esta vez ya será demasiado tarde para hacerlo.

Respuesta3

Adjunto: si puede (puede hacerlo si está en la consola local, no puede si está conectado a través de ssh o necesita mantener el sistema en pleno funcionamiento), cambie al nivel de ejecución 1 ("modo de usuario único", el comando es "init 1") antes de hacer tal cosa. Esto detendrá todos los procesos no esenciales que podrían cambiar cosas en el sistema de archivos mientras lo copia.

Le importa ajustar su fstab, especialmente si se utilizan UUID.

Considere usar "chroot /where/the/new/root/is/mounted /bin/bash" para probar su sistema de archivos recién replicado y posiblemente reinstalar su cargador de arranque. Es posible que tengas que montar manualmente /proc y /sys bajo el chroot.

Si reinstala un gestor de arranque desde chroot, asegúrese de que /etc/mtab (en el sistema chroot) no contenga basura que confunda al instalador del cargador. Si es grub 1.x, es posible que deba eliminar el (nuevo) archivo /boot/device.map.

Si desea ir a lo seguro con /dev, puede completarlo (en el nuevo sistema de archivos) con "MAKEDEV genérico"; esto creará un conjunto de archivos de dispositivo "debajo" del punto de montaje de udev que evitará que su sistema falle gravemente. al inicio en caso de que udev no funcione.

información relacionada