25.3 ZFS 快照与还原
ZFS 快照(ZFS snapshot)类似于虚拟机快照,但其实现方式和用途有所不同。
目前 FreeBSD 中文社区(CFC)提供了 ZFS 脚本,可用于查看、创建、删除和恢复 ZFS 快照(ZFS snapshot)。ZFS 脚本项目地址
同时,已将该 ZFS 脚本部署至 https://docs.bsdcn.org/zfs.sh,可以在 FreeBSD 系统上直接使用
fetch命令进行下载
创建快照
默认情况下,使用 Auto ZFS 布局创建的分区结构如下
# zfs list # 列出所有 ZFS 文件系统及其属性
NAME USED AVAIL REFER MOUNTPOINT
zroot 1.72G 440G 96K /zroot
zroot/ROOT 1004M 440G 96K none
zroot/ROOT/default 1004M 440G 1004M /
zroot/tmp 104K 440G 104K /tmp
zroot/usr 760M 440G 96K /usr
zroot/usr/home 128K 440G 128K /usr/home
zroot/usr/ports 96K 440G 96K /usr/ports
zroot/usr/src 759M 440G 759M /usr/src
zroot/var 628K 440G 96K /var
zroot/var/audit 96K 440G 96K /var/audit
zroot/var/crash 96K 440G 96K /var/crash
zroot/var/log 148K 440G 148K /var/log
zroot/var/mail 96K 440G 96K /var/mail
zroot/var/tmp 96K 440G 96K /var/tmp创建名为 test 的 zroot 快照(使用 -r 参数可递归创建快照)
技巧
在命令中,
snapshot可以缩写为snap,其他命令也有对应的缩写形式,读者可自行查阅文档研究使用。
经测试,在上述默认分区布局下,该操作会快照整个 ZFS 文件系统。
还原快照
警告
请勿在生产环境中进行此类测试。
文件变动测试
可以通过增删文件来验证快照的有效性
经测试,如果事先创建了快照,即使执行 rm -rf /* 命令也可以顺利恢复;若系统使用 UEFI,则需要根据其他章节的说明自行恢复 EFI 引导
在还原快照时,不能一次性递归还原,需要对每个子文件系统单独还原
快照还原测试
思考题
如果读者有更优方案,可尝试实现;已知网络上存在一些相关脚本,读者可考虑将其作为功能请求或提交 Pull Request(PR)至 OpenZFS 项目。或者使用中文社区的 ZFS 脚本项目。
与虚拟机快照不同,在默认状态下,zfs rollback 命令无法回滚到除最新快照之外的快照(参考手册);使用 -r 参数可以递归回滚,但会删除该快照创建后的所有快照。
销毁快照
销毁快照时,可以使用 -r 参数递归删除:
最后更新于