ZFS: Snapshot And Clone

之前看过一段时间 ZFS, 有个 snapshot 和 clone 功能一直没看,今天补上。

创建 snapshot 操作瞬间可以完成,代价是很低的, 并且不需要额外的空间,当有新数据写入时才使用额外空间,下面简单测试这个功能。

当前目录情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
root@francs:~  # df -Th  
Filesystem Type Size Used Avail Capacity Mounted on
zroot/ROOT/defaultzfs 16G 3.4G 12G 22% /
devfs devfs 1.0K 1.0K 0B 100% /dev
zroot/tmp zfs 12G 19M 12G 0% /tmp
zroot/usr/home zfs 12G 200K 12G 0% /usr/home
zroot/usr/ports zfs 13G 874M 12G 7% /usr/ports
zroot/usr/src zfs 13G 545M 12G 4% /usr/src
zroot/varzfs 13G 636M 12G 5% /var
zroot/var/crash zfs 12G 148K 12G 0% /var/crash
zroot/var/log zfs 12G 396K 12G 0% /var/log
zroot/var/mail zfs 12G 160K 12G 0% /var/mail
zroot/var/tmp zfs 12G 152K 12G 0% /var/tmp
zp1 zfs 1.9G 32K 1.9G 0% /zp1
zp1/data1 zfs 1.9G 3.6M 1.9G 0% /data1
zp1/data2 zfs 1.9G 16M 1.9G 1% /data2
zp1/data3 zfs 1.9G 12M 1.9G 1% /data3
zp1/data4 zfs 1.9G 31K 1.9G 0% /data4
zp_db zfs 29G 31K 29G 0% /zp_db

创建 snapshot

1
root@francs:~  # zfs snapshot zp1/data1@20141009

备注: 创建快照方式有两种: pool snapshots 或者 dataset snapshots, 我这里做的是 dataset snapshots。

查看快照

1
2
3
root@francs:~  # zfs list -t snapshot  
NAME USED AVAIL REFER MOUNTPOINT
zp1/data1@20141009 0 - 3.62M -

创建测试文件

1
2
3
4
5
6
7
8
9
10
11
root@francs:~  # cd /data1  

root@francs:/data1 # ll
total 3672
-rw-rw-r-- 1 root wheel 16777216 7 4 16:44 0000000600005ca200000032
-rw-r--r-- 1 root wheel 6291456 7 10 14:51 test_1.img

root@francs:/data1 # echo "test" > a

root@francs:/data1 # cat a
test

备注:在目录 /data1 下新建一个文件 a, 之所以这么操作,是想测试 zfs 的 clone 功能。

zfs clone

1
root@francs:~  # zfs clone zp1/data1@20141009 zp1/pitr1

备注:基于刚才创建的快照做下 zfs clone,并且将快照 mount 到目录 /zp1/pitr1。

查看 zp1 池

1
2
3
4
5
6
7
8
9
root@francs:~  # zfs list -r zp1  
NAME USED AVAIL REFER MOUNTPOINT
zp1 32.1M 1.92G 33K /zp1
zp1/data1 3.64M 1.92G 3.62M /data1
zp1/data2 16.0M 1.92G 16.0M /data2
zp1/data3 12.0M 1.92G 12.0M /data3
zp1/data4 31K 1.92G 31K /data4
zp1/pitr1 1K 1.92G 3.62M /zp1/pitr1
备注: 这里可以看到 /zp1/pitr1 目录了。

查看 /zp1/pitr1 文件

1
2
root@francs:~  # ls /zp1/pitr1  
0000000600005ca200000032 test_1.img

备注: 这时新创建的文件 a 并没有显示,说明文件系统恢复到了创建快照的那个时间点。

接下来看下删除 clone 和 snapshot 操作,非常简单。

Destroying Clones

1
root@francs:~  # zfs destroy zp1/pitr1

Destroying Snapshots

1
root@francs:~  # zfs destroy zp1/data1@20141009

备注: 如果基于 snapshot 创建了 clone,得先删除 clone 才能删除 snapshot.

参考

原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/239588.html

(0)
上一篇 2022年2月12日
下一篇 2022年2月12日

相关推荐

发表回复

登录后才能评论