Snapshots and recovery of persistent volumes

Docker has come a long way since the days when it was primarily used to host short-lived services with ephemeral storage. It has outgrown the original aims of its designers and is poised to embrace enterprise applications with their stringent storage requirements. With the increased acceptance of persistent storage by the Docker community, it won’t be long before users expect features that are the cornerstone of any enterprise storage viz.  snapshots, backup and recovery. HyperScale for Containers, a new offering to be launched by VERITAS soon, is uniquely placed to fill this void.

HyperScale technology utilises direct attached, commodity hardware to provide a simple and cost effective enterprise storage solution. To this end, it splits its functionality across two logical planes. The compute plane comprises machines with faster storage and ample CPU firepower to host application containers.  The data plane on the other hand runs on machines with much bigger storage, not necessarily fast but good enough to store volume snapshots. This design enforces a strict separation of concerns. By delegating snapshot management to the data plane, HyperScale guarantees that primary workloads on computes suffer no perceptible performance penalty.

All application writes on computes go to a designated area – typically fast, SSD storage – which HyperScale sets aside as writeback cache. The cache stores data on a per-volume basis and also services read requests if the requested data is available locally. As a result, application I/O is extremely fast. Of course, SSD are precious and scarce resources which cannot hold the data indefinitely. This is where HyperScale comes into its own. At predetermined intervals, it flushes the per-volume cache to the permanent storage – typically HDD – and transmits a copy to the data plane as a snapshot. What gets captured thus is a point-in-time state of the volume comprising deltas written to it during the given interval. This forms the basis of HyperScale’s backup and recovery capabilities. The figure below illustrates these concepts.

Picture1.png


One common use of snapshots is cloning a previous state of a volume. You do this by creating a new volume on the data plane from an existing snapshot and then attaching it to a container on the compute node. Snapshots also allow volume recovery in the event of disaster. Since all cached writes are snapshotted to the data plane, the volume can be recreated by combining all these snapshots and mounting it inside a container on another compute. It’s worth noting that in both the scenarios, an application can use the newly synthesised volume all the while the recovery is in progress. If an application performs read on extents that are not yet recovered, they are fetched from the data plane on the fly to service the read operation. HyperScale pulls off this trick without the application knowing it.

If you happen to be at DockerCon, do visit the VERITAS booth (G1) to see for yourself!