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 http://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 (14)

  1. "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

  2. tvoellm says:

    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

  3. Anthony says:

    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

  4. Mike says:

    Will the Scsi-boot be supported in RTM?

  5. Kofler says:

    And what about "seamless" Virtual Server to Hyper-V conversation. Only a marketing bluff?

  6. Roberto says:

    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.

  7. Kyle says:

    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.

  8. Ok. This is what I've learned so far about device access in Hyper-V. For device access in Hyper-V

  9. mescwb says:

    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. 

  10. Jimmy says:

    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.

  11. Kevin says:

    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?

  12. Carl says:

    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?

  13. Steven says:

    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.

  14. Johnny says:

    When will the SCSI boot be available?  Next Service Pack?