ZFS 克隆

与 ZFS 快照相反,ZFS 克隆是文件系统的可写副本,其初始内容与文件系统相同。
只能从快照创建克隆。
在删除从中创建的克隆之前,无法删除快照。

创建 ZFS 克隆

现在我们可以从快照所在的文件系统下的任何位置的快照创建克隆。

# zfs clone geekpool/fs1@oct2013 geekpool/fs1/clone01
# zfs list -r
NAME                   USED  AVAIL  REFER  MOUNTPOINT
geekpool               101M   875M    32K  /geekpool
geekpool/fs1           100M   875M   100M  /geekpool/fs1
geekpool/fs1@oct2013    19K      -    31K  
geekpool/fs1/clone01     1K   875M    31K  /geekpool/fs1/clone01

销毁 ZFS 克隆

# zfs destroy geekpool/fs1/clone01
创建 ZFS 快照和克隆
查看更多教程 https://on  itroad.com

快照占用的空间

现在,当我们第一次创建任何快照时,属性“refer”指定了快照和文件系统之间共享的空间。
当我们对文件系统进行任何更改时,引用空间会增加。

# zfs list -t all -r geekpool
NAME                   USED  AVAIL  REFER  MOUNTPOINT
geekpool               520K   975M    32K  /geekpool
geekpool/fs1            50K   975M    31K  /geekpool/fs1
geekpool/fs1@oct2013    19K      -    31K

创建一些文件和快照

# mkfile 100m /geekpool/fs1/test1
# zfs snapshot geekpool/fs1@nov2013
# mkfile 100m /geekpool/fs1/test2
# zfs snapshot geekpool/fs1@dec2013
# zfs list -t all -r geekpool
NAME                   USED  AVAIL  REFER  MOUNTPOINT
geekpool               201M   775M    32K  /geekpool
geekpool/fs1           200M   775M   200M  /geekpool/fs1
geekpool/fs1@oct2013    19K      -    31K  
geekpool/fs1@nov2013    19K      -   100M  
geekpool/fs1@dec2013      0      -   200M

现在正如预期的那样,nov2013 快照使用了 100MB 空间,而 dec2013 使用了 200MB 空间。

ZFS 发送和接收

ZFS 可以选择备份或者移动快照。
这可以通过发送和接收命令实现。

ZFS send

可以通过重定向将send命令生成的输出流保存到文件中。

# zfs send geekpool/fs1@oct2013 &gt /geekpool/fs1/oct2013.bak

ZFS receive

与发送类似,我们可以从我们刚刚创建的文件中接收快照。

# zfs receive anotherpool/fs1 &lt /geekpool/fs1/oct2013.bak

我们也可以结合这两种操作

# zfs send geekpool/fs1@oct2013 | zfs receive anotherpool/fs1

现在我们可以一次性在 2 个不同系统之间发送和接收快照,如下所示:

node02 # zfs create testpool/testfs  (create a test file-system on another system)
node01 # zfs send geekpool/fs1@oct2013 | ssh node02 "zfs receive testpool/testfs"

只发送增量数据

node01# zfs send -i geekpool/fs1@oct2013| ssh node02 zfs recv testpool/testfs

ZFS 快照

zfs 快照是 zfs 文件系统或者卷的只读副本。
它们不会占用 zfs 池中的另外空间,并且可以立即创建。
它们可用于在特定时间点保存文件系统的状态,然后可以回滚到完全相同的状态。
如果需要,我们还可以从快照中提取一些文件而不进行完全回滚。
让我们来看看创建 zfs 文件系统快照所涉及的步骤。

创建和销毁快照

创建文件系统 geekpool/fs1 的新快照

# zfs snapshot geekpool/fs1@oct2013
# zfs snapshot -r geekpool/fs1@oct2013    (to take snapshot of all FS under fs1)
# zfs list -t snapshot
NAME                   USED  AVAIL  REFER  MOUNTPOINT
geekpool/fs1@oct2013      0      -    31K

销毁快照:

# zfs destroy geekpool/fs1@oct2013

重命名快照:

# zfs rename geekpool/fs1@oct2013 geekpool/fs1@sept2013

回滚到快照

现在我们可以完全回滚到旧快照,这将为我们提供拍摄快照时的时间点副本。

zfs rollback geekpool/fs1@oct2012

我们还可以通过访问快照目录 .zfs/snapshot/snapshot_name 在为其创建快照的文件系统下恢复单个文件。
在快照目录下,我们可以找到要恢复到较旧时间的文件或者目录。

# ls /geekpool/fs1/.zfs/snapshot/
oct2013
日期:2020-09-17 00:15:01 来源:oir作者:oir