1、NetApp存储基础学习汇总(第七部分)目 录一、snapshot管理11.1、snapshot基本概念11.2、snapshot是怎么工作的21.3、使用snapshot相关命令41.4、NFS客户端如何使用snapshot71.5、CIFS客户端如何使用snapshot71.6、测试从CIFS客户端利用snapshot恢复文件81.7、使用snap restore命令10一、snapshot管理1.1、snapshot基本概念SnapShot是WAFL文件系统“任意位置写入”功能带来的一项突出优势。一份SnapShot是整个文件系统的在线只读拷贝。创建文件系统的一份SnapShot仅仅需要
2、几秒钟的时间,并且除非原始文件被删除或者更改,数据快照并不占用额外的磁盘空间。这种只有当数据快发生改动时才进行数据块复制的技术被称作“Copy-on-write”,只有修改活动文件系统中的数据块并写入磁盘中新的位置时,SnapShot才会占用额外的磁盘空间。 l 在没有数据副本的情况下,快照保护意外的数据删除和修改。l 文件系统每个版本的copy叫做snapshotl 快照用来做备份和恢复。用户可以采用SnapShot作为数据的在线备份,以备将来进行数据恢复时使用。用户也可以方便的把SnapShot快照备份到磁带上。无需将Filer系统下线,用户管理员就可以将最近的SnapShot快照备份到离
3、线系统中。Snapshot的优势:l 快速的备份和恢复l 在线的备份l 自动或者手工的创建计划任务l 对于磁盘空间没有显著的影响。SnapShot技术详述WAFL文件系统本身就可以理解成数据块树状结构,其根部的数据结构描述了inode文件信息。这份inode文件信息则包含了对文件系统中所有inode的描述,它包含诸如空闲块图和空闲inode图等元数据信息。WAFL通过复制根数据结构创建新的数据拷贝SnapShot。因为根数据结构只有128B,并且不需要在硬盘上复制其他数据块,一个新的SnapShot几乎不耗额外的磁盘空间,除非用户修改或者删除文件系统中的数据。Filer可以对一个卷组创建最多2
4、55个SnapShot快照。SnapShot快照可以通过手动或者人为预先定制策略的方式来自动创建。每一个SnapShot快照可以保存的时间取决于文件系统变动的频度。在众多应用环境中,文件系统中的大部分数据并不是每天在变化,比如一个使用10MB大小Home Directory的用户,其数据通常每天只变动100到500KB。当文件变动缓慢的时候,SnapShot可以在线保存数天甚至数周,直到他们消耗的磁盘空间过多以至用户无法接受。而另外一些文件系统中的数据则在经常不停的变动,比如CAD应用环境下,需要经常覆盖写入许多大尺寸的文件,甚至可能一两天内就会更新整个文件系统的存储内容。在此类环境下,可能只
5、有保存数小时SnapShot的空间。Snapshot是DataONTAP软件比较独特的特点,可以在线的管理和维护每个volume的文件系统。Snapshot可以用于快速恢复active file system(AFS),AFS的snapshot还可以让用户非常方便的恢复意外的数据损坏和删除。l 快照是volume或者aggregate上某一时间点上只读的镜像。l 它仅仅是文件系统的一个图像而不包括实际的数据文件。l 快照的主要目的就是为了备份和恢复。l 最初只消耗很小的磁盘空间l DataONTAP是可以自动创建和删除snapshot的。l 快照可以看做是原始数据的复制品,但实际的数据块并没有
6、复制。l 我感觉快照通过指针,实现对删除和修改数据块的占用,来保留删除和修改数据所占用的数据块,所以当删除修改动作比较少的时候,占用空间比较少,恢复时比较快,只是指针进行挪动,并没有实际的数据拷贝出现。针对volume的snapshot:传统卷和灵活卷的snapshot保存在一个特殊的子目录里面,UNIX和windows客户端可以访问并且恢复它们自己的文件。每个卷同一时刻可以保留255个快照。针对aggregate的 snapshot:创建一个aggregate会预留5%的空间作为sanpshot,创建snapshot可以根据自动的时间表。你也可以手工的设置时间表,时间表的间隔是周、日、小时。
7、因为snapshot与AFS文件系统是独立存储的,你可以执行对最近创建的snapshot备份,而不需要将系统offline(比如将volume offline),即使用户访问很繁重。Aggr快照不需要作为每天日常管理的内容。相反,DataONATP可以自动的创建aggr的snapshot,当使用一些命令,比如snapmirror做卷级别的镜像的时候,就会自动产生快照。1.2、snapshot是怎么工作的在做snapshot之前,就有一个文件系统树指向真实的数据块,当做了一次snapshot后(假设数据没有任何更新),就拥有了一份文件结构的拷贝。 快照的指针同样指向这些数据块。见上图:此时sna
8、pshot与AFS的文件结构一致。再做snapshot后,此时对磁盘空间的影响不明显。因为此时文件结构占用的空间很小,同时在磁盘上不需要数据块的拷贝。几乎就是无额外的磁盘占用。Snapshot开始使用磁盘空间是当数据被删除或者修改的时候。新增数据进去空间占用也很小。见上图WAFL写一个数据到到新的数据块(D),同时AFS修改文件结构指向新的数据块。但同时snapshot依然指向最初的数据块D,只要snapshot指向这个数据块,这个数据块就不能访问,所以说snapshot开始消耗磁盘空间是从创建snapshot后,文件系统有变动开始。它保留了文件系统之前某个时刻的镜像。对于aggr划分灵活卷磁
9、盘空间是怎么分配的?Snapshot预留WAFL文件系统预留Aggregate整个aggr空间的5%整个aggr空间的10%Aggr里面的每个灵活卷灵活卷的20%,其它给客户数据预留给snapshot的空间是可以调整的,你可以手工修改这个预留比例,把这块空间给数据存储用(但不推荐这么做)。tan aggr show_space -h aggr1 =看aggr上面的空间分配Aggregate aggr1 Total space WAFL reserve Snap reserve Usable space BSR NVLOG A-SIS6000MB 600MB 270MB 5130MB 0KB 0
10、KBtan snap reserve vol1 =看某个卷预留了多少Volume vol1: current snapshot reserve is 20% or 204800 k-bytes.tan snap listVolume vol1working. %/used %/total date name- - - - 26% (26%) 0% ( 0%) Dec 27 20:00 hourly.0 40% (25%) 0% ( 0%) Dec 27 16:00 hourly.1 =目前预留的空间占用了40%对于传统卷磁盘空间是怎么分配的?Aggregate:每个aggregate分配了10
11、%的空间预留给WAFL文件系统。对于传统卷:每个卷预留了20%的空间给snapshot.给snap预留的空间比例是可以调整的。Snap预留WAFL文件系统预留Aggregate整个aggr空间的10%Aggr里面的传统卷传统卷的20%,其它给客户数据=为snapshot预留的空间可以扩展到用户空间只要系统需要,比如在AFS文件系统中发生大量的改变,这时候预先分配的空间比例满足不了要求的时候,snap空间就会占用数据空间。 你可以重新手工的分配磁盘空间用snap reserve命令,除非你故意的调整它,用户使用的磁盘空间不超过70%。1.3、使用snapshot相关命令snap create -
12、A|-V vol-name snap_nametan snap create vol1 satday =创建一个snapshot,对于下面所有命令-A代表aggrerate -V代表volume,缺省是针对volume,没指定是那个卷,就是指根卷。snap list -A|-V vol-name =列出指定卷上的snapshottan snap list vol1Volume vol1working. %/used %/total date name- - - - 0% ( 0%) 0% ( 0%) Dec 29 14:07 satday 0% ( 0%) 0% ( 0%) Dec 27 20
13、:00 hourly.0 1% ( 0%) 0% ( 0%) Dec 27 16:00 hourly.1%used显示了累计的snapshot占用的空间与AFS占用空间的比率,()里面表示这个snapshot占用空间与AFS占用空间的比率。%total显示了累计的snapshot占用的空间与整个个卷占用磁盘空间的比率,()里面表示这个snapshot占用空间与整个卷占用磁盘空间的比率。date列:是snapshot创建时间。最近那个 snapshot就是.0,这里指是用snap sched命令创建的。-系统会自动删除通过schedule snap创建的比较老版本的snapshot,当新snap
14、shot创建后。但是系统是不会自动删除手工创建的snapshot的,只能用snap delete命令去删除它们。注意:删除任何snapshot的时候,特别不是通过snap sced命令产生的snapshot(比如snapmirror,snapvault产生的)的时候,要特别小心,要确保要删除的不是最新的snapshot。如果删错了会夯住snapmirror和snapvault进程。snap delete -A|-V vol-name snap_nametan snap delete vol1 satday =删除某个卷上的某个快照Tue Dec 29 14:34:03 CST wafl.sna
15、p.delete:info: Snapshot copy satday on volume vol1 NetApp was deleted by the Data ONTAP function snapcmd_delete. The unique ID for this Snapshot copy is (3, 227).snap delete -A|-V vol-name =删除卷上面所有的快照,比如要建立一个新的snap scehedtan snap delete -a vol1 =删除某个卷上的所有快照Are you sure you want to delete all snapsho
16、ts for volume vol1? yDeleted vol1 snapshot hourly.2.Deleted vol1 snapshot hourly.1.Deleted vol1 snapshot hourly.0.snap reserve -A|-V vol-name percent =设置snapshot空间预留比例一般预留整个卷容量的20%。可以使用snap reserve命令修改这个比例,最好不要低于20%,不推荐这么做,不输入比例就显示出现在的空间分配情况。tan snap sched = 显示当前的snap时间表Volume vol0: 0 2 68,12,16,20V
17、olume vol1: 0 2 68,12,16,20 =代表最近2天和最近6小时的snapshot将保留,而每天8am,12am,16pm,20pm做snapshot。这个命令相当于指定了什么做snapshot,各种类型的 snapshot保留多长时间。tan snap delta vol1 =显示snapshot中变化数据的比率。Volume vol1working.From Snapshot To KB changed Time Rate (KB/hour)- - - - -test Active File System 109988 0d 00:17 373896.883tan sna
18、p list -q vol1Volume vol1working. qtree contents date source - - - - test (Dec 29 16:14) qtree1 Original Dec 29 16:14 - qtree2 Original Dec 29 16:14 - qtree3 Original Dec 29 16:14 -Snap sched参数的含义:参数意义weeks指定每个星期多少快照将要被保留 (default: 0).days指定每天多少了快照将要保留。(default: Monday through Saturday at midnight).
19、 hours指定每个小时多少快照需要被保留。缺省四个小时做一个 (default: 8 AM, 12 Noon, 4 PM, and 8 PM).hours list指定具体哪些时间做快照 (24-hour clock). 与snapshot相关的options命令:vol options vol1 nosnap on关闭自动snapshot功能。但在任何时候还可以手动创建。vol options vol1 nosnapdir on让客户端可以看见或不能看见,能访问或者不能访问(snapshot)目录。对于NFS,目录是.snapshot,对于CIFS是snapshot。options cif
20、s.show_snapshot on让snapshot目录对于客户端是可见的。对于CIFS要达到此目录,需要做下面2步:1) 打开options cifs.show_snapshot on2) 关闭vol options vol1 nosnap offtan snap autodelete vol1 =允许灵活卷自动删除快照,缺省是disabledsnapshot autodelete settings for vol1:state : offcommitment : trytrigger : volumetarget_free_space : 20%delete_order : oldest
21、_firstdefer_delete : user_createdprefix : (not specified)1.4、NFS客户端如何使用snapshottan vol options vol1 nosnapdir off =在存储一端执行此命令,让客户端可以看见.snapshot目录在NFS客户端mount上共享资源-bash-3.00# ls -latotal 146drwxrwxrwx 19 root root 4096 Dec 29 13:10 .drwxr-xr-x 42 root root 1024 Dec 25 12:33 .drwxrwxrwx 4 root root 40
22、96 Dec 29 14:34 .snapshotdrwxrwxrwx 7 root other 4096 Dec 29 13:10 Common Files-bash-3.00# pwd/tan/.snapshot/hourly.0-bash-3.00# ls -ltotal 40drwxrwxrwx 2 root root 4096 Dec 27 19:06 qtree1drwxrwxrwx 3 root root 4096 Dec 27 15:28 qtree2drwxrwxrwx 2 root root 4096 Dec 27 19:06 qtree3drwxrwxrwx 2 root
23、 root 4096 Dec 27 19:28 wangjundrwxrwxrwx 2 root root 4096 Dec 27 19:56 wangjun11.5、CIFS客户端如何使用snapshottan options cifs.show_snapshot ontan vol options vol1 nosnap off可以看见snapshot目录了。最近的快照里面的内容。1.6、测试从CIFS客户端利用snapshot恢复文件测试创建快照后,AFS文件系统变化后,如何利用快照恢复到前一状态。第一步:tan snap delete -a vol1 =先删除vol1上面的所有快照Ar
24、e you sure you want to delete all snapshots for volume vol1? yDeleted vol1 snapshot hourly.2.Deleted vol1 snapshot hourly.1.Deleted vol1 snapshot hourly.0.第二步:这个时候快照目录是空的。第三步:手工的创建一个快照。tan snap create vol1 tes这时候在客户端,发现test目录下面的结构与AFS文件系统一致。第四步:删除AFS里面的一个目录快照中这个目录还是存在的。再试验向共享中拷贝新的文件,发现快照目录里面是没有这个新文件
25、的。将快照中的wangjun目录拷贝到以前的位置,文件和目录就恢复了。1.7、使用snap restore命令对于LUN一级做snapshot,netapp的建议是最好一个volume上面创建一个LUN。因为做恢复的时候只能针对volume或者file来做恢复。snap restore -f -t vol | file -s snapshot_name -r restore_as_path vol_name | restore_from_path从指定的snapshot恢复一个volume,或者恢复一个单独的文件。这个命令没有license是看不见的。如果你没有指定snapshot,则系统会提
26、示你输入一个snapshot。 在恢复volume或文件这些操作前会让用户确认,-f选项会禁止确认这步。 如果-t选项指定了,则下面必须标明是恢复整个volume还是文件。也就是说snaprestore不能同时执行volume的snaprestore和文件的snaprestore。对于volume snaprestore:Volume必须是online状态并没有镜像。如果恢复根卷则需要重启,如果恢复非根卷则不需要重启。当恢复的时候所有针对非根卷的访问全部终止,就象offline了一样。但其实volume offline了是保护了,不让用户访问,但也不让数据恢复了,所以这两种状态还是有区别的。做
27、完恢复了之后,volume就具有了和做快照那个时刻同样的状态。 对单个文件的snaprestore:保存文件的Volume必须是online状态并没有镜像如果restore_as_path选项指定了,则必须是文件的全路径。如果在volume没有足够的空间,则单个文件恢复不会执行,如果在AFS里面文件已经存在则会覆盖它。Snap命令会花费几分钟时间返回,这段时间客户端排他锁撤销。当snap命令返回,则恢复过程在后台开始执行,这段时间,任何试图去修改文件的操作都会挂起直到恢复完成,但是其它的文件snaprestore是可以做的。在恢复过程中,快照不能删除,新快照不能创建当单个文件恢复正在进行的时候
28、,定义的计划snapshot也会暂时挂起。对于tree、user、group的 quota限制在恢复过程中也不强加,如果超过了quota的限制,则在恢复完成后,/etc/quota就需要改变,然后再执行quota resize命令。恢复完成后文件的属性(大小、权限、属主等)与snapshot中的一致。如果恢复过程中,系统宕机了,则重启后操作自动重新启动。命令实践tan snap restore -t vol -s test vol1 =恢复整个卷WARNING! This will revert the volume to a previous snapshot.All modificatio
29、ns to the volume after the snapshot will beirrevocably lost.Volume vol1 will be made restricted briefly before coming back online.Are you sure you want to do this? yYou have selected volume vol1, snapshot testProceed with revert? yApply_WaitForPendingCloseShare() - waiting for shares to close.Apply_
30、WaitForPendingCloseShare() - all shares are now closeShare CIFS.HOMEDIR disabled while volume vol1 is offline.Share test1 disabled while volume vol1 is offline.Share test2 disabled while volume vol1 is offline.Share test disabled while volume vol1 is offline.Tue Dec 29 17:19:42 CST wafl.snaprestore.
31、revert:notice: Reverting volume vol1 to a previous snapshot.Share CIFS.HOMEDIR activated.Share test1 activated.Share test2 activated.Share test activated.Tue Dec 29 17:19:43 CST cifs.homedir.activateEntries:info: CIFS: Activating CIFS home directory paths: attempt to re-integrate any CIFS home directory paths that reside on enabled volume.Volume vol1: revert successful.tan snap restore -t file -s test /vol/vol1/wangjun/wangjun.txt =恢复单个文件,但不能恢复某个目录