Hyper-V: How to get the most from your virtualized disk performance

There are two types of disk controllers that Hyper-V supports: SCSI and IDE. There are two IDE controllers and four SCSI controllers available.

Each IDE controller can have two devices. You can not boot from a SCSI controller. This means an IDE disk will be required. The boot disk will be IDE controller 0 Device 0. If you want a CDROM it will consume an IDE device slot.

EACH SCSI controller can support up to 255 devices.

Both SCSI and IDE can support pass-through, Fixed, Dynamic, Sparse, and Delta drives (see https://blogs.msdn.com/tvoellm/archive/2007/10/13/what-windows-server-virtualization-aka-viridian-storage-is-best-for-you.aspx). The difference lies in how the controllers are actually implemented. The IDE controller is emulated where as the SCSI controller is synthetic. So what does this mean?

The IDE controller implements a well-known IDE controller and this means there is extra processing before the I/O is sent to the disk. This processing occurs in vmwp.exe (a user mode process that exists for each started VM. More on this in a later post). Once the IDE emulation is complete the I/O is sent into the Root Partition’s I/O Stack. I/O completion requires a trip back to vmwp.exe.

The SCSI controller is not emulated. The SCSI controller uses VMBUS (Virtual Machine BUS. More on this in a later post). The I/O's pass from the Child (aka Guest) Partition to the root over VMBUS and enter the I/O stack. You can already see one less process/machine context switch is required because vmwp.exe does not get invoked. Once and I/O completes its completion is sent over VMBUS.

There is a lot more to how both the IDE and SCSI controllers work however the descriptions below should help you to understand why SCSI controllers are the right choice for the best performance.

[[ Since Hyper-V is not RTM'ed all numbers are subject to change as are the behaviors. ]]

Comments

  • Anonymous
    December 16, 2007
    "You can not boot from a SCSI controller.  This means an IDE disk will be required." So I have to boot from an virtual IDE drive meaning the OS has to be on the virtual IDE drive?  That can't be right can it? Rob

  • Anonymous
    December 17, 2007
    Yes it is true you can not boot from SCSI.  Our virtual BIOS does not support this today.  It does support (always subject to change because this software is not RTM); CD IDE Legacy Network Adapter Floppy The root reason is SCSI in a synthetic device and there is no VMBUS until after boot.  Tony

  • Anonymous
    December 31, 2007
    You could support booting directly from the PV SCSI disk with something like extboot.  See http://blog.codemonkey.ws/2007/12/first-release-of-extboot.html

  • Anonymous
    December 31, 2007
    Will the Scsi-boot be supported in RTM?

  • Anonymous
    January 07, 2008
    And what about "seamless" Virtual Server to Hyper-V conversation. Only a marketing bluff?

  • Anonymous
    March 10, 2008
    Anthony, As a former developer, I found the Hyper-V architecture really fantastic: it's elegant, intelligent e promising. From the developer point of view, you guys have done an excellent job (that has room for improvements, of course). Things like the virtual switch were really smart ideas. But, from the infrastructure point of view, things like "won't boot from SCSI disks" are inadmissible. Statements like these (about the SCSI boot) can just rise another statement: "You gotta be kidding". In a product built for Datacenters, there's no such thing as "won't boot from SCSI disk". Even saying that Windows Server 2008 is not exclusively for Datacenters, we can fool ourselves thinking that it THERE (the Datacenters) where it will be deployed most times - it's an obvius move. If you (a "generic" you) want to compete with VMWare and Virtual Iron, this kind of problem HAS TO disappear. It IS a showstopper. Many people excited about Hyper-V (including me) WILL NOT use it in their Datacenters with this kind of bug or problem or "collateral effect". There is no way to convince IT staff to add an IDE disk to a virtual machine just to boot - or worse: to move the OS to an IDE disk to do that. There is simply NO chance, and I'm not speaking only for myself... Come on - you guys are doing an excellent job, and you (the team) can surelly find some clever solution for this. The SCSI driver could run emulated until the VMBus can be loaded, or the BIOS could do the boot part until the VMBus is up - I don't know how, but one thing is pretty sure in the corporate market for Hyper-V: you guys will HAVE to find a way.. Thanks, Roberto P.R.

  • Anonymous
    April 23, 2008
    This really irritates me as well. I wanted to migrate from VMWare Server to Hyper-V, now I am not sure I can/will. Repair installs on an existing server just don't make sense. There should be a way to support "legacy" SCSI drives at the very least.

  • Anonymous
    May 10, 2008
    Ok. This is what I've learned so far about device access in Hyper-V. For device access in Hyper-V

  • Anonymous
    May 17, 2008
    Does a VHD created attached to a virtual scsi can be mounted in a virtual ide?  [[Tony's Reply]] Let me try and parse this.  Are you asking if a VHD attached to a VM on the Virtual SCSI actually reside on an IDE disk?  If so the answer is yes.  VHD's can also reside in LUNs, ...  The actual disk / LUN can be different from the virtual controller. 

  • Anonymous
    June 01, 2008
    What he's actually asking is if a VHD is attached to a SCSI virtual controller, can it be attached to an IDE virtual controller later?  [Tony's Reply]  VHD's have no knowledge of the virtual interface you connect them to.  You can attach SCSI now and IDE later.

  • Anonymous
    February 12, 2009
    Hi, I have an issue that we are using IBM Storage Manager v10 on the 2008 host and find that the virtual SCSI driver within Hyper-V to be worse performance then IDE driver as a data drive. our fibre channel is using MPIO windows x64 driver on the host connecting to a DS4300 hwne using the SCSI driver we were getting 10 MB/s performance, (single drive RAID 1 array) on the IDE driver we are getting 40 Mb/sec (which is closer to the real performance any ideas ?  ----  Tony's reply - What type of disk are you using the IDE and SCSI?  Fixed / Diff / VHD?  Is this WS08 Hyper-V or WS08R2?

  • Anonymous
    May 15, 2009
    Has the "no booting from SCSI in Hyper-V" been fixed yet?    [Tony's Reply] In Windows Server 2008 R2 we only support booting from Virtual IDE.  In my experience having the OS on virtual IDE has had little overall impact on performance.  I do recommend putting data on virtual SCSI drives.  Is there something specific you have measured or seen?

  • Anonymous
    January 27, 2010
    Big mistake in not making SCSI available for boot. It will likely tip the scale in favor of ESX. [Tony's reply] This is a common ask/statement.  The way Hyper-V works is the boot disk starts out emulated IDE and shifts into an inhanced mode during boot.  We do this for compatibility reasons.  In terms of performance or scale to 100's of VM's on a single host we have not seen booting in this way have any impact on the overall system. Both IDE and SCSI are virtual devices. Outside of disk Hyper-V does offer some network boot options.  If you have a particular issue I would certainly like to hear about it.

  • Anonymous
    October 28, 2010
    When will the SCSI boot be available?  Next Service Pack?