Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'm looking at the differences between using a file versus a partition to store a virtual disk image in VM use. The common knowledge is that partition-based images are faster than file-based images because of a decreased overhead. It makes sense, but I've never seen any actual numbers.

My own testing bears out a different result. When I benchmark a direct-to-partition virtual disk, then format that same partition with ext4, create a virtual disk image stored on that ext4 filesystem, and then benchmark that, I see no speedup at all for the direct-to-partition virtual disk. Instead on some systems the file-based image is even faster (possibly due to host OS caching or something like that). This test was repeated many times on many systems, with fairly consistent results.

So perhaps throwing out the performance justification, is it still considered better to use a partition rather than a virtual disk image? Is there some other reason why direct partition access is better than image files?

Or perhaps is there some reason to go the other way around? Perhaps an advantage in one of the virtual disk file formats that you don't get with raw partition images?

share|improve this question

1 Answer 1

What makes a difference in performance is removing layers of virtualization, by using a partition you remove one layer (although a tiny one) and thus a performance gain is expected. However if you are sharing the disk among other VM the performance gain could be null.

The performance gain here is so small that it highly depends on your hardware configuration (read disk controller and RAID layout). My common knowledge says this only makes sense if the device (disk) is not shared between more than one VM, and the VM has direct access to it. Another option is to use a disk controller in a pass-through setup (your hardware and guest OS must have support for it), this way you remove two layers of virtualization and thus the performance gain should be more apparent.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.