In storage systems, a snapshot refers to a copy of the stored data as it was at a specific point in time. This can be performed at the filesystem level (BTRFS and ZFS are examples of well-known filesystems implementing this), by a logical volume manager, or by a dedicated storage system.
Most implementations of snapshots use a copy-on-write system; when a snapshot is created, no extra data is stored. Instead, once a specific file or block on disk is updated, the updated data is saved separately from the original version. In this way, snapshots can be created with a relatively small amount of storage and CPU overhead.
Depending on the system, snapshots can be used read-only or read-write; read-only snapshots are primarily used for backups and asynchronous replication; read-write snapshots can be used for various purposes, because they enable you to restore a filesystem to a previous point in time and immediately start using it.

