Not to scare Storage Administrators but VMware announced this feature in 2012 and now it is part of vSphere 6.0
VVOL is not a feature that vSphere delivers, like vMotion, but an API that storage vendors must implement.
“Currently all storage is LUN-centric or volume-centric, especially when it comes to snapshots, clones and replication. VVols makes storage VM-centric
With VVol most of the data operations can be offloaded to the storage arrays. VVols goes much further and makes storage arrays aware of individual VMDK files”
Virtual Volumes Terminology
Let’s start our discussion about the new terminology that VVols introduces:
VASA provider, or a Virtual Volume Storage Provider (let’s call it the VP) is a software component that acts as a storage Awareness Service for vSphere and mediates out-of-band communication between vCenter and a storage system. The VP can take different forms; some array vendors have it embedded in the storage controller while others run it in an appliance. An administrator needs to add details of the VP to vCenter server. This is usually something as simple as providing a URL to the VP, along with some credentials. This information should come from the array vendor documentation.
Protocol Endpoint is a logical I/O proxy presented to a host to communicate with Virtual Volumes stored on a Storage Container. When a virtual machine on the host performs an I/O operation,the protocol endpoint directs the I/O to the appropriate virtual volume. This is a LUN on block storage arrays, and a mount point on NAS arrays. These must be pre-configured on the array, and then presented to all the ESXi hosts that wish to use VVols. These are discovered ‘or’ mounted to the ESXi hosts just like a datastore. However they are not used for storage, just communication.
Storage Container is a pool of raw storage capacity or an aggregation of storage capabilities that a storage system can provide to virtual volumes. It is not a LUN! However, this is where the Virtual Volumes are created.
Storage Policy Based Management, through VM Storage Policies, is used for virtual machine provisioning to match storage capabilities to application requirements. The location, layout and storage capabilities of a VM depends on the storage policy associated with the VM.
Virtual Volume Datastore is a vSphere representation of a Storage Container. When setting up Virtual Volumes, a Virtual Volume datastore is created to introduce the Storage Container to vSphere.
Virtual Volumes (VVols) are stored natively inside a storage system that is connected through block or file protocols. They are exported as objects by a compliant storage system and are managed entirely by hardware on the storage array. Virtual Volumes are encapsulations of virtual machine files, virtual disks, and their derivatives.
Configuration Steps for Virtual Volumes
- Add the VASA Provider to vCenter
- Discover or mount the PEs
- Create the Virtual Volume data store
- Storage Policies
- Deploy VMs with a VM Storage Policy
Today LUN-Datastore vSphere environments, a datastore serves two distinct purposes – It serves as the access point for ESXi to send I/O to, and it also serves as storage container to store many virtual machine files (e.g. VMDKs). If we separate out the concept of the access point from the storage aspect, we can run with a fewer number of access points, each of which could refer to a number of storage entities. This is the purpose of the Protocol Endpoint. We can very many virtual volumes with just a few access points.
Protocol Endpoints are LUNs when the storage is block storage. Protocol Endpoints are mount-points when the storage is NAS/NFS. A PE is discovered/mounted in the same way as block and NAS datastores are discovered/mounted today.
Virtual Volumes are said to be bound to a Protocol Endpoint. When it comes to multipathing, an administrator only needs to set up multipathing and load balancing for the PE, and all the Virtual Volumes bound to that PE inherit the same multipathing and load balancing characteristics.
VVols is supported with the following protocols:
FCoE (Fiber Channel over Ethernet
The first thing to point out is that a storage container is not a LUN. It is a logical storage construct for the grouping of virtual volumes and is setup on the storage array by the storage administrator. In some respects, it can be thought of as a pool of storage on the array. The capacity of the container is based on physical storage capacity and there must be a minimum of at least one storage container per array. The maximum number of storage containers depends on the array. Multiple different storage containers can be used to logically partition or isolate VMs with diverse storage needs and requirements. A single storage container can be simultaneously accessed via multiple Protocol Endpoints.
When presented to ESXi hosts, the storage container appears as a VVol datastore.
Those of you who are familiar with VSAN will already be familiar with virtual volumes in some respects. When we talk about virtual volumes or VVols, what we are basically talking about is the encapsulation of virtual machine files on hardware and exported as objects. Virtual Volumes are created when you perform Virtual Machine operation such as “Create a Virtual Machine”, “Power on a Virtual Machine” or “Clone or Snapshot a VM”. vCenter associates one or more Virtual Volumes to a Virtual Machine. A Virtual Machine, when deployed to a VVol datastore, can be though of as being comprised of a number of Virtual Volumes.
Types of Virtual Volumes
Just like on VSAN, where each VM is made up of a set of objects, VMs deployed on a VVol datastore will be made up of a number of different VVols. The following are some typical VVols:
- Configuration Volume (Config-VVol) or HOME directory
- Represents a small directory that contains metadata about a VM
- .vmx files
- descriptor files
- log files
- Data Volume
- Corresponds to a Virtual Disk (e.g. VMDK)
- Swap Virtual Volume
- Contains Virtual Machine Swap file.
- Created when VM powered on.
- Clone/Snapshot Volumes
- Corresponds to a snapshot
- Other Virtual Volume
- Vendor Specific
- Storage array vendors may create their own VVols, for whatever reason
Big Thanks to “Cormac Hogan” for the detailed explanation about this feature