共用方式為


SCSI vs IDE disks in Domain Controllers running as Virtual Machines on Hyper-V in Windows Server 2008 R2

When installing Windows Server 2008 R2 Domain Controllers on Hyper-V R2, events were generated by AD about being unable to disable write caching for the disks where AD files (database, logs, SYSVOL) were stored. No events were logged for the boot disk. The boot disk is presented as IDE to the VM. The other volumes were presented as SCSI disks. The SCSI disks cannot have their write cache disabled by the Operating System.

My recommendation is on Domain Controllers (or any other server role requiring that the write cache is disabled) which are running as virtual machines, hosted on Windows Server 2008 R2 Hyper-V, ONLY use IDE disks, not SCSI disks for critical AD files. Note this only affects the way the disks are presented to the VM, not to the host Operating System.

If the server is a multi-role server (e.g. AD and File Services), the data disks for the second role can be SCSI disks. Check that this other role does not require write caching to be disabled on the data disks.

Synthetic vs Emulated

Synthetic

Synthetic drivers are drivers which bypass the normal driver layering system between user-mode/kernel-mode in both the child and parent partitions. Instead they use the VMBus to talk more directly to the hardware.

This requires that the child OS partition OS has started up enough to be running the VMBus drivers and services. Until this happens, emulated drivers are used. In this way the OS is said to be “enlightened” to the fact that it is virtualised.

Emulated

Emulated drivers have no idea the hardware has been virtualized and function in the classic way of attempting to talk to the HAL and eventually “ring 0”. This requires either binary re-writes of these data calls (a la ESX) or hardware virtualization (a la Hyper-V) to create a “ring -1”.

There is a performance hit in using emulated drivers compared to their equivalent synthetic counterparts.

SCIS vs IDE

When booting a VM, it is not possible to use SCSI disks as those require the OS to be enlightened, which it is not during installation or boot-up.

So, the boot (and system) partition must be presented to the VM as IDE.

All other partitions can be either SCSI or IDE.

IDE is limited to 3 connected disks (1 port is retained for the CD-ROM, which is required for updating the integration components).

SCSI can have 64 connected disks per controller and 4 controllers per VM, giving a total of 256 SCSI disks per VM.

SCSI also supports hot-add/removal of disks, which IDE disks do not.

Performance

Once the OS in the child partition (the VM) has started, there is no perceptible difference between IDE and SCSI for Windows 7/Windows Server 2008 R2 guests.

The results of tests of this are located here:

https://www.nodnarb.net/post/2009/11/30/Microsoft-Hyper-V-2008-R2-IDE-vs-SCSI-Performance.aspx

clip_image002

Write Caching

SCSI disks presented to a VM do NOT support disabling the write cache.

clip_image004

Some roles or applications may require that the disk write cache is disabled. An example of this is Active Directory. When installed on a Windows Server 2008 R2, AD will attempt to tell the OS to disable the write cache of disks holding critical data related to AD:

  • · Ntds.dit (AD database)
  • · AD Database logs
  • · SYSVOL

A warning event will be generated in the “Directory Services” log (ID 1539) for each component described above.

As an example: if AD database and SYSVOL are on the same SCSI disk (D:) and AD logs are in another SCSI disk (E:), 3 events will be generated. D: will have 2 events generated, E: will have 1 event. If the logs are on C:, which is bootable and therefore is an IDE disk, only 2 events will be generated in all.

clip_image006

Comments

  • Anonymous
    January 01, 2003
    Guys, this post is now 5 years old. In Hyper-V on Windows Server 2012 R2 we have Generation 2 VMs where booting from SCSI is the norm (along with loads of other cool things, like UEFI booting, which allows for Secure Boot).

  • Anonymous
    January 01, 2003
    Agreed, Charlie. Forster's post is a good elaboration of Things to Avoid mentioned in the TechNet article you referenced.

    An updated link to the TechNet article:
    https://technet.microsoft.com/pt-pt/library/d2cae85b-41ac-497f-8cd1-5fbaa6740ffe(v=ws.10)#deployment_considerations_for_virtualized_domain_controllers

  • Anonymous
    January 02, 2011
    Thanks for the information.  I had spent lot of time trying to figure out why I coudn't disable write caching on my DC VM's SCSI disks.  However, this article seems to suggest that you only need to disable write caching if you use IDE disks: technet.microsoft.com/.../dd348449(WS.10).aspx At the bottom of the article it says "To reduce the chance of corruption of Active Directory data, use SCSI controllers or disable write caching on ATA/IDE drives."

  • Anonymous
    August 08, 2015
    Hi Craig, I noticed this post and it seems to relate to my issue whereby my hyper-v guest DC flags me with event ID 13512. I have Hyperv host running on Server 2012 R2 Datacenter with host installed on the local 500 GB SAS drives. My Guest HV is Server 2012 R2 Standard. Im more confused after googling and it seems folks are all over the map on what's best practice. Should I uninstall and reinstall my Hyper-v DC guest and make it a Generation 1 guest. My vm guests are running on the SAS attached SAN as Generation 2. Any pointers would be appreciated.

  • Anonymous
    August 08, 2015
    @Jim Smart: This blog post is 5 years old. 2 OSes have since been released and another is in public preview. Review this KB (https://support.microsoft.com/en-us/kb/2801713) for better information on what is happening. In short: try to disable the disk caching on the hosts disks. The VM is simply saying "I have no idea what the underlying storage is set to do, so I have to assume that it's caching writes" You can't stop this message from appearing when you use SCSI disks in the VM, and you can ONLY use SCSI disks in a Generation 2 VM. So you should ignore these messages in your case, so long as you are sure you disabled caching on the disks of the host.

  • Anonymous
    August 27, 2015
    Hi Craig, I have two node Windows Hyper-V 2012 R2 cluster with few Windows 2012 R2 VM running on it.
    I want to install DC on windows 2008 VM for legacy application.my question is,
    1. Is DC 2008 supported on Windows 2012 R2 Hyper-V? Most blog I read suggested to use Gen 1 VM for 2008 boot disk and use SCSI Gen 2 VHDX for AD data store. You suggest to use IDE for both. Is this still valid? I have not came across any article specifically discuss about DC 2008 on Hyper-V 2012 R2, What is the point of disabling cache on guest if the guest's disks are store on cluster share volume. Is CSV cache is disable on Host by default?

  • Anonymous
    September 01, 2015
    @Vic: Remember, this blog is ancient now. Make sure to read my comment above from 8/8/2015. Windows Server 2008 is permitted to run as a VM so long as you only use a maximum of 4 CPUs and you must install both SP2 and the integration compnents in the guest:https://technet.microsoft.com/library/dn792027.aspx
    Generation 2 VMs are not per-disk, they are for the entire VM. Generation 2 use UEFI booting. This is only supported on Windows VMs which are Windows 8/Windows Server 2012 or newer. CVS cache is write-thouh caching, meaning that we do not signal to a guest that the write has completed until it really has landed on a disk, BUT we will keep a copy of that write in RAM incase you read it again shortly and will retrieve that data from RAM instead of going to disk. So there is no risk in using CSV cache.

  • Anonymous
    October 28, 2015
    Hi. To use the IDE is not a good idea, you should get the same warning like scsi but it does not. Yes you get no errors but that is a fail. Microsoft has made a fix/update for that and say there is a risk for inkonsistent data if you have not a regular shutdown.