workstation ovf maquina importar exportar esxi convertir como archivo abrir image vmware virtual-machine virtualization qemu

ovf - ¿Cómo convertir una imagen de disco plano sin formato a vmdk para virtualbox o vmplayer?



importar maquina virtual vmware esxi 5 (6)

Dado que la pregunta menciona a VirtualBox, esta funciona actualmente:

VBoxManage convertfromraw imagefile.dd vmdkname.vmdk --format VMDK

Ejecútelo sin argumentos para algunos detalles interesantes (notablemente la bandera --variant ):

VBoxManage convertfromraw

Tengo algunas imágenes de distribuciones de Linux antiguas en formato de archivo plano, pueden ser usadas por máquinas virtuales bochs, pero necesito ejecutarlas con Sun Virtual Box. Virtual Box no puede usar imágenes en este formato, por lo que necesito convertir estas imágenes de un archivo plano a formato de archivo .vmdk. ¿Hay alguna manera de hacer esto?


En Windows, use https://github.com/Zapotek/raw2vmdk para convertir archivos raw creados por dd o winhex a vmdk. raw2vmdk v0.1.3.2 tiene un error: una vez que se crea el archivo vmdk, edite el archivo vmdk y corrija la ruta al archivo sin formato (en mi caso en lugar de D: / Temp / flash_16gb.raw (creado por winhex) el generado la ruta fue D: Tempflash_16gb.raw). Luego, ábralo en una máquina virtual vmware versión 6.5-7 (5.1 se negaba a adjuntar el disco duro vmdk). ¡cómo!


La respuesta de Krosenvold inspiró la siguiente secuencia de comandos que hace lo siguiente:

  • obtener el dd dump a través de ssh desde un servidor remoto (como archivo gz)
  • descomprimir el volcado
  • convertirlo a vmware

el script es reiniciable y verifica la existencia de los archivos intermedios. También usa pv y qemu-img -p para mostrar el progreso de cada paso.

En mi entorno 2 x Ubuntu 12.04 LTS los pasos tomaron:

  • 3 horas para obtener un volcado de disco de 47 GByte de una partición de 60 GByte
  • 20 minutos para descomprimir en un archivo dd de 60 GByte
  • 45 minutos para crear el archivo vmware

#!/bin/bash # get a dd disk dump and convert it to vmware # see http://.com/questions/454899/how-to-convert-flat-raw-disk-image-to-vmdk-for-virtualbox-or-vmplayer # Author: wf 2014-10-1919 # # get a dd dump from the given host''s given disk and create a compressed # image at the given target # # 1: host e.g. somehost.somedomain # 2: disk e.g. sda # 3: target e.g. image.gz # # http://unix.stackexchange.com/questions/132797/how-to-use-ssh-to-make-a-dd-copy-of-disk-a-from-host-b-and-save-on-disk-b getdump() { local l_host="$1" local l_disk="$2" local l_target="$3" echo "getting disk dump of $l_disk from $l_host" ssh $l_host sudo fdisk -l | egrep "^/dev/$l_disk" if [ $? -ne 0 ] then echo "device $l_disk does not exist on host $l_host" 1>&2 exit 1 else if [ ! -f $l_target ] then ssh $l_host "sudo dd if=/dev/$disk bs=1M | gzip -1 -" | pv | dd of=$l_target else echo "$l_target already exists" fi fi } # # optionally install command from package if it is not available yet # 1: command # 2: package # opt_install() { l_command="$1" l_package="$2" echo "checking that $l_command from package $l_package is installed ..." which $l_command if [ $? -ne 0 ] then echo "installing $l_package to make $l_command available ..." sudo apt-get install $l_package fi } # # convert the given image to vmware # 1: the dd dump image # 2: the vmware image file to convert to # vmware_convert() { local l_ddimage="$1" local l_vmwareimage="$2" echo "converting dd image $l_image to vmware $l_vmwareimage" # convert to VMware disk format showing progess # see http://manpages.ubuntu.com/manpages/precise/man1/qemu-img.1.html qemu-img convert -p -O vmdk "$l_ddimage" "$l_vmwareimage" } # # show usage # usage() { echo "usage: $0 host device" echo " host: the host to get the disk dump from e.g. frodo.lotr.org" echo " you need ssh and sudo privileges on that host" echo " echo " device: the disk to dump from e.g. sda" echo "" echo " examples: echo " $0 frodo.lotr.org sda" echo " $0 gandalf.lotr.org sdb" echo "" echo " the needed packages pv and qemu-utils will be installed if not available" echo " you need local sudo rights for this to work" exit 1 } # check arguments if [ $# -lt 2 ] then usage fi # get the command line parameters host="$1" disk="$2" # calculate the names of the image files ts=`date "+%Y-%m-%d"` # prefix of all images # .gz the zipped dd # .dd the disk dump file # .vmware - the vmware disk file image="${host}_${disk}_image_$ts" echo "$0 $host/$disk -> $image" # first check/install necessary packages opt_install qemu-img qemu-utils opt_install pv pv # check if dd files was already loaded # we don''t want to start this tedious process twice if avoidable if [ ! -f $image.gz ] then getdump $host $disk $image.gz else echo "$image.gz already downloaded" fi # check if the dd file was already uncompressed # we don''t want to start this tedious process twice if avoidable if [ ! -f $image.dd ] then echo "uncompressing $image.gz" zcat $image.gz | pv -cN zcat > $image.dd else echo "image $image.dd already uncompressed" fi # check if the vmdk file was already converted # we don''t want to start this tedious process twice if avoidable if [ ! -f $image.vmdk ] then vmware_convert $image.dd $image.vmdk else echo "vmware image $image.vmdk already converted" fi


Para responder a TJJ: ¿ Pero también es posible hacer esto sin copiar todo el archivo? Entonces, solo para crear de alguna manera un vmdk-metarchivo adicional, que haga referencia a la imagen dd sin formato.

, es posible. Aquí se explica cómo usar una imagen de disco plano en VirtualBox:

Primero creas una imagen con dd de la manera habitual:

dd bs=512 count=60000 if=/dev/zero of=usbdrv.img

Luego puede crear un archivo para VirtualBox que haga referencia a esta imagen:

VBoxManage internalcommands createrawvmdk -filename "usbdrv.vmdk" -rawdisk "usbdrv.img"

Puede usar esta imagen en VirtualBox tal cual, pero dependiendo del sistema operativo invitado, puede que no sea visible inmediatamente. Por ejemplo, experimenté con el uso de este método con un sistema operativo invitado de Windows y tuve que hacer lo siguiente para darle una letra de unidad:

  • Ve al Panel de control.
  • Vaya a Herramientas administrativas.
  • Ve a Administración de Computadora.
  • Vaya a Storage / Disk Management en el panel lateral izquierdo.
  • Verás tu disco aquí. Cree una partición en ella y formatéela. Utilice FAT para volúmenes pequeños, FAT32 o NTFS para grandes volúmenes.

Es posible que desee acceder a sus archivos en Linux. Primero, desmóntelo del sistema operativo invitado para asegurarse y elimínelo de la máquina virtual. Ahora necesitamos crear un dispositivo virtual que haga referencia a la partición.

sfdisk -d usbdrv.img

Respuesta:

label: dos label-id: 0xd367a714 device: usbdrv.img unit: sectors usbdrv.img1 : start= 63, size= 48132, type=4

Tome nota de la posición de inicio de la partición: 63. En el siguiente comando usé loop4 porque era el primer dispositivo de bucle disponible en mi caso.

sudo losetup -o $((63*512)) loop4 usbdrv.img mkdir usbdrv sudo mount /dev/loop4 usbdrv ls usbdrv -l

Respuesta:

total 0 -rwxr-xr-x. 1 root root 0 Apr 5 17:13 ''Test file.txt''

¡Hurra!


Tal vez deberías probar usar Starwind V2V Converter, puedes obtenerlo aquí: http://www.starwindsoftware.com/converter . También es compatible con el formato de disco IMG y realiza la conversión sector por sector entre IMG, VMDK o VHD en y desde cualquiera de ellos sin realizar ningún cambio en la imagen de origen. Esta herramienta es gratis :)


apt-get install qemu (instala QEMU en debian / ubuntu)

A continuación, ejecute el siguiente comando: qemu-img convert -O vmdk imagefile.dd vmdkname.vmdk

Supongo que una imagen de disco plano es una imagen de estilo dd. La operación de conversión también maneja muchos otros formatos.