...
The objective of this API is to enable storage vendor side snapshots of virtual disk when using managed hardware as Primary Storage. When using the Primary storage plugins such as SolidFire vendor, each virtual disks is a LUN are LUNs on the storage array. Using the storage array snapshot capability benefits for performance and features sets feature set supported by the storage vendor.
StorageSnapshot does not fit in the VolumeSnapshot API because it would not perform the same tasks, a Volume Snapshot use uses the hypervisor capability to create a volume snapshot then extract it and archive it into the secondary storage. The intent of a StorageSnapshot is to perform a snapshot at the hardware vendor level, and keep it there for rollback purposes and disk cloning. StorageSnapshot is more aligned with the VMsnapshot API capability but is intent to be per virtual disk basis.
...
When using VDI-per-LUN with XenServer 6.5 + SolidFire storage array, all VirtualDisk VirtualDisks are unique LUN LUNs on the storage array so it leverage leverages snapshot capabilities of the storage vendor for volumes.
One On XenServer as hypervisor constraint is that each VDI run resides on a dedicated SR which occupies the whole LUN, as and the LUN is presented as a an iSCSI-LVM SR dedicated for a single VDI.
The StorageSnapshot API will be reuse by the VolumeSnapshot API when using storage plugin so the VolumeSnapshot would perform following task:
...
to Xenserver. Storage snapshots would allow the creation of volumes
...
more efficiently by creating a clone on the backend instead of doing a hypervisor copy.
Architecture and Design description
...
New API | params | Description | |
---|---|---|---|
createStorageSnapshot | id: volume ID | Create storage-snapshot of a volume | |
createVolumeFromStorageSnapshot | revertToStorageSnapshot | volumeID: targeted volume ID id: StorageSnapshot ID | Revert Create a volume back to the snapshot state. VM might require to be turned off if volume is mounted.from a storage snapshot by cloning it on the device |
deleteStorageSnapshot | id: StorageSnapshot ID | Delete a single storage-snapshot | |
listStorageSnapshot | volumeID: volume ID storageID: storage array ID (admin)? | List storage-snapshot of a volume |
...