Access raw partition from a virtual machine - is it faster than a virtual disk?

If I allow raw partition access to a virtual machine, will it be considerably faster than a normal, file-based virtual disk?

I'm using VirtualBox, Windows 7 and a 5400 rpm HDD, if that matters.


Solution 1:

The Microsoft Word document titled Virtual Hard Disk performance discusses the performance results obtained under Hyper-V. It states :

The fixed sized VHD performance has been on-par with the physical disk since Windows Server 2008/Hyper-V release to manufacturing In Windows Server R2 fixed VHD performance remains intact, i.e. it as good as raw disk or raw file.

To back up this statement, the document contains measures pertaining to various cases, from which one can conclude that raw partition/disk does not improve performance by much, if at all.

There are too many results to duplicate here, so I only give below two of them.

For fixed-sized VHD :

SQL Server Log 64KB 100%Sequential 100%Write Throughput

SQL Server Log 64KB 100%Sequential 100%Write Latency

For dynamically expanding VHD (results are not as uniform as before) :

Media Streaming 64KB 100%Sequential 98%Read 2%Write Throughput

Media Streaming 64KB 100%Sequential  98%Read 2%Write Latency

Solution 2:

I'd personally stick to using a VHD rather than use raw access. The warning in Virtualbox documentation sets off all kinds of bells about stability issues.

"raw hard disk access"; it allows a guest operating system to access its virtual hard disk without going through the host OS file system. The actual performance difference for image files vs. raw disk varies greatly depending on the overhead of the host file system, whether dynamically growing images are used, and on host OS caching strategies. The caching indirectly also affects other aspects such as failure behavior, i.e. whether the virtual disk contains all data written before a host OS crash. Consult your host OS documentation for details on this..... Incorrect use or use of an outdated configuration can lead to total loss of data on the physical disk. Most importantly, do not attempt to boot the partition with the currently running host operating system in a guest. This will lead to severe data corruption.

I've used raw disks with VMWare when I had to run 3 operating systems simultaneously and the files were on the same partition. Raw disks improved performance slightly. However, I encountered issues while using features such as snapshots. Hence, I switched back to VHD setup. Under normal modes of operation while using a single VM, I've not experienced any noticeable performance gain. However, I have not verified this using any performance assessment tool.

Solution 3:

I'm using Linux as host OS and WinXP as guess in VirtualBox. I was using it with file storage, now my XP is on separate partition on the HDD. My observations are that there is no benefit at all, at least none that I can feel. There is theoretical benefit, since you will skip the FS layer, but with today's systems it seems it's too small benefit to be of matter.

So my experience says: use file with preallocated storage, since the dynamically allocated image will make huge difference (it is much slower and IO hungry, than preallocated).