Migrar desde una máquina virtual (VM) a un sistema físico

124

Aka: ¿Cómo puedo convertir un .vdi o .vmdk a una instalación real en un disco físico?

¿Es posible / factible migrar una instalación de máquina virtual de Ubuntu a una máquina física? Si es posible, qué tan difícil sería lograr esto y qué pasos necesitaría tomar para prepararme para la migración.

Me gustaría hacer algunas pruebas en una máquina virtual y, si funciona, migre ese sistema al hardware físico en lugar de reinstalar todo. es posible?

dting
fuente

Respuestas:

98

Si es posible. Ni siquiera es tan difícil, solo lleva algo de tiempo, un LiveCD de Ubuntu, plástico adhesivo y un disco USB externo (si no tiene más de un disco interno).

Paso preliminar: convierte el disco en algo útil

Tanto VMWare como VirtualBox (entre otros) usan formatos de disco que no se prestan bien para ser escritos directamente en el disco. Puede , pero personalmente creo que es más conveniente escribirlo primero en una imagen estándar intermedia. Puede hacer esto desde su sistema actual sin tener que iniciar un LiveCD.

  • Cargue una terminal y dispare:

    cd /media/wherever-the-image-is/
    
    # for VMWare
    sudo apt-get install qemu-kvm
    qemu-img convert your-vmware-disk.vmdk -O raw disk.img
    
    # For VirtualBox
    VBoxManage clonehd your-virtualbox-disk.vdi disk.img --format RAW
    
  • Muévase a un /media/wherever-the-image-is/disk.imglugar donde no esté dispuesto a escribir. Si planea escribirlo en el disco en el que se encuentra actualmente, querrá pegarlo en un disco interno separado o, lo que es peor, en un disco externo.

  • Las siguientes instrucciones asumen que lo ha movido /media/dave/disk.img( davees un disco USB externo)

  • Antes de escribir algo serio, asegúrese de tener copias de seguridad . Es un cliché decir pero un error tipográfico y hay una posibilidad muy real de que destruyas tu sistema. Suponga que las cosas saldrán mal y esté preparado. CloneZilla puede ayudarlo a realizar copias de seguridad de todo el disco si tiene algún lugar para almacenar esos datos.

Escribe la imagen en un disco propio

Querrás hacer algo como esto. Esto supone que va a sobrescribir un disco completo. Si desea realizar una instalación junto con Windows, ¡no siga estas instrucciones! Pase a después de las balas.

  • Inicie en un Ubuntu Live CD y haga clic en Probar Ubuntu.

  • Monte el lugar donde se almacena su imagen vmdk (por ejemplo, el disco USB externo como /media/dave). No , no montar el lugar en el que desea escribir.

  • Luego vamos a trabajar:

    sudo dd if=/media/dave/disk.img of=/dev/sdX
    

    Desea reemplazar sdXcon la ruta correcta a su disco de destino. La sudocontraseña está en blanco, solo presiona regresar.

  • Luego puede abrir gpartedo algo más y debería ver su partición de Ubuntu en el disco. Deberías poder expandirlo.

Escribe la imagen en un disco junto con otro sistema operativo

Esta es quizás una forma totalmente más segura de hacer las cosas. La idea es muy similar, aparte de hacer una instalación adecuada de Ubuntu y luego simplemente sincronizar los archivos disk.img.

  • Esta vez, su LiveCD deberá ser la misma versión de Ubuntu que su instalación virtual. Inicie en el Live CD y, nuevamente, haga clic en Instalar.

  • Siga el instalador, repartición de cosas como mejor le parezca. Aproximadamente 10 minutos después, se instalará y le pedirá que reinicie. No reiniciar No importa si lo hace accidentalmente, solo asegúrese de volver al LiveCD para las siguientes instrucciones.

  • Monte la partición de su nueva instalación y su disco externo donde almacenó la disk.imganterior (simplemente haga doble clic en ellos en nautilus).

  • Monte su disk.img ISO en una terminal:

    sudo mkdir /media/oldinstall
    sudo mount -o loop /media/dave/disk.img /media/oldinstall
    

    -Nota: después de crear el archivo .img deseado, a veces cuando intenta montarlo como un dispositivo de bucle, puede obtener el siguiente error

    "Falta la firma NTFS. Error al montar '/ dev / loop0': argumento no válido El dispositivo '/ dev / loop0' no parece tener un NTFS válido".

    Un archivo .img a veces contiene un registro de arranque maestro y una tabla de particiones antes de la partición real que quizás desee montar. Por lo tanto, debe encontrar el desplazamiento de la partición requerida. Para esto, uno puede usar la herramienta separada . Por ejemplo, mire la respuesta de sisco311 en este enlace http://ubuntuforums.org/archive/index.php/t-1576011.html

    Entonces, si ha determinado que su desplazamiento es 'xxx', puede montar su partición usando

    sudo mount -o loop,offset=xxx /media/dave/disk.img /media/oldinstall
    
  • A partir de ahí, puede seleccionar archivos cherry o simplemente copiar todo sobre la nueva instalación de Ubuntu usando algo como:

    sudo rsync /media/oldinstall/ /media/my-new-install/
    
  • Reinicie y debería ser recibido con su antigua instalación de VMWare, pero en metal desnudo. Si tiene problemas desagradables de grub, puede solucionarlo volviendo a Live CD, haciendo chroot y arreglando cosas .

Oli
fuente
77
¿Conoces una herramienta que hace esto automáticamente?
the_drow
1
Para configuraciones en Windows / VirtualBox, el VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXcomando seguirá funcionando. Todo lo que se necesita es cd Program Files\Oracle\VirtualBoxantes de ejecutar el primer comando.
Aust
2
@ Debo dudar de que /dev/sdXsea ​​un objetivo válido en Windows. AFAIK será \\Device\Harddisk0o algo así.
Danatela
3
VBoxManage internalcommands converttoraw your-virtualbox-disk.vdi /dev/sdXno funciona En Linux se da el error: VBoxManage: error: Cannot create destination file "/dev/sdX": VERR_ALREADY_EXISTS. Es necesario usar el VBoxManagecomando para enviarlo primero a una imagen. Luego use DD para poner la imagen en el disco físico.
LD James
8

Tal vez no sea exactamente lo que está pidiendo, pero puede lograr lo que quiere hacer.

Dado que todas sus configuraciones se almacenan en su directorio de inicio, puede hacer una copia de seguridad en otra partición en un disco real. Después de instalar un Ubuntu nuevo en un disco real, simplemente ejecute el programa de respaldo una vez más para restaurar su directorio de inicio con toda la configuración intacta.

Puede usar un programa de copia de seguridad realmente bueno llamado Déjà Dup .

Información del centro de software ubuntu:

Déjà Dup es una sencilla herramienta de respaldo. Oculta la complejidad de hacer una copia de seguridad de la manera correcta (encriptada, fuera del sitio y regular) y utiliza la duplicidad como back-end.

caracteristicas:

  • Soporte para ubicaciones de respaldo locales, remotas o en la nube, como Amazon S3 o Rackspace Cloud Files

  • Cifra y comprime sus datos de forma segura

  • Copia de seguridad incremental, que le permite restaurar desde cualquier copia de seguridad particular

  • Programa copias de seguridad periódicas

  • Se integra bien en su escritorio GNOME

ingrese la descripción de la imagen aquí

¡Terminarás en menos de dos horas!

¡buena suerte!

danizmax
fuente
1
Suena fácil. ¿Puedo confirmar que realmente funciona de esa manera?
Mateng
entre otras cosas ... el UID (números de usuario) puede ser diferente en ese momento.
Tomachi
5

Prueba UDPCast

La idea es transmitir todo su vmdk de su máquina virtual a la máquina física, donde se escribe en el disco duro físico.

El procedimiento se describe a continuación.

Como tiene un archivo vmdk, es posible que tenga una estación de trabajo VMWare a su disposición, incluso complete la máquina virtual a la que está adjunto vmdk. Ejecute su máquina virtual con este vmdk en particular conectado, pero en lugar del arranque normal, use PartedMagic liveCD para arrancar.

Cuando se inicia liveCD, navegue al menú principal y busque el UDPCast Disk Cloning. Sus diálogos se explican por sí mismos (ver la captura de pantalla) Pantalla de inicio de UDPCast Disk Cloning

Después de seleccionar esta máquina virtual como la sender, debe seleccionar qué unidad desea transmitir (usando la notación Unix, como / dev / sda).

Una vez que haya comenzado sender, debe comenzar receivertambién. Dado que tiene un disco duro físico, supongo, también tiene una PC completa con este disco duro conectado. Lo mismo aquí: debe iniciar liveCD con la UDPCast Disk Cloningselección de receiveresta vez, así como el disco duro físico apropiado.

Vale la pena señalar que debe hacer todos los arreglos necesarios para tener conectividad de red entre su máquina virtual y el hardware físico. Debe tomar las precauciones necesarias si su vmdk contiene datos privados, ya que su contenido se transmitirá de manera efectiva a través de su red. Otra cosa es que su disco duro de destino no debe tener menos capacidad de almacenamiento, que la capacidad de su vmdk. Es obvio, pero también vale la pena señalar que su imagen se presenta uno a uno en su disco duro de destino y necesita realizar operaciones adecuadas con gparted o similares para aprovechar la mayor capacidad de su nuevo disco duro.

PF4 Público
fuente
Me gustaría señalar que este método es realmente sencillo y relativamente fácil de realizar. Es decir, el único paso de preparación que debe tomar es preparar su LiveCD con UDPCast o cualquier otro LiveCD, que es suficiente para descargar y ejecutar UDPCast. Si tiene alguna imagen HD virtual, definitivamente la ha usado en una máquina virtual, que ya está configurada y lista, por otro lado, ha preparado su sistema físico y también está listo para la tarea.
PF4Public
Hay más: UDPCast podría ejecutarse directamente desde PXE. udpcast.linux.lu/bootloader.html#pxe
PF4Public
4

Si tiene instalado VirtualBox, puede convertir el archivo VDI (imagen de la unidad de VirtualBox) en formato IMG mediante el VBoxManagecomando y luego copiarlo en el disco físico, por ej.

VBoxManage clonehd --format RAW file.vdi file.img

Luego puede usar el ddcomando para copiar el archivo en la partición física:

dd if=./file.img of=/dev/<partition_here>

Nota: Use sudo si es necesario. Tenga cuidado al especificar el dispositivo correcto en / dev.

kenorb
fuente
0

Si tiene el nuevo disco físico conectado a la máquina en la que está el disco virtual VM, puede convertir VDI a físico sin una conversión intermedia, probablemente ahorrando mucho tiempo y espacio en disco. Esto supone que su disco físico es igual o mayor que el tamaño máximo del disco virtual. En mi caso, el objetivo era convertir un VDI a un zvol ZFS, pero el enfoque debería ser el mismo con cualquier dispositivo de bloque.

Primero cree un archivo VMDK que apunte a su dispositivo de bloque:

VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sdX

Luego (¡con el apagado de VM!) Puede clonar el VDI al VMDK:

VBoxManage clonemedium --existing virtual.vdi physical.vmdk

Eso llevará un tiempo ... Cuando termine, puede eliminar el archivo VMDK ya que solo se usó como puntero para que VirtualBox encuentre el dispositivo físico.

En mi caso, el nuevo zvol tenía exactamente el mismo tamaño que el disco virtual. Dado que su disco físico es probablemente diferente, necesitaría emplear algún tipo de mecanismo de cambio de tamaño de partición para llenar el disco completo. Gparted o algo por el estilo. Debería poder señalar eso en el dispositivo físico / dev / sdX mientras está conectado a la máquina VM para que no tenga que recurrir a los CD de arranque del host físico.

Una vez hecho el cambio de tamaño, introduzca la unidad en su máquina física, cruce los dedos y enciéndala.

En el caso de que quiera seguir usando la unidad física con VirtualBox, mantenga el VMDK cerca y úselo VBoxManage storageattachpara conectarlo a la VM.

pendor
fuente
Parece que funciona, pero los datos se corrompen de alguna manera y el sistema operativo no se inicia correctamente.
Sarge Borsch