# Use Snapshot

<!--- Template Guidance 
The how-to content goes below.
Generate the frontmatter description by feeding the full how-to text into an LLM and letting it create a 150-character summary.

NOTE: LLM Prompt: `create a 150 char description of @_index.md`
--->

## Take a Snapshot of a Volume

```bash
exo compute block-storage snapshot create volume-test-1 --zone ch-gva-2
```

## Block Storage Durability and Snapshots

By default Block Storage offers the same level of durability as locally
attached storage. When the system acknowledges an `fsync`, the data is reliably
stored on redundant hypervisor local storage. The data is then asynchronously
replicated to other systems.  The durability of data can be further improved by
taking snapshots: as part of taking a snapshot we ensure that all data is fully
replicated to multiple systems in addition to the local hypervisor storage.

Writes acknowledged by fsync
: We guarantee the same durability for fsync'd writes as we do for local
  storage. This means that while the data is written to the hypervisor's local
  disk, it is not immediately replicated off-hypervisor. In the event of
  a hypervisor failure before a snapshot is taken, some fsync'd data might be
  lost.

Snapshotted Writes
: For snapshotted data, we guarantee 99.999999999% of durability, the same
  level we do for object storage. Once a snapshot is successfully created, all
  data up to the point of the snapshot is redundantly stored in 3 different
  copies and protected against hypervisor-level failures.

> [!NOTE]
> This design constraint is fundamental to the Block Storage system and should be considered 
> when designing your data durability strategy. For maximum data durability, regular snapshots 
> are highly recommended.

## Create a Volume from a Snapshot

```bash
exo compute block-storage create volume-test-from-snapshot --snapshot <snapshot_name> --zone ch-gva-2
```

## Take a Snapshot of a Volume

```bash
exo compute block-storage snapshot create volume-test-1 --zone ch-gva-2
```

