Snapshot 是数据保护的第一道防线。 任何存储产品都会快照技术,大同小异。一般有2种快照方式,Cow(Copy on write)和Row(Redirect on wirte), NetApp 用的第二种,EMC 的Celerra/VNX是用的第一种,Isilon比较另类,两个都有,一切自动运行,Isilon会根据数据的变化量的大小和类型自动选择一种方式。这个快照技术也是各大厂商吵架的地方,各有各的长处和短处,一般来说Row应用于顺序大量写操作以及删除操作,Cow则应用于元数据和目录的小IO操作。
Snapshot 非常重要,是很多高级功能的基础。你比如:
Snapshot 是指传统卷或无限卷的一个只读映像,它可以捕获文件系统在某一时间点的状态。 Data ONTAP 8.3 的Snapshot技术和以前一模一样,其工作原理完全可以参考Data ONTAP 8.2 7-mode,参考《 NetApp Data ONTAP 8.2 7-Mode 快照管理 ( Snapshot 及SnapRestore) 》。
和以前一模一样,参考《 NetApp Data ONTAP 8.2 7-Mode 快照管理 ( Snapshot 及SnapRestore) 》。
每个卷都有一个 .snapshot 目录。NFS 用户可使用 ls 命令访问此目录,而 CIFS 用户可以双击 ~snapshot 文件夹访问此目录。.snapshot 目录包含一组子目录,这些子目录会按类型、日期和时间进行标记。
[root@server1 nfs]# ls -al .snapshot/ total 40 drwxrwxrwx 10 root root 4096 Jul 25 2015 . drwxrwxrwx 3 root root 4096 Jul 22 2015 .. drwxrwxrwx 3 root root 4096 Jul 22 2015 daily.2015-07-24_0010 drwxrwxrwx 3 root root 4096 Jul 22 2015 daily.2015-07-25_0010 drwxrwxrwx 3 root root 4096 Jul 22 2015 hourly.2015-07-25_0605 drwxrwxrwx 3 root root 4096 Jul 22 2015 hourly.2015-07-25_0705 drwxrwxrwx 3 root root 4096 Jul 22 2015 hourly.2015-07-25_0805 drwxrwxrwx 3 root root 4096 Jul 22 2015 hourly.2015-07-25_0905 drwxrwxrwx 3 root root 4096 Jul 22 2015 hourly.2015-07-25_1005 drwxrwxrwx 3 root root 4096 Jul 22 2015 hourly.2015-07-25_1105
对于 NFSv2 和 NFSv3 客户端,始终会显示 .snapshot 目录,并且可从所在卷中访问该目录,而任何其他卷则不会显示该目录,但仍可访问它。对于 NFSv4 客户端,不会显示.snapshot 目录,但可从某个卷的所有路径下访问它。
三种方式可以来创建Snapshot:
我们来在命令行下创建一个Snapshot。
labcluster2::> volume snapshot show Sales_vol1_CIFS_volume ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume daily.2015-07-24_0010 196KB 0% 42% daily.2015-07-25_0010 180KB 0% 40% hourly.2015-07-25_0605 144KB 0% 35% hourly.2015-07-25_0705 140KB 0% 34% hourly.2015-07-25_0805 144KB 0% 35% hourly.2015-07-25_0905 148KB 0% 35% hourly.2015-07-25_1005 156KB 0% 36% hourly.2015-07-25_1105 136KB 0% 33% 8 entries were displayed. labcluster2::> volume snapshot create -volume Sales_vol1_CIFS_volume -vserver SVM_Sales_CIFS_NFS -snapshot snapshot_test1 labcluster2::> volume snapshot show Sales_vol1_CIFS_volume ---Blocks--- Vserver Volume Snapshot Size Total% Used% -------- -------- ------------------------------------- -------- ------ ----- SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume daily.2015-07-24_0010 196KB 0% 42% daily.2015-07-25_0010 180KB 0% 39% hourly.2015-07-25_0605 144KB 0% 34% hourly.2015-07-25_0705 140KB 0% 34% hourly.2015-07-25_0805 144KB 0% 34% hourly.2015-07-25_0905 148KB 0% 35% hourly.2015-07-25_1005 156KB 0% 36% hourly.2015-07-25_1105 140KB 0% 34% snapshot_test1 64KB 0% 19% 9 entries were displayed.
Data ONTAP 会维护一个可配置的 Snapshot 计划,以便为每个 FlexVol 卷和无限卷自动创建和删除 Snapshot 副本。此外,您还可以根据自己的需求创建和删除 Snapshot 副本并管理 Snapshot 计划。
这玩意儿是个新名词,比以前的snap Schedule灵活性大了很多。
Data ONTAP 提供了每周、每天和每小时的 Snapshot 副本计划,您可以使用这些计划来创建 Snapshot 副本策略,以保留所需数量和类型的 Snapshot 副本。这里的策略指一个卷创建Snapshot的全部设置,包括创建计划,个数,标签等等。不要搞晕了。一个卷只能由一个Snapshot策略,但是这个策略可以包括很多计划。
这个SnapMirror标签有什么用呢?我们在SnapMirror时再来研究。
下表介绍了可用的 Snapshot 副本计划类型:
类型 | 说明 |
---|---|
每周 | Data ONTAP 会在每个星期日的午夜过后 15 分钟创建这些 Snapshot 副本 。 每周 Snapshot 副本 名为 weekly. n ,其中 n 是一个格式为年-月-日的日期,年-月-日后面是下划线 (_) 和时间。例如,在 2012 年 11 月 25 日创建的每周 Snapshot 副本名为 weekly.2012-11-25_0015 。 |
每日 | Data ONTAP 会在每晚的午夜过后 10 分钟创建这些 Snapshot 副本 。 每日 Snapshot 副本 名为 daily. n ,其中 n 是一个格式为年-月-日的日期,年-月-日后面是下划线 (_) 和时间。例如,在 2012 年 12 月 4 日创建的每日 Snapshot 副本名为 daily.2012-12-04_0010 。 |
每小时 | Data ONTAP 会在每个整点过后 5 分钟创建这些 Snapshot 副本 。 每小时 Snapshot 副本 名为 hourly. n ,其中 n 是一个格式为年-月-日的日期,年-月-日后面是下划线 (_) 和时间。例如,在 2012 年 12 月 4 日 1:00 (1300) 创建的每小时 Snapshot 副本名为 hourly.2012-12-04_1305 。 |
除非您在创建 FlexVol 卷或无限卷时指定 Snapshot 策略,否则,该卷会继承与其所属的 Storage Virtual Machine (SVM) 关联的 Snapshot 策略。
在您创建 SVM 时,您可以指定 Snapshot 策略。带有 FlexVol 卷的 SVM 的默认 Snapshot 策略名为 default,而带有无限卷的 SVM 的默认 Snapshot 策略名为 default-1weekly。
当然你可以随时更改Snapshot 策略。
我们来使用System Manager创建一个新的Snapshot 策略。我的目标是每5分钟一个Snapshot,保存10个Snapshot。注意我创建在集群上面,这样的话所有SVM都可以使用这个策略。
然后我们编辑卷,选择刚才创建的Snapshot策略即可。
我们来看看10分钟后,2个前缀名为5min的Snapshot自动创建了。
labcluster2::volume> volume snapshot show Sales_vol1_CIFS_volume -field create-time vserver volume snapshot create-time ------------------ ---------------------- --------------------- ------------------------ SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume daily.2015-07-24_0010 Fri Jul 24 00:10:00 2015 SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume daily.2015-07-25_0010 Sat Jul 25 00:10:01 2015 SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume hourly.2015-07-25_0605 Sat Jul 25 06:05:00 2015 SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume hourly.2015-07-25_0705 Sat Jul 25 07:05:00 2015 SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume hourly.2015-07-25_0805 Sat Jul 25 08:05:00 2015 SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume hourly.2015-07-25_0905 Sat Jul 25 09:05:00 2015 SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume hourly.2015-07-25_1005 Sat Jul 25 10:05:00 2015 SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume hourly.2015-07-25_1105 Sat Jul 25 11:05:00 2015 SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume snapshot_test1 Sat Jul 25 11:17:14 2015 SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume 5min.2015-07-25_1225 Sat Jul 25 12:25:15 2015 SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume 5min.2015-07-25_1230 Sat Jul 25 12:30:00 2015 11 entries were displayed.
SnapRestore 就是 Snapshot 的恢复,还要单独的License。
这个和以前一样,具体测试步骤,参考《 NetApp Data ONTAP 8.2 7-Mode 快照管理 ( Snapshot 及SnapRestore) 》。
Data ONTAP 会保留创建 Snapshot 副本时正在使用的所有磁盘块的指针。更改某个文件后,Snapshot 副本仍然会指向该文件在被修改之前所在的磁盘块,而所作的更改将写入新的磁盘块。
这个也和以前一样,具体测试步骤,参考《 NetApp Data ONTAP 8.2 7-Mode 快照管理 ( Snapshot 及SnapRestore) 》。
Snapshot 副本预留会为 Snapshot 副本设置特定的磁盘空间百分比。 对于 FlexVol 卷,默认 Snapshot 副本预留设置为磁盘空间的 5%。 默认情况下,FlexVol 卷和聚合的 Snapshot 副本预留分别设置为磁盘空间的 5% 和 0%。活动文件系统无法使用 Snapshot 副本预留空间,但是在 Snapshot 副本预留空间耗尽时,可以使用活动文件系统中的空间。我们来看一下命令行的输出。
labcluster2::volume> show -vserver SVM_Sales_CIFS_NFS -volume Sales_vol1_CIFS_volume -fields percent-snapshot-space,snapshot-space-used,snapshot-policy vserver volume percent-snapshot-space snapshot-space-used snapshot-policy ------------------ ---------------------- ---------------------- ------------------- --------------- SVM_Sales_CIFS_NFS Sales_vol1_CIFS_volume 5% 3% 10-Every_5_mins
这个也和以前一样,参考《 NetApp Data ONTAP 8.2 7-Mode 快照管理 ( Snapshot 及SnapRestore) 》。
由于无法防止 Snapshot 副本占用的磁盘空间量超出为其预留的容量,因此,务必为 Snapshot 副本预留足够的磁盘空间,以便活动文件系统始终具有可用空间来创建新文件或修改现有文件。
一旦 Snapshot 副本占用的空间超出全部 Snapshot 预留空间,这些副本就会开始占用活动文件系统的空间。此过程称为 Snapshot 溢出。随着 Snapshot 副本不断占用活动文件系统的空间,系统将面临空间变满的风险。如果因 Snapshot 溢出而使系统空间变满,则您只有在删除了足够多的 Snapshot 副本之后才能创建文件。我司有太多这样的例子了,最后不得不删除Snapshot,否则生产系统完全用不了。
有意思的是,EMC的Celerra/VNX也有个Snapshot space Reserve,不过对于溢出的处理方式不同。Celerra/VNX是让Snapshot创建失败,或者自动删除旧Snapshot,从而让新的快照成功。