All the conventional storage systems that utilize snapshots have two problems: wasted space
and degraded performance.
While data (i.e. VM images) doesn’t consume that much space, snapshot history takes up a lot of space. When talking about having the need to run snapshots
, the disk space on the primary storage can be
used in the following ways:
- RAW – total capacity that storage system has;
- Usable – space available to user after all the space reductions due to one or another reason (RAID, Synchronous Mirroring, Erasure Coding etc.);
- Space for snapshots – part of usable space reserved for snapshots.
This results in a great waste of expensive disk space that turns critical when going from spindle hard drives to flash storage.
The problem is partially resolved by using Information Life-Cycle Management (ILM). One of the examples of ILM is Automatic or Manual Tiering. In some systems, there is a separate lower cost pool, where the snapshots and other "cold" data reside. However, Tiering takes time, no matter if it’s automated or manual. Tiering also creates an additional load on the hardware resources because data gets copied from one tier to another constantly, which will significantly decrease the performance and flash lifetime.
Snapshots are usually implemented by either Copy-on-Write (COW) or Redirect-on-Write (ROW). They are characterized as follows:
- COW snapshots utilize read-modify-write sequence. To put it simple, when new data blocks come, the system moves the original data block to another location, and after, the new block is written instead of the original one. The system has to perform 3 operations (one read and two writes), instead of one write. Obviously that creates additional load on the hardware involved in the snapshot related processes, which results in performance decrease.
- ROW creates fragmentation since all the new data is written in another place on the disk, instead of putting it sequentially. That results in random reads and writes, and performance decrease. Also, ROW stores all the snapshot history, thus consuming the disk space.
To make a long story short, the COW kills performance and ROW boosts performance using some more disk space.