创建和销毁 ZFS 快照
我们可以使用 zfs snapshot 命令创建快照,该快照将我们要创建的快照的名称作为其唯一参数。
在下面的示例中,我们正在创建名为 friday 的数据池/家庭/用户的快照。
# zfs snapshot datapool/home/user@friday
要销毁 ZFS 快照,请使用 zfs destroy 命令后跟快照名称。
在下面的示例中,我们正在销毁名为 datapool/home/user@friday 的快照。
# zfs destroy datapool/home/user@friday
在尝试销毁 ZFS 快照时,我们必须牢记几件事情。
- 如果存在数据集的快照,则无法销毁该数据集。
- 如果克隆是从快照创建的,则必须先销毁它们,然后才能销毁快照。
回滚 ZFS 快照
我们可以使用 zfs rollback 命令后跟快照名称来放弃自特定快照以来所做的所有更改。
zfs rollback 命令使文件系统恢复到拍摄快照时的状态。
在下面的示例中,数据池/家庭/用户文件系统回滚到星期四快照。
# zfs rollback datapool/home/user@thursday
默认情况下,zfs rollback 命令不能回滚到最新快照以外的快照。
要回滚到较早的快照,我们必须销毁所有中间快照。
为此,我们必须使用 zfs rollback 命令指定 -r 选项,后跟快照名称,如下例所示。
# zfs rollback -r datapool/home/user@tuesday
其中:数据池/家庭/用户文件系统回滚到星期二快照。
要进行此操作,必须销毁周三和周四的快照。
访问快照文件
文件系统的快照可在文件系统根目录下的 .zfs/snapshot 目录中访问。
例如,如果rpool/export/home挂载在/export/home上,则可以在/export/home/.zfs/snapshot/friday目录中访问rpool/export/home@friday快照数据,如下例所示.
# ls /export/home/.zfs/snapshot friday
显示 ZFS 快照
我们可以使用 zfs list -t snapshot 命令显示快照,如本示例所示。
# zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT rpool/ROOT/solaris@install 55.0M - 2.67G rpool/ROOT/solaris/var@install 2.51M - 220M rpool/export/home@friday 0 - 32K
我们可以使用listsnapshots 池属性在zfs list 输出中启用或者禁用快照列表的显示。
默认情况下禁用此属性。
要启用此属性,请使用 zpool set listsnapshots=on,后跟池名称。
例如 :
# zpool set listsnapshots=on rpool
要列出为特定文件系统创建的快照,请输入 zfs list -r -t snapshot,后跟文件系统名称。
# zfs list -r -t snapshot rpool/export/home NAME USED AVAIL REFER MOUNTPOINT rpool/export/home@friday 0 - 32K rpool/export/home/geek@2days 0 - 34K
在上面的示例中,列出了为文件系统 rpool/export/home 创建的快照。
此信息是通过使用名称和创建属性显示的。
重命名 ZFS 快照
我们可以使用 zfs rename 命令后跟快照名称来重命名快照。
在下面的示例中,位于 hrpool/home 中的快照 datapool/home/user@friday 被重命名为 datapool/home/user@today。
# zfs rename datapool/home/user@friday datapool/home/user@today
要递归重命名快照,请使用 zfs rename -r 后跟快照名称。
在幻灯片的示例中,只有那些名为 @yesterday 的快照才被重命名为 @2daysago。
# zfs rename -r users/home@yesterday @2daysago