25.3 ZFS 快照与还原
ZFS 快照类似于虚拟机快照。
创建快照
默认创建分区(Auto ZFS)如下:
# zfs list
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快照 zroot(经测试,在上述默认分区下代表快照整个 ZFS 文件系统,-r 即递归创建快照,test 是随便起的名字):
# zfs snapshot -r zroot@test
# zfs list -t snap
NAME USED AVAIL REFER MOUNTPOINT
zroot@test 0B - 96K -
zroot/ROOT@test 0B - 96K -
zroot/ROOT/default@test 0B - 7.18G -
zroot/tmp@test 0B - 176K -
zroot/usr@test 0B - 96K -
zroot/usr/home@test 0B - 31.1M -
zroot/usr/ports@test 0B - 1.98G -
zroot/var@test 0B - 96K -
zroot/var/log@test 0B - 444K -文件变动测试
我们可以增删一些文件来验证。
经过测试,若提前快照,单纯的 rm -rf /* 亦可顺利恢复。若使用 UEFI,则需要自行按照其他章节一道恢复 EFI 引导。
警告
请不要在生产环境中进行测试。
还原快照
还原时却不能递归还原快照,必须挨个还原。
思考题
如果你有更好的方案请告诉我们,已知网络上有一些脚本可用。请读者思考自己能否将其作为功能请求或 PR 提交到 OpenZFS 项目。
与虚拟机快照有所不同,在缺省状态下,zfs rollback 命令无法回滚到除最新快照以外的快照(参考手册),除非使用 -r,但这会删除该快照创建后的所有快照。
# zfs rollback -r zroot@test
# zfs rollback -r zroot/ROOT@test
# zfs rollback -r zroot/ROOT/default@test
# zfs rollback -r zroot/tmp@test
# zfs rollback -r zroot/usr@test
# zfs rollback -r zroot/usr/home@test
# zfs rollback -r zroot/usr/ports@test
# zfs rollback -r zroot/var@test
# zfs rollback -r zroot/var/log@test销毁快照
销毁快照(销毁的时候可以使用 -r 递归销毁):
# zfs destroy -r zroot@test
# zfs list -t snap
no datasets available技巧
在命令中
snapshot可以缩写为snap。其他各命令也均有缩写,请读者自行研究。
最后更新于
这有帮助吗?