使用 ZFS 快照和克隆

ZFS 快照概述快照是文件系统或卷的只读副本 。快照几乎可以即时创建,而且最初不占用池中的其他磁盘空间 。但是,当活动数据集中的数据发生更改时,快照通过继续引用旧数据占用磁盘空间,从而阻止释放该空间 。
ZFS 快照具有以下特征:
可在系统重新引导后存留下来 。
理论最大快照数是 264 。
不使用单独的后备存储 。快照直接占用存储池(从中创建这些快照的文件系统所在的存储池)中的磁盘空间 。
递归快照可作为一个原子操作快速创建 。要么一起创建快照(一次创建所有快照),要么不创建任何快照 。原子快照操作的优点是始终在一个一致的时间捕获快照数据,即使跨后代文件系统也是如此 。
无法直接访问卷的快照,但是可以对它们执行克隆、备份、回滚等操作 。
创建和销毁 ZFS 快照快照是使用 zfs snapshot 命令创建的,该命令将要创建的快照的名称用作其唯一参数 。快照名称按如下方式指定:
filesystem@snapname
volume@snapname
在以下示例中,将创建 tank/home/ahrens 的快照,其名称为 friday 。
# zfs snapshot tank/home/ahrens@friday
通过使用 -r 选项可为所有后代文件系统创建快照 。例如:
# zfs snapshot -r tank/home@now
# zfs list -t snapshot
NAMEUSED AVAIL REFER MOUNTPOINT
tank/home@now 0 - 29.5K -
tank/home/ahrens@now 0 - 2.15M -
tank/home/anne@now0 - 1.89M -
tank/home/bob@now 0 - 1.89M -
tank/home/cindys@now 0 - 2.15M -
快照没有可修改的属性 。也不能将数据集属性应用于快照 。
# zfs set compression=on tank/home/ahrens@tuesday
cannot set compression property for 'tank/home/ahrens@tuesday': snapshot
propertIEs cannot be modified
使用 zfs destroy 命令可以销毁快照 。例如:
# zfs destroy tank/home/ahrens@friday
如果数据集存在快照,则不能销毁该数据集 。例如:
# zfs destroy tank/home/ahrens
cannot destroy 'tank/home/ahrens': filesystem has children
use '-r' to destroy the following datasets:
tank/home/ahrens@tuesday
tank/home/ahrens@wednesday
tank/home/ahrens@thursday
此外,如果已从快照创建克隆,则必须先销毁克隆,才能销毁快照 。
重命名 ZFS 快照可以重命名快照,但是必须在从中创建它们的池和数据集中对它们进行重命名 。例如:
# zfs rename tank/home/cindys@083006 tank/home/cindys@today
此外,下面的快捷语法提供了与上例等效的快照重命名语法 。
# zfs rename tank/home/cindys@083006 today
不支持以下快照重命名操作,因为目标池和文件系统名称与从中创建快照的池和文件系统不同 。
# zfs rename tank/home/cindys@today pool/home/cindys@saturday
cannot rename to 'pool/home/cindys@today': snapshots must be part of same
dataset
可以使用 zfs rename -r 命令以递归方式重命名快照 。例如:
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
users270K 16.5G22K /users
users/home76K 16.5G22K /users/home
users/home@yesterday0 -22K -
users/home/markm 18K 16.5G18K /users/home/markm
users/home/markm@yesterday 0 -18K -
users/home/marks 18K 16.5G18K /users/home/marks
users/home/marks@yesterday 0 -18K -
users/home/neil18K 16.5G18K /users/home/neil
users/home/neil@yesterday0 -18K -
# zfs rename -r users/home@yesterday @2daysago
# zfs list -r users/home
NAMEUSED AVAIL REFER MOUNTPOINT
users/home76K 16.5G22K /users/home
users/home@2daysago0 -22K -
users/home/markm 18K 16.5G18K /users/home/markm
users/home/markm@2daysago 0 -18K -

推荐阅读