快照是使用 zfs snapshot 命令创建的,该命令将要创建的快照的名称用作其唯一参数。快照名称按如下方式指定:
filesystem@snapname volume@snapname |
快照名称必须满足ZFS 组件命名要求中所述的命名要求。
在以下示例中,将创建 tank/home/ahrens 的快照,其名称为 friday。
# zfs snapshot tank/home/ahrens@friday |
通过使用 -r 选项可为所有后代文件系统创建快照。例如:
# zfs snapshot -r tank/home@now # zfs list -t snapshot NAME USED AVAIL REFER MOUNTPOINT rpool/ROOT/zfs2BE@zfs2BE 78.3M - 4.53G - tank/home@now 0 - 26K - tank/home/ahrens@now 0 - 259M - tank/home/anne@now 0 - 156M - tank/home/bob@now 0 - 156M - tank/home/cindys@now 0 - 104M - |
快照没有可修改的属性。也不能将数据集属性应用于快照。例如:
# zfs set compression=on tank/home/ahrens@now cannot set compression property for 'tank/home/ahrens@now': snapshot properties cannot be modified |
使用 zfs destroy 命令可以销毁快照。例如:
# zfs destroy tank/home/ahrens@now |
如果数据集存在快照,则不能销毁该数据集。例如:
# 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 |
此外,如果已从快照创建克隆,则必须先销毁克隆,才能销毁快照。
有关 destroy 子命令的更多信息,请参见销毁 ZFS 文件系统。
如果存在不同的原子快照策略,导致旧的快照由于不再存在于发送侧而被 zfs receive 不小心销毁,则可能需要考虑使用本 Solaris 发行版中的快照保持功能。
保持快照可以防止它被销毁。此外,当一个带有克隆的快照等待删除最后一个克隆时,该功能允许使用 zfs destroy - d 命令删除该快照。每个快照都有一个关联的用户引用计数,其初始值为 0。对一个快照设置一个保持时,此计数递增 1;释放一个保持时,此计数递减 1。
在先前的 Solaris 发行版中,只有在快照无克隆时,才能使用 zfs destroy 命令销毁快照。在本 Solaris 发行版中,快照同样必须有一个用户引用计数。
可以保持一个快照或一组快照。例如,以下语法对 tank/home/cindys/snap@1 设置一个保持标志 keep。
# zfs hold keep tank/home/cindys@snap1 |
可以使用 -r 选项递归保持所有后代文件系统的快照。例如:
# zfs snapshot -r tank/home@now # zfs hold -r keep tank/home@now |
此语法向给定的快照或快照集添加一个引用 keep。每个快照都有其自己的标志名称空间,保持标志在该空间内必须是唯一的。如果一个快照上存在一个保持,尝试使用 zfs destroy 命令销毁受保持的快照将失败。例如:
# zfs destroy tank/home/cindys@snap1 cannot destroy 'tank/home/cindys@snap1': dataset is busy |
要销毁受保持的快照,须使用 -d 选项。例如:
# zfs destroy -d tank/home/cindys@snap1 |
使用 zfs holds 命令显示受保持的快照列表。例如:
# zfs holds tank/home@now NAME TAG TIMESTAMP tank/home@now keep Thu Jul 15 11:25:39 2010 |
# zfs holds -r tank/home@now NAME TAG TIMESTAMP tank/home/cindys@now keep Thu Jul 15 11:25:39 2010 tank/home/mark@now keep Thu Jul 15 11:25:39 2010 tank/home@now keep Thu Jul 15 11:25:39 2010 |
可以使用 zfs release 命令释放对一个快照或一组快照的保持。例如:
# zfs release -r keep tank/home@now |
释放快照后,可以使用 zfs destroy 命令销毁快照。例如:
# zfs destroy -r tank/home@now |
有两个新属性用来表示快照保持信息:
defer_destroy 属性在下述情况下为 on:已使用 zfs destroy -d 命令将快照标记为延期销毁。否则,此属性为 off。
userrefs 属性设置为此快照上的保持数,也称为用户引用计数。
可以重命名快照,但是必须在从中创建它们的池和数据集中对它们进行重命名。例如:
# zfs rename tank/home/cindys@083006 tank/home/cindys@today |
此外,以下快捷方式语法等效于以上的语法:
# zfs rename tank/home/cindys@083006 today |
不支持以下快照 rename 操作,因为目标池和文件系统名称与从中创建快照的池和文件系统不同:
# 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 users 270K 16.5G 22K /users users/home 76K 16.5G 22K /users/home users/home@yesterday 0 - 22K - users/home/markm 18K 16.5G 18K /users/home/markm users/home/markm@yesterday 0 - 18K - users/home/marks 18K 16.5G 18K /users/home/marks users/home/marks@yesterday 0 - 18K - users/home/neil 18K 16.5G 18K /users/home/neil users/home/neil@yesterday 0 - 18K - # zfs rename -r users/home@yesterday @2daysago # zfs list -r users/home NAME USED AVAIL REFER MOUNTPOINT users/home 76K 16.5G 22K /users/home users/home@2daysago 0 - 22K - users/home/markm 18K 16.5G 18K /users/home/markm users/home/markm@2daysago 0 - 18K - users/home/marks 18K 16.5G 18K /users/home/marks users/home/marks@2daysago 0 - 18K - users/home/neil 18K 16.5G 18K /users/home/neil users/home/neil@2daysago 0 - 18K - |