Scripts for trying out how ZFS works in some simple scenarios.
https://aweirdimagination.net/2024/03/17/experimenting-with-zfs/
| bin | ||
| external | ||
| .gitmodules | ||
| LICENSE | ||
| passphrase | ||
| README.md | ||
zfs-test
Scripts for trying out how ZFS works in some simple scenarios.
I ran these scripts on a VM. They will modify the ZFS pool named tank,
which is the default pool name in ZFS examples, so may be a valid ZFS
pool name on your system.
# Create a test pool named tank backed by a the file /root/tank
fallocate -l 1G /root/tank
zpool create tank /root/tank
cd zfs-test/bin
# dump logs from create-and-measure / copy-all-and-measure into ../logs/
./measure-all
# read ../logs/ and print Markdown table of dataset space used below
./logs-to-table --links
The rows are which script from bin/create-test-setup/ was used to
create the tank/test dataset. The columns are which script from
bin/copy-snapshot/ was used to copy each snapshot into tank/target.
The cells are the space used by the tank/target (or test/test for
the first column) dataset for that combination.
| Create script | orig | rsync-ahvx | rsync-ahvx-sparse | rsync-inplace | rsync-inplace-no-whole-file | rsync-no-whole-file | zfs-diff-move-then-rsync |
|---|---|---|---|---|---|---|---|
| edit-part-of-file | 1.16M | 2.04M❌ | 2.04M❌ | 2.04M❌ | 1.17M✅ | 2.04M❌ | 1.17M✅ |
| empty | 24K | 24K✅ | 24K✅ | 24K✅ | 24K✅ | 24K✅ | 24K✅ |
| encrypted-nested | 1.84M | 24K✅ | 24K✅ | 24K✅ | 24K✅ | 24K✅ | 24K✅ |
| move-file | 1.04M | 2.04M❌ | 2.04M❌ | 2.04M❌ | 2.04M❌ | 2.04M❌ | 1.04M✅ |
| random-1M-file | 1.03M | 1.03M✅ | 1.03M✅ | 1.03M✅ | 1.03M✅ | 1.03M✅ | 1.03M✅ |
| zeros-1M-file | 24K | 1.03M❌ | 24K✅ | 1.03M❌ | 1.03M❌ | 1.03M❌ | 1.03M❌ |