Enhancing FreeBSD Stability With ZFS Pool Checkpoints
![/featured/hard_disk.webp](/featured/hard_disk.webp)
ZFS offers many interesting features, and one of the most widely used is the ability to create and transfer snapshots of entire datasets, even recursively. This approach is useful for backups or maintaining a specific “point in time” for datasets. For example, on FreeBSD, automatic snapshots of the dataset containing the root file system have been taken with each system upgrade for several releases. This way, thanks to Boot Environments, if there are any problems, it is possible to reboot from a previous snapshot.
However, sometimes we might need something more. Local snapshots do not protect against the deletion of entire datasets or the activation of new features that could potentially cause problems or incompatibilities.
A very useful tool that I have successfully used for some time is the pool checkpoint feature. This feature, imported from Illumos to FreeBSD in 2018, allows creating a sort of snapshot of the entire pool, including features, metadata, etc.
The checkpoint is different from snapshots of individual datasets. It is not possible to have more than one checkpoint, and some operations like remove
, attach
, detach
, split
, and reguid
will be impossible when a checkpoint exists. This also has a side effect: if there is a checkpoint, deleting a dataset will not release free space because the data will still be physically present in the storage thanks to the checkpoint.
Creating a checkpoint is very simple. Just use the command:
|
|
The operation is usually quick. When a checkpoint is present, the command zpool status
will show its details. For example:
|
|
To delete the checkpoint, you can use the command:
|
|
To rollback state to checkpoint and remove the checkpoint:
|
|
To mount the pool read only (without rolling back the data):
|
|
It is therefore possible to generate a checkpoint automatically via cron or manually when necessary, for example, before an operating system upgrade.
For more technical details, I suggest reading this excellent article by Serapheim Dimitropoulos, published in the FreeBSD Journal in January 2019.
Related Content
- How We Are Migrating (Many Of) Our Servers From Linux to FreeBSD - Part 3 - Proxmox to FreeBSD
- How We Are Migrating (Many Of) Our Servers From Linux to FreeBSD - Part 2 - Backups and Disaster Recovery
- Migrating From an Old Linux Server to a New FreeBSD Machine
- Searching for a Perfect Backup Solution
- Why We're Migrating (Many Of) Our Servers From Linux to FreeBSD