Snapshot

Snapshot – A virtual copy of a file or RAID volume or object at a point in time created in a database, hypervisor, file system or storage system that relies on the original. We’ll use volume to refer to all three here. A snapshot is a virtual copy. It has two main purposes: easy recovery of deleted or corrupted files, and a source for replication or backup. In order for the snapshot to protect against media failure, it must be transformed into a physical copy via replication or backup to another devices. If you copy this snapshot to another system it becomes a real copy. 

There are two ways of writing snapshots; Copy-on-Write (COW) and Redirect-on-Write (ROW). A COW system takes place when blocks in the volume are going to be overwritten. A copy is made of the to-be-overwritten blocks and written in a separate place or snapshot area. Then the fresh data overwrites the old data in the volume. There are three I/O operations needed; a read followed by two writes.

The ROW method treats snapshots as a list of pointers. When blocks in a volume are going to be overwritten the snapshot system is updated with the pointers to the about-to-be-overwritten blocks and then the new data is written to a fresh area of the drive. Thus the existing old data blocks are added to the snapshot system without having to be read and copied. There is only one I/O operation; a write, plus the snapshot pointer updating. Consequently ROW snapshots are faster than COW snapshots.