In about a month or so DCIG is going to release its first Midrange Array Snapshot Software Buyer’s Guide. It is in preparing for the release of this Buyer’s Guide that DCIG had to evaluate a number of different implementations of snapshot software on midrange arrays. In so doing it became evident that DCIG had to make a determination as to what was the “Best” method for a midrange array to take snapshots of a volume in order for DCIG to properly score and rank snapshot software on different midrange arrays.
Defining what constitutes the “Best” way for a midrange array to take a snapshot clearly is a matter of opinion but there were two factors that ultimately influenced the conclusion that DCIG reached.
First, the snapshot software had to efficiently use the available storage capacity on the storage array. This factor was important but ultimately it was NOT the most important factor. Clearly those snapshot techniques that just make a copy of the pointers to blocks on a volume are going to use storage capacity more efficiently than those snapshot implementations that copy every block of data on a source volume to a target volume.
While this method of only copying or making a snapshot of the pointers makes the most “efficient” use of storage capacity on a storage array, there may be times when copying every block of data on a volume is actually preferred. This may be in circumstances where an organization wants to run tests against production data or make a backup of the full volume. By copying all of the blocks on a volume to another volume on the storage array, this backup or test can occur without negatively impacting the volume which is being accessed by the production application.
Of course, one still needs to account for the overhead on the storage array associated with copying all of these blocks from the source volume to the target. This task of copying the data may generate as much or more overhead on the storage array as the actual backup or test itself. Further, depending on the time of the day when the snapshot occurs, copying of the data from the source to the target volume could also negatively impact the production application.
These factors led to the second observation that ultimately swayed DCIG’s opinion as to which snapshot implementation is the “Best.”
Snapshots of data need to take place and be managed in such a way that the performance impact to the storage array and the applications hosted on it is minimized. All snapshots in some way impact storage array performance. However there are some snapshot implementations that have less of an impact on storage array performance than others.
Simply taking a snapshot of the pointers on a volume known as “differential” (as opposed to copying all of the blocks of data on a volume) certainly helps to minimize overhead on a storage array. However the way that blocks on a volume to which pointers refer are managed after the snapshot is taken is what separates the “best” from the “also-ran.”
One implementation of differential snapshots is known as “copy-on-write.” It copies blocks of data on the source volume to a target volume when data on the source volume is modified or updated. When an update occurs, the segments of changed data are first copied to the target volume and then the new, incoming data is written to the source volume.
On the surface, this approach sounds good but upon closer inspection, in environments with high data change rates, this can result in substantial performance overhead on the storage array. The reason is that any time data on the source volume is changed, before new data can be written to the source volume, existing blocks of data must first be copied to the target volume. As a result a copy and a write of existing data must occur before new data can be written. So applications with high data change rates may see a marked decrease in their performance when “copy-on-write” snapshots are taken on their volumes.
It is for this reason that DCIG came to the determination that the “Allocate-on-write” differential snapshot technique is currently the best snapshot implementation on a storage array. Like the “copy-on-write” technique, it also first makes a copy of the pointers to the blocks on the source volume. But unlike the “copy-on-write” technique, new writes go directly to the target volume so there is no overhead associated with first copying and then writing existing blocks of data to the target volume.
The good news for users is that this “Best” Allocate-on-write snapshot technique shows up on most midrange storage arrays available on the market. Which storage arrays support this “Best” snapshot technique (and which ones don’t) along with many other factors that influence how snapshots are implemented will be revealed in the very near future in the DCIG Midrange Array Snapshot Software Buyer’s Guide that will come out in late February 2011.