32

Is it possible to convert a VMWare vmdk image file to physical hardisk drive? I know VMWare 6.5 can use physical harddisk drive directly to get good performance, can I convert an existing vmdk file to physical harddisk drive go gain better performance?

Nicolas Kaiser
  • 165
  • 1
  • 4
  • 16
karon
  • 341
  • 1
  • 3
  • 4
  • 1
    There is very little performance difference between using vmdks and physical drives. – JamesRyan Dec 18 '11 at 17:12
  • @JamesRyan it depends a lot on the configuration; if the VMDK is sitting in its own datastore, then yes, there is very little difference; but if the datastore contains other VMs, things are a lot different. – Massimo Feb 12 '16 at 23:31
  • @Massimo well don't put it with other VMs then? There is still no need to convert it to a physical disk! – JamesRyan Feb 13 '16 at 21:40

6 Answers6

21

If you have qemu-img, you should be able to do all of this from a command line dealing just with image files.

qemu-img convert source.vmdk -O raw <path>
dd if=<path> of=/dev/<disk> bs=1G count=<target-gb-size>

That will write out whatever raw format the vmdk was out to a physical drive. Its better to use copy-on-write FS for this. Make sure that all source data allocated within first N Gb to fit the target disk of N-Gb size.

Alex
  • 6,477
  • 1
  • 23
  • 32
  • A tip: qemu version 1.2.0 fixes a bug that occurs when converting VMDK images. See http://serverfault.com/questions/429478/conversion-of-a-vmdk-image-with-qemu-img-failed-with-error-while-reading-sector – Erik Sjölund Sep 18 '12 at 13:49
  • @Alex I've windows system, So how to set "/target/drive/" ? – Nullpointer Aug 24 '16 at 11:26
  • I use qemu-img 1.4.0, I have to use qemu-img convert -O raw source.vmdk /target/drive/ to make it work – zw963 Mar 25 '17 at 20:36
10

A bit late, but for reference I have successfully:

  1. Attach clonezilla to the virtual machine
  2. Boot the virtual machine with clonezilla disk
  3. Save an image of the disk to an external USB drive (also attached to the virtual machine)
  4. Restore the image to a physical disk using clonezilla
jeb
  • 201
  • 2
  • 3
3

You didn't mention what OS you're using and Alex's answer will not work on Windows and someone asked how to do this on Windows in the comments, so here's how:

You should use Cygwin to be able to use dd and accomplish the task.

Download and install Cygwin from here: http://www.cygwin.com/

Open Cygwin terminal as Administrator and type in:

cat /proc/partitions

You can see all your hard disks with their partitions. The numbers indicate the partitions.

dd if=/cygdrive/driveletter/path/to/vmdk bs=256k status=progress of=/dev/sdX
  • X in sdX is the drive that you want to write to. But remember it's different to Windows' drive letters. Don't mix them up!

  • status=progress will show you a progress line of dd.

  • bs=256k is block size (cache), you can use bs=4M for today hard disks but I am using 256k since I'm wring to a USB thumb drive.

Note: Beware that if the source machine is Windows 10, dd may not be compatible with converting the VMDK to RAW(disk), some similar situation reported here.


More info and commands on qemu-img here if you want to make sure it's not possible on Windows: https://cloudbase.it/qemu-img-windows/

Shayan
  • 85
  • 8
2

Have you tried booting into a BartPE cd (i.e. UltimateP2V ) and using Ghost? You'll probably run into driver problems once it gets on the hardware but, those are easy enough to deal with (in theory, lol).

If you want to create your own P2V (V2V, V2P, etc) disk check out Mike Laverick's write up (its the best): http://www.rtfm-ed.co.uk/docs/vmwdocs/whitepaper-ultimateP2V.pdf

xbnevan
  • 21
  • 1
2

Try UDPCast

The idea is to stream the whole your vmdk out of it's Virtual Machine to physical machine, where it is written to the physical hdd.

Procedure is outlined below.

Since you have a vmdk file, you might have a VMWare Workstation at your disposal, even complete Virtual Machine this vmdk is attached to. Run your Virtual Machine with this particular vmdk attached, but instead of ordinary boot use PartedMagic liveCD to boot from.

When liveCD is started, navigate to main menu and find the UDPCast Disk Cloning. Its dialogs are self-explanatory (see the screenshot) UDPCast Disk Cloning start screen

After selecting this Virtual Machine to be the sender, you should select which drive you want to broadcast (using Unix notation, like /dev/sda).

After you've started the sender, you need to start receiver as well. Since you have a physical hdd, I'm assuming, you also have a complete PC with this hdd attached to it. Same thing here: you need to start liveCD with UDPCast Disk Cloning selecting receiver this time as well as appropriate physical hdd.

Worth noting, that you should make all the necessary arrangements to have network connectivity between your Virtual Machine and physical hardware. You should take necessary precautions if your vmdk contains private data, since its contents would be effectively streaming over your network. Another thing is that your target hdd should have no less storage capacity, than your vmdk's capacity. It is obvious, but also worth noting that your image is laid out one-to-one on your target hdd and you need to perform suitable operations with gparted or the like to make use of greater capacity of your new hdd.

PF4Public
  • 219
  • 2
  • 13
  • I'd like to note that this suggestion is straightforward and easy to achieve, since the only preparation needed is getting LiveCD with UDPCast (or any other LiveCD which is sufficient to download and run UDPCast) written to any bootable media. Let alone UDPCast is not so demanding in dependencies as qemu-img is. And there's more: UDPCast could be run directly from PXE. https://www.udpcast.linux.lu/bootloader.html#pxe – PF4Public Feb 17 '16 at 13:15
1

Mount the drive in a VM or however, and snapshot it (www.drivesnapshot.de). Then mount the raw disk in a VM and restore the snapshot onto the disk. That will transfer the drive sector by sector. In Linux I think you can use dd to do the same thing.

Isn't use of physical disks for VM volumes deprecated in VMWare these days?

JR

John Rennie
  • 7,756
  • 1
  • 22
  • 34
  • The feature still exists in Workstation and the runs-on-bare-hardware-ish products. You can't use physical partitions/disks in this way with VMWare Server or VMWare Player though. – David Spillett Jun 30 '09 at 14:43
  • 2
    You can use physical disks fine in VMWare Server 1. I don't know about 2-- I can't stand it and won't use it. – Evan Anderson Jun 30 '09 at 14:50
  • You can use any disk imaging software you prefer. I will often use a "helper VM" that has it's own boot drive and then mount the source and target drives. The VM has all the disk tools I usually use and makes it easy if you have to do this from time to time. – Kevin Kuphal Jun 30 '09 at 14:54