本章节分两部分内容:概念,配置
快照和克隆是NAS的神助攻。对于一些开发测试的应用场景,显得尤为重要。
概念
快照拷贝
快照拷贝是卷的只读时间点映像。该映像占用的存储空间最小,并且产生的性能开销可以忽略不计,因为它仅记录自创建上一个快照拷贝以来对文件的更改。快照拷贝的效率归功于 ONTAP的核心存储虚拟化技术,即其Write Anywhere File Layout(WAFL)。和数据库一样,WAFL 使用元数据指向磁盘上的实际数据块。但是与数据库不同的是,WAFL 不会覆盖现有块。它将更新后的数据写入新块,并更改元数据。这是因为在创建快照拷贝时,ONTAP 引用元数据,而不是拷贝数据块,所以快照拷贝才如此高效。这样在查找要拷贝的块时,就消除了其他系统会经受的“寻道时间 ”,从而也消除了创建拷贝本身的成本。快照技术高度可扩展。无论卷有多大,或存储系统上有多少操作,都可以在数秒内创建快照副本。创建副本后,数据对象的变化将在当前版本的对象的内容更新中反映出来,就像副本不存在一样。同时,数据的快照副本仍保持稳定状态。快照副本不会产生任何性能开销。所有快照副本都可以作为数据的在线只读版本进行访问。

可以使用快照拷贝来恢复单个文件或 LUN,或恢复卷的全部内容。快照拷贝存储在卷上的 .snapshot 目录中(这里只针对NAS卷)。ONTAP 将快照拷贝中的指针信息与磁盘上的数据进行比较,以便重建缺少或损坏的对象,同时无需停机或不会造成大量性能成本。
快照策略
定义了系统创建卷的快照拷贝的方式。该策略指定何时创建快照拷贝、要保留的拷贝数以及如何针对复制标记它们。例如,系统可能会在每天上午 12:10 创建一个快照拷贝,保留两个最新拷贝,将其命名为 “daily”(并加上时间戳),然后将其的复制标记为 “daily”。
FlexClone
FlexClone 卷是父级 FlexVol 卷的可写时间点副本。FlexClone 卷可高效利用空间,因为它们与用于存储常用数据的父级 FlexVol 卷共享数据块。只有在您向父级或克隆卷中写入新数据时,被写入新数据的实体才开始占用额外的存储空间。客户端或主机可以对 FlexClone 卷中的文件或 LUN 执行各种操作,就好像它们可以对标准文件或 LUN 执行操作一样。读取/写入 FlexClone 卷可以从父级卷中分离开来,(例如)以将克隆移至不同聚合。从其父级卷中分离读取/写入 FlexClone 卷需要复制共享块,并取消 FlexClone 卷当前采用的任何空间优化。分离之后,两个 FlexClone 卷和父级卷需要完整的空间分配,这由它们的卷保证(volume guarantee)确定。FlexClone 卷将变为正常的 FlexVol 卷。
使用 FlexClone 技术来代替传统副本,可带来以下显著优势:
1,快速。创建传统副本需要花费数分钟或数小时的时间。使用 FlexClone 技术,即使是最大的卷,在几秒钟内也可以完成克隆。
节省空间。克隆时元数据会占用少量的空间,以后仅当更改或添加数据时,才占用额外的空间。
2,降低成本。FlexClone 技术可以将开发/测试或虚拟环境所需的存储减少 50% 甚至更多。
提高开发/测试的质量。可以根据需要为完整生产数据集创建任意数量的副本。如果测试损坏了数据,几秒钟内即可重新开始。开发人员和测试工程师等待访问数据集的时间减少了,真正从事生产性工作的时间增加了。
3,支持您更加充分地利用灾难恢复环境。使用 FlexClone,您可以克隆并完整地测试灾难恢复流程,或使用灾难恢复环境来进行开发/测试,而不会干扰正在进行的复制。您只需克隆灾难恢复副本,然后在克隆副本上进行开发/测试即可。
4,加快虚拟机和虚拟桌面配置。几分钟内即可部署数十台或数百台新 VM,所用存储只有少量的增加。

说明:块存储可以使用快照和flexclone卷功能,文件存储可以使用快照和flexclone卷、flexclone文件功能。
配置
一,快照
快照配置以CIFS和NFS为主,ISCSI快照只能在存储端操作,操作系统可以开启卷影副本模式,大家自行测试。
CIFS_DATA快照
1,在客户端cifs_data目录下,新建一个文件,blog1.txt,并写入一组随机的数据。

导航到存储--卷,在SVM下拉列表选择CIFS_SVM,右键单击 cifs_data,在菜单中选择管理快照--创建,输入快照名称snapshot_blog1

重复上述步骤,继续建立blog2.txt、snapshot_blog2快照和blog3.txt、snapshot_blog3快照,一个文件对应一个快照,总共3个文件,三个快照。
三个快照

三个文件

打开cifs_data目录的属性,点击以前的版本,出现三个不同时间点的版本,这就是我们创建的快照

2,查看快照
双击打开时间最早的一个文件版本,在新打开的窗口出现blog1.txt,这是我们第一次创建的快照文件。

打开第二个版本

第三个版本

3,还原快照
模拟对数据进行破坏,需要还原到之前的状态。
删除blog1.txt的内容,blog1.txt大小为0KB,内容为空

现在要还原到之前状态,如果选择还原blog2快照,就会同时影响blog1和blog2,如果还原blog3快照,则所有的数据都会被还原。而我们只需要恢复blog1的数据,所以还原blog1的快照即可。
选中时间点最早的一个快照,单击还原

提示还原成功

blog1.txt还原成功

在存储管理界面,导航到存储--卷,在SVM下拉列表选择CIFS_SVM,右键单击 cifs_data,在菜单中选择管理快照--还原,选择blog2的快照,单击还原

弹出对话框提示 创建 Snapshot 副本后所做的所有更改都将丢失,
选择还原。还原之后,cifs_data卷的快照只剩下blog1、blog2。也就是还原到blog2 的快照以后,blog2快照时间点之后所有的数据都丢失,属于卷级别的还原。
cifs_data目录内只有两个文件

结论:在操作系统内还原版本,只还原当前时间节点的文件。在存储系统内还原快照,会还原到卷级快照状态,生产环境还原时一定要注意。
NFS_DATA快照
1,在客户端NFS目录下,新建一个文件,blog1,并写入一组随机的数据
[root@web /]# cd /NFS
[root@web NFS]# touch blog1
[root@web NFS]# vi blog1
[root@web NFS]# cat blog1
https://image.mr-mao.cn
[root@web NFS]#

导航到存储--卷,在SVM下拉列表选择NFS_SVM,右键单击 NFS_DATA,在菜单中选择管理快照--创建,输入快照名称snapshot_blog1

重复上述步骤,继续建立blog2、snapshot_blog2快照和blog3、snapshot_blog3快照,一个文件对应一个快照,总共3个文件,三个快照。
三个快照

三个文件

2,查看快照
NFS的快照命令直接查看 ls -a

[root@web NFS]# cd .snapshot/
[root@web .snapshot]# ls
snapshot_blog1 snapshot_blog2 snapshot_blog3
[root@web .snapshot]#

3,还原快照
在操作系统下,还原NFS的快照非常简单,想还原哪个文件,进入到相应的快照文件夹下直接复制文件到目标目录即可
我删除/NFS 目录下所有的文件,即模拟数据被误删
[root@web ~]# cd /NFS
[root@web NFS]# ls
blog1 blog2 blog3
[root@web NFS]# rm -fr *
[root@web NFS]# ls
[root@web NFS]# ls -a
. .. .snapshot
[root@web NFS]#

进入快照文件夹,因为误删了所有的数据,所以要选择最近快照来还原。
[root@web NFS]# ls -a
. .. .snapshot
[root@web NFS]# cd .snapshot/
[root@web .snapshot]# ls
snapshot_blog1 snapshot_blog2 snapshot_blog3
[root@web .snapshot]#
[root@web .snapshot]# cd snapshot_blog3
[root@web snapshot_blog3]# ls
blog1 blog2 blog3
[root@web snapshot_blog3]# cp * /NFS
[root@web snapshot_blog3]# cd /NFS
[root@web NFS]# ls
blog1 blog2 blog3
[root@web NFS]#

接下来测试存储界面还原快照,在存储管理界面,导航到存储--卷,在SVM下拉列表选择NFS_SVM,右键单击 NFS_DATA,在菜单中选择管理快照--还原,选择blog2的快照,单击还原

提示 创建 Snapshot 副本后所做的所有更改都将丢失。
也就是说恢复到快照2之后,快照3的数据会丢

操作系统下查看文件
[root@web ~]# cd /NFS
[root@web NFS]# ls
blog1 blog2
[root@web NFS]#

结论:在操作系统内还原文件,只需拷贝需要恢复的文件,非常方便。在存储系统内还原快照,会还原到卷级快照状态,生产环境还原时一定要注意。
快照策略
上述快照都是手动创建的,但是生产环境不可能一直手动,所以我们需要定制策略
1,打开 保护--计划,默认自带很多计划,但是不一定适合我们,所以需要自定义,单击创建,填写计划名称,制定适合自己的重复计划时间,我这里配置为每天晚上23点30分重复计划。

2,打开 保护--Snapshot 策略,默认自带一些策略。单击创建,填写策略名称,点击添加计划,计划名称选择上一步创建好的计划,填写保留快照数,点击创建

3,打开 存储--卷,在SVM下拉列表选择NFS_SVM,右键单击 NFS_DATA,在菜单中选择管理快照--配置设置,勾选 启用计划的 Snapshot副本,在Snapshot 策略中选择上一步创建好的NFS策略。

至此,快照策略配置完成,其它的卷,根据需求,重复上述步骤即可。
二,FlexClone
因为文章篇幅关系,我这里只配置CIFS的克隆,NFS和ISCSI配置都一样,只是使用方式有差别,大家自行测试。
1,flexclone卷
打开 存储--卷,在SVM下拉列表选择CIFS_SVM,右键单击 cifs_data,在菜单中选择克隆--创建--卷,填写名称,默认勾选 立即创建新的 Snapshot 副本,单击创建

flexclone卷创建成功

打开 存储--接合路径,在SVM下拉列表选择CIFS_SVM,单击挂载,选择上一步克隆的卷,填写接合名称,单击挂载

打开 存储--共享,在SVM下拉列表选择CIFS_SVM,单击创建共享,点击浏览选择已经挂载的flexclone卷,填写共享名称,单击创建

在域成员客户端资源管理器输入 \\cifs
,然后回车

进入flexclone目录,有两个文件,这正是我们源卷的两个文件

然后删除这两个文件

打开源卷cifs_data,两个文件还在

这个功能对一些开发测试的场景非常有意义。
2,flexclone文件
打开 存储--卷,在SVM下拉列表选择CIFS_SVM,右键单击 cifs_data,在菜单中选择克隆--创建--文件,在窗口中,会列出cifs目录中所有的文件,选择blog2.txt,其它默认即可,单击克隆

在客户端访问cifs_data目录,出现了flexclone文件,编辑flexclone文件内容,甚至删除这个文件,对源文件无任何影响

至此,快照和flexclone 功能配置完结,如有问题,可以留言。