The elephant in the virtual datacenter room – VM alignment
VM alignment — it’s the to-do item almost every VM admin has buried on a sticky note somewhere, but is too time-consuming and daunting to tackle. And it’s a problem that poses real challenges as virtualization spreads into more mainstream workloads. Misaligned VMs magnify IO requests, creating demand for extra IOPS on the storage array. At a small scale with a few VMs, the performance impact is small. However the impact snowballs as the environment grows, with a single array supporting hundreds of VMs. Performance impact estimates range from 10 percent to more than 30 percent.
Every guest OS writes data to disk in logical chunks. Storage arrays also represent data in logical chunks, or blocks. When a VM is created, the guest OS writes logical data blocks to disk, but the block boundaries on the guest OS and storage don’t always align automatically.
If the blocks are not aligned, IO requests from the guest OS span two storage blocks, requiring additional IO. The Figure below shows an example of a misaligned layout and the IO impact.
This is not a new problem in the industry. It’s been widely discussed by both vendors (VMware, EMC, NetApp, Microsoft) and bloggers like Duncan Epping, Josh Townsend and Chad Sakac. The depth of the discussion makes it clear there’s a very real and difficult problem with alignment.
Alignment and virtual machines
In virtual environments, each VM’s state is represented as a group of virtual disks that reside on a datastore. The datastore can be a storage array or local disks attached to each virtual server. The storage layout on a datastore is comprised of a set of blocks.
A VM runs a guest OS that creates one or more virtual disks to store state. The guest OS typically defines the layout of each virtual disk using some commonly used partition layout, such as a master boot record (MBR). An MBR stores information about how each virtual disk is partitioned into smaller regions, with its size and location. Except for Windows Server 2008 and Windows 7, blocks defined by the guest OS file system (NTFS, EXT3, etc.) do not typically align with the underlying datastore block layout.
Any misaligned IO by the guest OS amplifies the amount of IO required by the datastore. Since each datastore is used by many VMs, even a small amplification will likely exhaust a datastore’s resources with large numbers of misaligned IOs. Although this is a well-documented issue, many administrators avoid the problem. For example, when we audited our own environment at Tintri, close to half of our VMs were misaligned. After proper alignment (more on that shortly), we experienced about a 30 percent performance improvement.
Addressing VM alignment
So why are VMs misaligned? Certainly not due to a lack of awareness or attempts to address the issue. A variety of utilities can help align VMs and reduce the wasted performance demands. Numerous blogs, whitepapers and knowledgebase articles describe why VMs should be aligned and provide step-by-step instructions.
But as VM admins know, re-aligning a VM is a largely manual process. Worse, it generally requires scheduling substantial downtime.
Tintri’s VM auto-alignment
Tintri’s VM-aware file system intrinsically “understands” each virtual disk. Building on this foundation, Tintri is introducing VM auto-alignment in our second-generation Tintri VMstore. Rather than the conventional disruptive approach of re-aligning each guest, Tintri VMstore dynamically adapts to the guest layout. Nothing changes from the guest OS point of view.
Tintri VMstore automatically aligns all VMs as they are migrated, deployed, cloned or created — with zero downtime. A VM administrator can now completely eliminate this arcane storage-related task, and enjoy performance gains from 10 percent to more than 30 nondisruptively and — with zero user interaction.