Categories: Windows Server

Should You Use an IDE or SCSI VHD in Server 2008 Hyper-V Virtual Machines

Prepared by Ian Matthews February 11, 2008, Updated March 9, 2010

The short answer, USE IDE ON HYPER-V.  Read on for details and why many people are confused about this.

Today I had to convert a server with a 500GB data drive from a physical to a virtual machine.  This was a problem because I (wrongly) understood that IDE Virtual Hard Disks (VHD) used in Hyper V (on both Server 2008 and R2) was limited to 127GB.  Last year I heavily researched the drive controller options and with the assistance of Microsoft Support ended up deciding the Virtual IDE drives were better because they were less complex and they were about as fast as virtual SCSI disks.  At the time I understood that the only real drawback to virtual IDE was the 127GB limit; virtual SCSI has a 2TB limit.  Well after another round of research I found more reasons to stay with IDE.

Among several other confirming articles and blogs, I found THIS Hyper-V Developer post (which if you skip to the bottom will be refuted).

“…There has been some confusion over when users should use SCSI or IDE virtual hard disk inside of their virtual machines. The first thing to note is that it does not matter what sort of physical hard disk you have in your computer when you are making this decision.

There are a number of factors to consider:

Our emulated IDE can only support 4 disks, while our emulated SCSI supports up to 28 disks
Our emulated IDE can only support up to 128GB disks, while our emulated SCSI can support up to 2TB disks
Our emulated IDE controller has a higher level of driver support for various operating systems than our emulated SCSI controller

The final thing to consider is performance – and this is a bit tricky. Contrary to common sense, the performance of our emulated SCSI controller is slower than that of our emulated IDE controller. The reason for this is that the SCSI controller is a lot more complicated to emulate than the IDE controller. Now – this changes once you have Virtual Machine Additions installed. As part of Virtual Machine Additions we install an accelerated SCSI driver. Once this driver is installed the performance of our emulated SCSI controller is significantly faster than our emulated IDE controller.

So with all of this in mind, my recommendation is this:

If you are running Windows NT, 2000, XP, 2003 with Virtual Machine Additions installed; use SCSI.
If you are running any other configuration; use IDE unless you specifically use more than 4 disks, or larger than 128gb disks…”

How to Convert Virtual IDE to Virtual SCSI:

If you have installed on IDE and want to move to SCSI what you need to do is:
Add a SCSI controller to your virtual machine
Boot the virtual machine (VM)
Uninstall and reinstall the Virtual Machine Additions
Shutdown the virtual machine
Disconnect the drive from the IDE controller and add it to the SCSI controller

After discussing this at length with MS Support, I found that even though the above post makes reference to Hyper V, it is really talking about Virtual Server and you definitely should use IDE VHD’s under Hyper-V, with very few exceptions. 

I was going paraphrase a response I received from Microsoft Partner Support and mix it with two other supporting posts that I found but “Eric” really got to the key points so I will give him FULL credit:

Under Hyper-V we have two kinds of disk controller that you can add to a virtual machine – IDE disks and SCSI disks. A rough list of the differences between these controllers is as follows:

IDE:
Works on operating systems without integration services installed / available.
Can be used to boot a virtual machine

SCSI:
Supports hot add / remove of virtual hard disks.
(ed) Can NOT be used to boot a virtual machine.

The type of disk controller that you use in the virtual machine has nothing to do with the type of disk that you are using in your physical computer. SCSI VHDs can be stored on IDE disks, and IDE VHDs can be stored on SCSI disks.

You could not boot Hyper-V virtual machine from SCSI disk. Well, calling our SCSI controller “SCSI: is somewhat of a misnomer.

When we were working on Virtual Server we heard, loud and clear, that servers had SCSI disks – so virtual servers needed to have virtual SCSI disks. To this end we invested in the emulation of an Adaptec SCSI controller for Virtual Server. Unfortunately, this SCSI controller is a very advanced piece of hardware – and as a result was actually slower to emulate than the more simplistic IDE controller that we were already emulating.

In the end we had to extend our emulated Adaptec controller and write custom drivers for our supported operating systems in order to get good performance for SCSI in a virtual machine.

With Hyper-V we dropped the emulation of an Adaptec controller altogether. Instead we implemented our traditional emulated IDE controller and a new completely virtual, VMBUS based, storage controller – with no traces of emulation present.

It is this virtual storage controller that you are adding to a virtual machine when you choose to add a SCSI controller to a virtual machine.

The problem is that the BIOS that is used by our virtual machine has no knowledge of VMBUS and is only able to boot to emulated devices. This is why you can boot to an IDE controller and a legacy network adapter – but not to a SCSI controller or network adapter.

Generally, when talking to users about needing to boot off of SCSI disks in a virtual machine – there were two reasons that came up.

The first one was that SCSI could support larger virtual hard disks than IDE could. To address this we made the IDE controller in Hyper-V use 48-bit LBA. This allows you to attach virtual hard disks that are up to 2TB in size to an IDE controller.

The second reason was performance. But that too is not an issue.

In the child partition side of things is the “ (VSC)” is essentially the driver that gets loaded when you attach a SCSI controller to a virtual machine. It connects to VMBUS and allows us to perform Disk I/O without any emulation involved in a very high performance manner.

The next thing to notice is the “Fast Path Filter”. This is a filter driver that gets installed on all disk objects in the virtual machine – whether they are IDE or SCSI. It allows us to pass directly to the VMBUS based path for everything except low level disk operations (like partitioning a disk).

What this means is that once the integration services are installed the same code path is used for disk I/O whether you use an IDE disk or a SCSI disk (ed. so the speed is the same regardless of the IDE or SCSI selection.) There are two limitations that remain for IDE disks:

Disk commands to IDE disks on the same controller are serialized by the guest operating system (note that you can only have two IDE disks on a single controller)

The IDE disk is limited to I/O block sizes of 512kb or less – while the SCSI controller can go up to block sizes of 8mb

Bottom line, you could not boot off of SCSI disks in Hyper-V. Thanks.

Best regards,

Eric “G”
Partner Online Technical Community

Thank you Eric

View Comments

Published by
Ian Matthews

This website uses cookies.