Desde GNU/Linux necesitamos clonar el disco del sistema de la máquina física al disco duro del sistema de la máquina virtual. Esto es tan simple como ejecutar el comando:
dd if=/dev/sda | ssh root@Es decir, clonamos de un disco principal (dd if=/dev/sda) al disco principal de una máquina remota (ssh root@dd of=/dev/sda
Este proceso es recomendable hacerlo en frio, es decir, con el sistema parado. Utilizaremos un CD Live que nos permite tener funciones de red y que disponga de servidor SSH instalado. Yo he utilizado Clonezilla, lo puedes descargar desde la web oficial de clonezilla o te dejo aquí el enlace de la versión que yo utilicé clonezilla-live-2.2.0-29-i686-pae.iso
Para el que no tenga experiencia con clonezilla, os comento algunas peculiaridades; el usuario root no tiene clave de acceso, para acceder como root necesitamos entrar como usuario "user" con clave "live" y después ejecutar "sudo -s" para pasar a ser "root". Necesitarás utilizar la cuenta de "root" directamente en una conexión SSH, cambia la clave de "root" con el comando "password".
Para virtualizar una máquina física necesitaremos; por una lado la máquina física y por otro lado una máquina virtual. Las dos deben iniciarse con clonezilla, activar la red y levantar el servidor ssh.
- Activar la red: para meter la máquina dentro de nuestra red. Si tenemos corriendo un DHCP en nuestra red, podemos solicitarle que le asigne una IP a la tarjeta de red de nuestra máquina iniciada con el CD live. Para esto utilizaremos el comando "dhclient eth0".
- Servidor SSH: una vez tenemos la máquina dentro de la red vamos a iniciar el servidor SSH ejecutando el comando "/etc/init.d/ssh start". Ahora podemos conectarnos desde una máquina remota a esta.
dd if=/dev/sda | ssh root@< ip >Esto nos pedirá la clave de root de la máquina destino. Y comenzará con el proceso de clonado enviando los datos por la red, son devolver ningún tipo información sobre el estado del proceso.dd of=/dev/sda
Este proceso puede tardar algunas horas, dependiendo de la velocidad de nuestra red y del tamaño del disco a copiar. Recomiendo utilizar el comando "pv" entre el "dd" y "ssh" para que nos informe sobre la transferencia de datos.
"pv" nos mostrará tanto la transferencia actual, como el total de datos transferidos. Esto será bastante cómodo y nos ayuda a hacer una estimación del tiempo que le queda al proceso. El resultado es algo parecido a esto:
1,32GB 0:02:06 [10,9MB/s] [ <=> ]Cuando el proceso ha terminado tiene que mostrar un resumen total como este:
156301488+0 records in
156301488+0 records out
80026361856 bytes (80 GB) copied, 7069.71 s, 11.3 MB/s
Asegúrate de tener instalado el comando "pv" antes de lanzar el proceso. Si no lo tienes instalado no funcionará. Finalmente así queda el comando:
dd if=/dev/sda | pv | ssh root@< ip > dd of=/dev/sdaRecordad que este proceso es bastante largo, si lanzas el proceso desde una consola SSH es muy probable que pierdas la conexión y no puedas volver a consultar el estado del proceso. Para evitar este problema recomiendo siempre utilizar "screen" para lanzar este tipos de proceso que presumiblemente tardarán mucho en terminar. Hace ya algún tiempo que escribí un artículo sobre el uso de "screen", pero sigue estando en vigor y os puede servir de ayuda.
También es importante destacar que este proceso cargará en gran medida en hardware donde lancemos el comando "dd if=/dev/sda | ..."; ya que recorrerá por completo el disco duro y lo transferirá por la red. Si hemos decidido virtualizar una máquina física es probable que se trate de una máquina vieja y puede que este proceso termine de matarla y no sobreviva.
Para evitar matar a la máquina que pretendáis virtualizar y no hacer que toda la espera sea una perdida de tiempo, os recomiendo sacar el disco de la máquina a virtualizar y o bien montarlo en una unidad usb externa y lanzar el "dd" desde otra máquina o conectarlo directamente en la maquina que hospedará a la máquina virtual.
No hay comentarios:
Publicar un comentario