62 lines
2.9 KiB
Markdown
62 lines
2.9 KiB
Markdown
<p align="center"><img src="http://www.openoid.net/wp-content/themes/openoid/images/sanoid_logo.png" alt="sanoid logo" title="sanoid logo"></p>
|
|
======
|
|
|
|
<img src="http://openoid.net/gplv3-127x51.png" width=127 height=51 align="right">Sanoid is a policy-driven snapshot management tool for ZFS filesystems. When combined with the Linux KVM hypervisor, you can use it to make your systems <a href="http://openoid.net/transcend" target="_blank">functionally immortal</a>.
|
|
|
|
<p align="center"><a href="https://youtu.be/ZgowLNBsu00" target="_blank"><img src="http://www.openoid.net/sanoid_video_launcher.png" alt="sanoid rollback demo" title="sanoid rollback demo"></a><br clear="all"><sup>(Real time demo: rolling back a full-scale cryptomalware infection in seconds!)</sup></p>
|
|
|
|
More prosaically, you can use Sanoid to create, automatically thin, and monitor snapshots and pool health from a single eminently human-readable TOML config file at /etc/sanoid/sanoid.conf. (Sanoid also requires a "defaults" file located at /etc/sanoid/sanoid.defaults.conf, which is not user-editable.) A typical Sanoid system would have a single cron job:
|
|
|
|
```
|
|
* * * * * /usr/local/bin/sanoid --cron
|
|
```
|
|
|
|
And its /etc/sanoid/sanoid.conf might look something like this:
|
|
|
|
```
|
|
[data/home]
|
|
use_template = production
|
|
[data/images]
|
|
use_template = production
|
|
recursive = yes
|
|
process_children_only = yes
|
|
[data/images/win7]
|
|
hourly = 4
|
|
|
|
#############################
|
|
# templates below this line #
|
|
#############################
|
|
|
|
[template_production]
|
|
hourly = 36
|
|
daily = 30
|
|
monthly = 3
|
|
yearly = 0
|
|
autosnap = yes
|
|
autoprune = yes
|
|
```
|
|
|
|
Which would be enough to tell sanoid to take and keep 36 hourly snapshots, 30 dailies, 3 monthlies, and no yearlies for all datasets under data/images (but not data/images itself, since process_children_only is set). Except in the case of data/images/win7-spice, which follows the same template (since it's a child of data/images) but only keeps 4 hourlies for whatever reason.
|
|
|
|
Sanoid also includes a replication tool, syncoid, which facilitates the asynchronous incremental replication of ZFS filesystems. A typical syncoid command might look like this:
|
|
|
|
```
|
|
syncoid data/images/vm backup/images/vm
|
|
```
|
|
|
|
Which would replicate the specified ZFS filesystem (aka dataset) from the data pool to the backup pool on the local system, or
|
|
|
|
```
|
|
syncoid data/images/vm root@remotehost:backup/images/vm
|
|
```
|
|
|
|
Which would push-replicate the specified ZFS filesystem from the local host to remotehost over an SSH tunnel, or
|
|
|
|
```
|
|
syncoid root@remotehost:data/images/vm backup/images/vm
|
|
```
|
|
|
|
Which would pull-replicate the filesystem from the remote host to the local system over an SSH tunnel.
|
|
|
|
Syncoid supports recursive replication (replication of a dataset and all its child datasets) and uses mbuffer buffering, lzop compression, and pv progress bars if the utilities are available on the systems used.
|