Clonado de discos duros

El objetivo de esta entrada es testear como puedo clonar discos duros, ya sea para guardar copias de seguridad y poder restaurar el sistema completo en otro disco duro, como intentar virtualizar un linux para meterlo dentro de una maquina virtual.

1. COPIADO DE VM A VM

La primera prueba consiste en crear la maquina virtual 1 (VM1) con:

/dev/sda1: /boot
/dev/sda5: /
/dev/sda6: /var
/dev/sda7: swap

La maquina virtual 2 (VM2) la creo con un disco mas grande pero sin particionar.

1. Arrancar VM1 con systemrescuecd
2. copiar el mbr: dd if=/dev/sda of=sda.mbr count=1 bs=512
3. copiar tabla de particiones: sfdisk -d /dev/sda > sda.pt
4. con partimage creo una imagen de cada partición excepto de la swap

Ahora viene la restauración

1. Arrancar VM2 con systemrescuecd
2. recuperar mbr: dd if=sda.mbr of=/dev/sda
3. recuperar tabla de particiones: sfdisk /dev/sda < sda.pt
4. ya tenemos particiones por lo que recuperamos las imagenes con partimage
5. creamos la particion swap: mkswap /dev/sda7

Reinicio porque ya deberia funcionar, pero no funciona, parece como si el grub no estuviera instalado.

1. Arrancamos VM2 con systemrescuecd
2. montamos la estructura del disco:

   mount /dev/sda5 /mnt/custom
   mount /dev/sda1 /mnt/custom/boot
   mount /dev/sda6 /mnt/custom/var
   mount -o bind /dev /mnt/custom/dev
   mount -o bind /proc /mnt/custom/proc
   mount -o bind /sys /mnt/custom/sys

3. Reinstalamos grub desde el chroot del disco:

    chroot /mnt/custom /usr/sbin/grub-install /dev/sda

funciona!

Notas:  supongo que al tener que reinstalar grub, no haría falta copiar la mbr
            Y supongo también que las particiones se podrian crear a mano sin tener que usar sfdisk
             Una vez funciona, se puede intentar hacer mas grandes las particiones via gparted, por ejemplo

2. CLONANDO DISCO DURO Y PONERLO EN HARDWARE DIFERENTE 

 Aqui la prueba ha sido copiar un disco duro de una maquina linux física y restaurarlo en el disco duro de una máquina virtual. Con clonezilla ha sido facilote :) yuhuuuuu
  1. Arrancar con clonezilla la máquina física
  2. copiar las PARTICIONES en alguún sitio (yo he usado un servidor smb de la red)
  3. anotar las tabla de particiones.
  4. Arrancar máquina virtual con el clonezilla
  5. intentar restaurar las particiones, me dice que el disco duro no tiene particiones y no puede
  6. crear particiones en el disco virtual de tamaño y orden igual que la máquina física
  7. volver a intentar restaurar las particiones, ahora se queja de que el disco tiene ya particiones y que lo voy a perder todo (wtf!!!), en fin, que le dices que si y las restaura
  8. Reiniciar máquina virtual, no arranca, cosa de la boot supongo.
  9. Reiniciamos la máquina virtual con systemrescuecd y hacemos el mismo procedimiento del apartado anterior para instalar grub
  10. Reiniciamos máquina virtual y furula, pero hay algun problemilla con fstab, dice que no encuentra algun UUID (concretamente la swap), nada, le doy a SKIP (o podriamos arrancar la maquina con otra live cd) para recrear la swap y arreglar al fstab/swap
  11. Reiniciamos máquina virtual y furula al 100% aunque hay cosas que no van, por ejemplo en la máquina física la eth1 y en la maq. virtual es la eth0 y cositas así..
ole ole

3. CLONADO DE DISCO DURO COPIANDO A PIÑON

La idea de este tipo de clonado es copiar el contenido del sistema de archivos de una máquina física en linux a otra máquina, por ejemplo virtual, sin tener que detener la máquina física. Por ejemplo, virtualizar un servidor linux sin tener que pararlo y además sin necesidad que las particiones de la máq. virtual sean igual o superiores de la máq. real ya que copiamos los archivos directamente :).

  1. Crear maq. virtual
  2. Crear tabla de particiones del disco virtual
  3. Crear particiones de tamaño suficiente para albergar los datos (o como si quieres solo 1 particion donde meterlo todo)
En la máq. origen:
  1. mkdir /mnt/kk
  2. mount /  /mnt/kk -o bind
  3. cd /mnt/kk
  4. tar -czpf - . | pv -b -t -a | nc ip_maq_virt 7777
  5. Repetir para cada partición
Es decir, montamos una particion (ya montada, por ejemplo /) en /mnt/kk y la enviamos por red a la máq. virtual por el puerto 7777

 
En la maq. virtual:
  1. Arrancar con systemrescuecd
  2. crear sistema de archivos en las particiones, ej: mkfs.ext4 /dev/sda1
  3. creamos la swap: mkswap /dev/sda7 (por ejemplo)
  4. montamos la particion: mount /dev/sda1 /mnt/custom
  5. cd /mnt/custom
  6. nc -l -p 7777 | tar -xzpsf -
  7. Repetir para el copiado de cada partición 
Una vez hemos copiado todas las particiones del origen a las particiones del destino nos queda revisar el fstab, pues al crear nosotros las particiones los UUID habrán cambiado, y revisamos también el arranque:

  1. montamos de nuevo la particion root en /mnt/custom
  2. cd /mnt/custom/etc
  3. ejecutamos blkid para ver los UUID de las particiones
  4. modificamos /mnt/custom/etc/fstab los UUID correspondientes a cada partición.
 Después es necesario revisar el arranque:
  1. montamos la particion boot
  2. vamos a /.../grub/grub.cfg y revisamos que las UUID que tiene grub apunten a los UUID correctos de nuestras nuevas particiones. Aquí va bien conocer las UUID que había en la máq. origen y sus correspondientes UUID en la maq destino, así hacer un buscar-reemplazar de UUID y lishto.
Finalmente instalamos grub en el disco virtual para tener arranque como en el primer apartado (montar todas las particiones del disco + bind de /proc /sys /dev + chroot y ejecutar grub-install)

Et vuala!!!! furula nen

Otra cosa que podemos hacer una vez tenemos arrancada la máq. virtual és:
  1. grub-mkconfig > /boot/grub/grub.cfg
  2. grub-install /dev/sda
para regenerar de nuevo grub de manera nativa en la máquina virtual





Comentarios

Anónimo ha dicho que…
Que crack!
Funciona con servidores físicos con discos en RAID?
Beavies ha dicho que…
O que alagos, se nota que te pago bien :).

No lo se, me imagino que si ya que copio los datos de las particiones y despues reconstruyes la boot del disco final aunque de debería probar ya que seguramente salen sorpresitas.

Además, la reconstrucción del boot depende de la distro que hayas instalado/copiado, en este caso a sido un mero grub-install, pero podria no serlo.

Otra dificultad añadida seria que como cambia el hardware (el original tiene raid y la virtual no) haya que tocar algo. Esta es la 2a prueba del post (que aun no he realizado).

yeyeah