Caso 1
Antes de realizar el procedimiento debemos asegurarnos de tener las siguientes herramientas:
Un LiveCD que contenga los siguientes programas: dd, netcat, bzip2. Una máquina adicional con GNU/Linux instalado y las siguientes herramientas: dd, netcat, virtualbox o kvm, bzip2. Para comenzar iniciamos con un LiveCD el equipo que deseamos clonar (en adelante lo llamaremos equipo A) y montamos el disco a clonar, luego abrimos una terminal como root, nos desplazamos a la raíz del disco y ejecutamos el siguiente comando.
dd if=/dev/zero of=0bits bs=20M; rm 0bits
Este comando llena con ceros el espacio marcado como vacío en el disco, esto hará mas rápido el proceso de compresión de los datos durante la transmisión. Luego de realizar esto vamos al equipo donde almacenaremos la imagen (en adelante lo llamaremos equipo B) y ejecutamos lo siguiente.
nc -l 12345|bzip2 -d|dd bs=16M of=/tmp/imagen.raw
Este comando le indica a netcat que debe escuchar en el puerto 12345 y que el tráfico entrante debe descomprimirse con bzip2 y luego volcarlo en el archivo imagen.raw con el comando dd.
Ahora regresamos al equipo A y hacemos lo siguiente (suponiendo que el disco que queremos clonar sea /dev/sda y la ip del equipo B sea 192.168.1.1).
dd bs=16M if=/dev/sda|bzip2 -c|nc 192.168.1.1 12345
Esto inicia la transferencia de la información desde el equipo A hacia el equipo B, como se puede observar la transmisión se hace en bloques de 16 Mb que se comprimirán antes de enviarlos a B mediante netcat. La duración de este proceso dependerá del tamaño del disco que se quiere clonar, lo cual puede variar de pocos minutos a varias horas.
Hago la acotación de que durante este proceso no se mostrará ninguna información de progreso, solo devolverá el prompt al finalizar.
Caso 2
Este caso es mas sencillo ya que la imagen del disco se copiara a una memoria usb, al igual que en el caso anterior necesitaremos lo siguiente:
Un LiveCD que contenga los siguientes programas: dd y pv. Una vez iniciado el LiveCD conectamos la memoria usb y ejecutamos lo siguiente en un terminal como root (suponiendo que el disco que queremos clonar sea /dev/sda).
dd if=/dev/sda | pv | dd of=/media/memoria-usb/imagen.raw
El comando pv nos permite ver la velocidad y la cantidad de información que ha sido copiada a la memoria usb.
En ambos casos luego de finalizar el procedimiento podemos comprobar que toda la información se encuentra dentro de la imagen mediante los siguientes comandos.
mkdir -p /tmp/prueba mount -o loop /donde-este-la-imagen/imagen.raw /tmp/prueba cd /tmp/prueba ls cd .. umount /tmp/prueba
Bueno, ya tenemos nuestra imagen con la totalidad de la información del disco duro del equipo A, ahora debemos convertirla al formato de disco del hipervisor que vamos a utilizar y luego la compactaremos para hacerla más manejable.
qemu-img convert -f raw -O qcow2 imagen.raw imagen.qcow2 qemu-img convert -c -O qcow2 imagen.qcow2 imagen2.qcow2
Este procedimiento puede tomar bastante tiempo pero a la final nos permitirá tener un mayor control de nuestra información y ser mas eficientes con el uso de nuestros recursos, siendo esta la meta de todo administrador de sistemas.
Lo movemos a la libreria de imagenes:
mv /tmp/imagen2.qcow2 /var/lib/libvirt/images
Vamos a la consola de QEMU y creamos nueva máquina virtual Seleccionamos dispositivo de red compartido virbr0 y virtio Asignamos RAM y seleccionamos la imagen que acabamos de crear
Una vez que arranque la máquina, es muy posible que tengamos que reasignar MAC e IP