I have some Dell PowerEdge 2950's with 4x 15k, 150GB Cheetah SAS drives in them. They are going to be VM hosts, CentOS running ESXi with Windows Server 2k8 guests. Some guests will be hosting IIS servers, and others MSSQL servers.

I am trying to set the RAID virtual disks settings and can't decide which is more optimal given this situation;

Read Policy: Out of Read-Ahead, No-Read-Ahead and Adaptive Read-Ahead, the default is Read-Ahead.

I will be making large sequential writes initially, writing out blank images for virtual machine hard drives (lets say 30GBs from /dev/zero for example) so Read-Ahead seems good at first. But within the virtual machines reads could be random from anywhere within their file systems as they are IIS and MSSQL servers, so perhaps No-Read-Ahead is a better idea?

Now I think Adaptive Read-Ahead would be better then as a compromise but I don't know much about this option, how does it compare in performance to the others?

Write Policy: write-back caching, write-through caching, the default is  write-back caching.

The default of write-back caching is safer than write-through caching but at a performance expense. My thinking here is that in the event of power loss for example, it seems more likely in my head (this is why I need some clarification!) that damage will occur to a guest VM with write-back caching enabled, so I should favour write-through?

I have searched around and there is obviously no definitive answer, so I would like to find out what is best for my situation.

  • 2
    Centos running ESXi? WHA? – dyasny May 31 '12 at 14:22
  • 1
    @javano, I'm not sure you understand what ESXi is if you think you are going to run it on CentOS. – MDMarra May 31 '12 at 15:49
  • I'm more of a KVM kinda guy, but I have been recommended to give it a go? Two comments now of a similar suggestions, what is the obvious I am missing here about ESXi, should I just be sticking with KVM? I'm not a massive fan of Windows on KVM so was willing to try something new. – jwbensley May 31 '12 at 16:24
  • 1
    ESXi is a bare-metal hypervisor. You don't run it on top of anything. – MDMarra May 31 '12 at 17:59

First off, hypervisors are sometimes referred to as "IO blenders". They make it very hard for any algorithm to predict what they'll do next because they don't let each VM have its own real SCSI disk. Because of this, you definitely don't want straight up read-ahead. I don't know what your system thinks adaptive read-ahead is, but if it's a setting that will detect when sequential reads are being done and conservatively read a little bit ahead, that would probably be fine.

Second, you always want write-back caching if it's in any way possible. It acknowledges writes as soon as they're saved to cache and then destages them to disk as quickly as possible. This is not safe if you lose power to your cache, though. Battery backed up cache is a requirement for write-back caching, if you want to have consistent data when you come back from a power failure.

| improve this answer | |
  • 2
    +1 Totally correct. You want Adaptive Read-ahead and Write-back caching. Also, make sure to turn off the individual caches on the drives themselves, as that's a potential area for data loss (having the battery-backed write cache on the RAID controller practically negates the need for individual drive caching). – Bigbio2002 May 31 '12 at 19:37
  • Great, thanks guys for your input, really appreciate the info :)_ – jwbensley Jun 10 '12 at 13:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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