A common question I get when creating a XenDesktop architecture is if I should use the disks installed within my physical hypervisor server to store the hosted virtual desktop’s cache. There are many benefits in doing this and the major one is not using the more expensive shared enterprise storage. However, if you go down this route, you must make sure that the local storage is capable of meeting the needs of your virtual desktops. If you don’t, you will experience an unacceptable virtual desktop experience. How do you figure out your storage needs? Personally, I prefer to close my eyes and throw a dart at the board to see what number I hit. That number becomes the number of spindles I design in my solution.
Actually, the storage decision is based on a few items:
- Disk speed: how fast does the disk spin
- RAID level: RAID level the disks are configured
- Read/Write Percentage: What percentage of the usage is read and writes
- User activity: what are the virtual desktops doing (booting, logging on, working, logging off).
All of these go into the calculations for determining storage requirements. Let’s say I have 1 server with disks running at 15,000 RPM and I’m curious to see how many desktops that one server can support based on different activities. Because the disk speed is 15,000 RPM, I know that these disks should be able to support around 150 non-sequential IOPS. We could simply use an average IOPS number for each desktop, but you might run into issues as a boot or logon storm could overwhelm your storage subsystem as these two activities are much higher than the average. Personally, I like to break the IOPS calculations down based on the activities of the environment. The numbers used for this example were directly related to a particular use case based on user’s level of activity, the intensity of the bootup, logon and logoff storms. Your use case is likely to be different and your numbers will vary accordingly. However, for this use case, the following were used
- Bootup: 26 IOPS
- Logon: 12.5 IOPS
- Working: 3.9 IOPS
- Logoff: 10.7 IOPS
The next thing you have to realize is that the RAID level will directly impact how many write IOPS a disk can support. For example, if you use RAID 0, the write operation happens to 1 disk. If you use RAID 1 (mirroring), that one write operation actually happens twice across two disks. And if you use RAID 5 (striping across 3 disks with 1 parity disk), that one write operation happens 4 times! As you can imagine, the number of desktops a disk subsystem can support actually decreases as our RAID level moves from 0 to 1 and to 5.
Let’s take this a step further and include the read/write percentages for virtual desktops. Based on numerous independent tests (Virtuall by PQR), a good estimate is 20% read and 80% write. The Read/Write percentage will have a slight impact on the environment as writes are impacted by our RAID level. If we didn’t’ include this percentage, our calculations would assume we were doing 100% writes.
So, what does this all mean? First, we have to use a formula to take all of these things into account ((DISK IOPS)/(((Write%* RAID Level Impact) + (Read %))*IOPS for Activity). We should end up with something like the following
Note: These calculations assume that the server is only doing one activity at a time (all bootups or logoffs or logons). This is not typical. Most servers would be doing a combination of all 4, which will blend the results.
By working on these calculations, we can easily see that this server, with a single spindle at RAID 0 will only be able to support 38 active virtual desktops. At RAID 1, we could only support 21 virtual desktops, and RAID 5 only 11 virtual desktops. With the standard 8 core server running either XenServer, Hyper-V or vSphere, I just don’t think the locally installed storage will be able to support our expected user loads of 50-100 virtual desktops unless we add more spindles. If we were estimating that our hypervisor was going to run 75 virtual desktops at the working load activity (other activities would increase these numbers, we would need:
- RAID 0: 2 spindles
- RAID 1: 4 spindles
- RAID 5: 7 spindles
Now does your Hardware support this many disks? If you are using blade configuration, probably not as many of the more common deployments i’ve seen only contain 2 spindles.
So what does all of this mean besides showing my 6th grade math teacher that I still remember how to plug and chug numbers into a formula? It means make sure you understand what your infrastructure is capable of doing before finding out the hard way.
As always, if you have any architecture questions about desktop virtualization, then email AskTheArchitect@citrix.com.