Historically, vSphere storage management has been based on constructs defined by the storage array: LUNs and file systems. A storage administrator would configure array resources to present large, homogenous storage pools that would then be consumed by vSphere administrator.
Since a single, homogeneous storage pool would potentially contain many different applications and virtual machines; this approach resulted in needless complexity and inefficiency. vSphere administrators could not easily specify specific requirements on a per-VM basis.
Changing service levels for a given application usually meant relocating the application to a different storage pool. Storage administrators had to forecast well in advance what storage services might be needed in the future, usually resulting in the overprovisioning of resources.
With Virtual Volumes, this approach is fundamentally changed. vSphere administrators use policies to express application requirements to a storage array. The storage array responds with an individual storage container that precisely maps to application requirements and boundaries.
VMware vSphere Virtual Volumes: Getting Started Guide