One of the most important concepts to understand in VSAN, in my opinion, is the notion of storage objects and components. Virtual Machines deployed on a vsanDatastore on VSAN 5.5 may have 4 different kinds of storage objects associated with it:
- The Virtual Machine home or “namespace directory”
- A swap object (if the virtual machine is powered on)
- Virtual disks/VMDKs
- Delta-disks created for snapshots. Each delta-disk is an object.
[Update: Additional objects types were introduced in later versions of VSAN, but these were the objects in VSAN 5.5]
Of these four objects, the virtual machine namespace may need a little further explanation. All virtual machines files, excluding virtual machine disks, deltas (snapshots) and swap, reside in an area called the virtual machine namespace on VSAN. The sorts of files in here can be the .vmx, the .log files, .vmdk & snapshot deltas descriptors files and everything else one would expect to find in a VM home directory.
So what about components? Each storage object is deployed on VSAN as a RAID tree and each leaf of the tree is said to be a component. For instance, if I chose to deploy a VMDK with a stripe width of two, then a RAID-0 stripe would be configured across two disks for this virtual machine disk. The VMDK would be the object, and each of the stripes would be a component of that object. Similarly, if I specified that my VMDK should be able to tolerate at least one failure in the cluster (host, disk or network), then a RAID-1 mirror of the VMDK object would be setup, with one replica component on one host and another replica component setup on another host in my VSAN cluster. (Don’t worry about the policy settings for the moment; these will be covered in a future post in great detail). Finally, if I asked for both striping and availability, then my striped components would be mirrored across hosts, giving me a RAID 0+1 configuration.
Delta-disks are created when a snapshot is taken of the VM. A delta disk inherits the same policy as the parent disk, e.g. stripe width, replicas, etc.
There are two limits in relation to components in VSAN 5.5:
- Maximum number of components per host limit: 3000 [Update: This was raised to 9,000 in later versions of VSAN]
- Maximum number of components per object: 64 (this includes stripe width and replica copies) [Update: This limit was removed in later versions of VSAN]
Components per host include components from powered off virtual machines. VSAN distributes components across the various hosts in the cluster and will always try to achieve an even distribution of components for balance. However some hosts may have more components than others, which is why VMware recommends, as a best practice, that hosts participating in a VSAN cluster be similarly or identically configured. Components are a significant sizing consideration when designing and deploying a VSAN cluster.
The vSphere web client allows administrators to interrogate objects and components of the VM Home namespace and the VMDKs of a virtual machine. Here is an example of one such layout. The VM has one hard disk, which is mirrored across two different hosts: