netapp存储配置练习snapshotWord格式.docx
《netapp存储配置练习snapshotWord格式.docx》由会员分享,可在线阅读,更多相关《netapp存储配置练习snapshotWord格式.docx(15页珍藏版)》请在冰豆网上搜索。
当文件变动缓慢的时候,SnapShot可以在线保存数天甚至数周,直到他们消耗的磁盘空间过多以至用户无法接受。
而另外一些文件系统中的数据则在经常不停的变动,比如CAD应用环境下,需要经常覆盖写入许多大尺寸的文件,甚至可能一两天内就会更新整个文件系统的存储内容。
在此类环境下,可能只有保存数小时SnapShot的空间。
Snapshot是DataONTAP软件比较独特的特点,可以在线的管理和维护每个volume的文件系统。
Snapshot可以用于快速恢复active(AFS),AFS的snapshot还可以让用户非常方便的恢复意外的数据损坏和删除。
●快照是volume或者aggregate上某一时间点上只读的镜像。
●它仅仅是文件系统的一个图像而不包括实际的数据文件。
●快照的主要目的就是为了备份和恢复。
●最初只消耗很小的磁盘空间
●DataONTAP是可以自动创建和删除snapshot的。
●快照可以看做是原始数据的复制品,但实际的数据块并没有复制。
●我感觉快照通过指针,实现对删除和修改数据块的占用,来保留删除和修改数据所占用的数据块,所以当删除修改动作比较少的时候,占用空间比较少,恢复时比较快,只是指针进行挪动,并没有实际的数据拷贝出现。
针对volume的snapshot:
传统卷和灵活卷的snapshot保存在一个特殊的子目录里面,UNIX和windows客户端可以访问并且恢复它们自己的文件。
每个卷同一时刻可以保留255个快照。
针对aggregate的snapshot:
创建一个aggregate会预留5%的空间作为sanpshot,
创建snapshot可以根据自动的时间表。
你也可以手工的设置时间表,时间表的间隔是周、日、小时。
因为snapshot与AFS文件系统是独立存储的,你可以执行对最近创建的snapshot备份,而不需要将系统offline(比如将volumeoffline),即使用户访问很繁重。
Aggr快照不需要作为每天日常管理的内容。
相反,DataONATP可以自动的创建aggr的snapshot,当使用一些命令,比如snapmirror做卷级别的镜像的时候,就会自动产生快照。
1.2、snapshot是怎么工作的
在做snapshot之前,就有一个文件系统树指向真实的数据块,当做了一次snapshot后(假设数据没有任何更新),就拥有了一份文件结构的拷贝。
快照的指针同样指向这些数据块。
见上图:
此时snapshot与AFS的文件结构一致。
再做snapshot后,此时对磁盘空间的影响不明显。
因为此时文件结构占用的空间很小,同时在磁盘上不需要数据块的拷贝。
几乎就是无额外的磁盘占用。
Snapshot开始使用磁盘空间是当数据被删除或者修改的时候。
新增数据进去空间占用也很小。
见上图WAFL写一个数据到到新的数据块(D’),同时AFS修改文件结构指向新的数据块。
但同时snapshot依然指向最初的数据块D,只要snapshot指向这个数据块,这个数据块就不能访问,所以说snapshot开始消耗磁盘空间是从创建snapshot后,文件系统有变动开始。
它保留了文件系统之前某个时刻的镜像。
对于aggr划分灵活卷磁盘空间是怎么分配的?
Snapshot预留
WAFL文件系统预留
Aggregate
整个aggr空间的5%
整个aggr空间的10%
Aggr里面的每个灵活卷
灵活卷的20%,其它给客户数据
预留给snapshot的空间是可以调整的,你可以手工修改这个预留比例,把这块空间给数据存储用(但不推荐这么做)。
tan>
aggrshow_space-haggr1←=看aggr上面的空间分配
Aggregate'
aggr1'
TotalspaceWAFLreserveSnapreserveUsablespaceBSRNVLOGA-SIS
6000MB600MB270MB5130MB0KB0KB
snapreservevol1←==看某个卷预留了多少
Volumevol1:
currentsnapshotreserveis20%or204800k-bytes.
snaplist
Volumevol1
working...
%/used%/totaldatename
----------------------------------------
26%(26%)0%(0%)Dec2720:
00hourly.0
40%(25%)0%(0%)Dec2716:
00hourly.1←=目前预留的空间占用了40%
对于传统卷磁盘空间是怎么分配的?
Aggregate:
每个aggregate分配了10%的空间预留给WAFL文件系统。
对于传统卷:
每个卷预留了20%的空间给snapshot.给snap预留的空间比例是可以调整的。
Snap预留
Aggr里面的传统卷
传统卷的20%,其它给客户数据
=============→
为snapshot预留的空间可以扩展到用户空间只要系统需要,比如在AFS文件系统中发生大量的改变,这时候预先分配的空间比例满足不了要求的时候,snap空间就会占用数据空间。
你可以重新手工的分配磁盘空间用snapreserve命令,除非你故意的调整它,用户使用的磁盘空间不超过70%。
1.3、使用snapshot相关命令
snapcreate[-A|-V][vol-name][snap_name]
snapcreatevol1satday←=创建一个snapshot,对于下面所有命令-A代表aggrerate
-V代表volume,缺省是针对volume,没指定是那个卷,就是指根卷。
snaplist[-A|-V][vol-name]←=列出指定卷上的snapshot
snaplistvol1
0%(0%)0%(0%)Dec2914:
07satday
0%(0%)0%(0%)Dec2720:
1%(0%)0%(0%)Dec2716:
00hourly.1
%used显示了累计的snapshot占用的空间与AFS占用空间的比率,()里面表示这个snapshot占用空间与AFS占用空间的比率。
%total显示了累计的snapshot占用的空间与整个个卷占用磁盘空间的比率,()里面表示这个snapshot占用空间与整个卷占用磁盘空间的比率。
date列:
是snapshot创建时间。
最近那个snapshot就是.0,这里指是用snapsched命令创建的。
----------------------------------------------------------------------------------------------------------------------------------
系统会自动删除通过schedulesnap创建的比较老版本的snapshot,当新snapshot创建后。
但是系统是不会自动删除手工创建的snapshot的,只能用snapdelete命令去删除它们。
注意:
删除任何snapshot的时候,特别不是通过snapsced命令产生的snapshot(比如snapmirror,snapvault产生的)的时候,要特别小心,要确保要删除的不是最新的snapshot。
如果删错了会夯住snapmirror和snapvault进程。
snapdelete[-A|-V][vol-name][snap_name]
snapdeletevol1satday←===删除某个卷上的某个快照
TueDec2914:
34:
03CST[wafl.snap.delete:
info]:
Snapshotcopysatdayonvolumevol1NetAppwasdeletedbytheDataONTAPfunctionsnapcmd_delete.TheuniqueIDforthisSnapshotcopyis(3,227).
snapdelete[-A|-V][vol-name]←==删除卷上面所有的快照,比如要建立一个新的snapscehed
snapdelete-avol1←===删除某个卷上的所有快照
Areyousureyouwanttodeleteallsnapshotsforvolumevol1?
y
Deletedvol1snapshothourly.2.
Deletedvol1snapshothourly.1.
Deletedvol1snapshothourly.0.
snapreserve[-A|-V][vol-name][percent]←===设置snapshot空间预留比例
一般预留整个卷容量的20%。
可以使用snapreserve命令修改这个比例,最好不要低于20%,不推荐这么做,不输入比例就显示出现在的空间分配情况。
snapsched←===显示当前的snap时间表
Volumevol0:
026@8,12,16,20
026@8,12,16,20←=代表最近2天和最近6小时的snapshot将保留,而每天8am,12am,16pm,20pm做snapshot。
这个命令相当于指定了什么做snapshot,各种类型的snapshot保留多长时间。
snapdeltavol1←=显示snapshot中变化数据的比率。
FromSnapshotToKBchangedTimeRate(KB/hour)
-------------------------------------------------------------------------
testActive1099880d00:
17373896.883
snaplist-qvol1
qtreecontentsdatesource
-----------------------------------------
test(Dec2916:
14)
qtree1OriginalDec2916:
14-
qtree2OriginalDec2916:
qtree3OriginalDec2916:
14-
Snapsched参数的含义:
参数
意义
weeks
指定每个星期多少快照将要被保留(default:
0).
days
指定每天多少了快照将要保留。
(default:
MondaythroughSaturdayatmidnight).
hours
指定每个小时多少快照需要被保留。
缺省四个小时做一个(default:
8AM,12Noon,4PM,and8PM).
hours@list
指定具体哪些时间做快照(24-hourclock).
与snapshot相关的options命令:
voloptionsvol1nosnapon
关闭自动snapshot功能。
但在任何时候还可以手动创建。
voloptionsvol1nosnapdiron
让客户端可以看见或不能看见,能访问或者不能访问(~snapshot)目录。
对于NFS,目录是.snapshot,对于CIFS是~snapshot。
optionscifs.show_snapshoton
让~snapshot目录对于客户端是可见的。
对于CIFS要达到此目录,需要做下面2步:
1)打开optionscifs.show_snapshoton
2)关闭voloptionsvol1nosnapoff
snapautodeletevol1←===允许灵活卷自动删除快照,缺省是disabled
snapshotautodeletesettingsforvol1:
state:
off
commitment:
try
trigger:
volume
target_free_space:
20%
delete_order:
oldest_first
defer_delete:
user_created
prefix:
(notspecified)
1.4、NFS客户端如何使用snapshot
voloptionsvol1nosnapdiroff←==在存储一端执行此命令,让客户端可以看见.snapshot目录
在NFS客户端mount上共享资源
-bash-3.00#ls-la
total146
drwxrwxrwx19rootroot4096Dec2913:
10.
drwxr-xr-x42rootroot1024Dec2512:
33..
drwxrwxrwx4rootroot4096Dec2914:
34.snapshot
drwxrwxrwx7rootother4096Dec2913:
10CommonFiles
-bash-3.00#pwd
/tan/.snapshot/hourly.0
-bash-3.00#ls-l
total40
drwxrwxrwx2rootroot4096Dec2719:
06qtree1
drwxrwxrwx3rootroot4096Dec2715:
28qtree2
06qtree3
28wangjun
56wangjun1
1.5、CIFS客户端如何使用snapshot
optionscifs.show_snapshoton
voloptionsvol1nosnapoff
可以看见snapshot目录了。
最近的快照里面的内容。
1.6、测试从CIFS客户端利用snapshot恢复文件
测试创建快照后,AFS文件系统变化后,如何利用快照恢复到前一状态。
第一步:
snapdelete-avol1←==先删除vol1上面的所有快照
第二步:
这个时候快照目录是空的。
第三步:
手工的创建一个快照。
snapcreatevol1tes
这时候在客户端,发现test目录下面的结构与AFS文件系统一致。
第四步:
删除AFS里面的一个目录
快照中这个目录还是存在的。
再试验向共享中拷贝新的文件,发现快照目录里面是没有这个新文件的。
将快照中的wangjun目录拷贝到以前的位置,文件和目录就恢复了。
1.7、使用snaprestore命令
对于LUN一级做snapshot,netapp的建议是最好一个volume上面创建一个LUN。
因为做恢复的时候只能针对volume或者file来做恢复。
snaprestore[-f][-tvol|file][-ssnapshot_name][-rrestore_as_path]vol_name|restore_from_path
从指定的snapshot恢复一个volume,或者恢复一个单独的文件。
这个命令没有license是看不见的。
如果你没有指定snapshot,则系统会提示你输入一个snapshot。
在恢复volume或文件这些操作前会让用户确认,-f选项会禁止确认这步。
如果-t选项指定了,则下面必须标明是恢复整个volume还是文件。
也就是说snaprestore不能同时执行volume的snaprestore和文件的snaprestore。
对于volumesnaprestore:
Volume必须是online状态并没有镜像。
如果恢复根卷则需要重启,如果恢复非根卷则不需要重启。
当恢复的时候所有针对非根卷的访问全部终止,就象offline了一样。
但其实volumeoffline了是保护了,不让用户访问,但也不让数据恢复了,所以这两种状态还是有区别的。
做完恢复了之后,volume就具有了和做快照那个时刻同样的状态。
对单个文件的snaprestore:
保存文件的Volume必须是online状态并没有镜像如果restore_as_path选项指定了,则必须是文件的全路径。
如果在volume没有足够的空间,则单个文件恢复不会执行,如果在AFS里面文件已经存在则会覆盖它。
Snap命令会花费几分钟时间返回,这段时间客户端排他锁撤销。
当snap命令返回,则恢复过程在后台开始执行,这段时间,任何试图去修改文件的操作都会挂起直到恢复完成,但是其它的文件snaprestore是可以做的。
在恢复过程中,快照不能删除,新快照不能创建当单个文件恢复正在进行的时候,定义的计划snapshot也会暂时挂起。
对于tree、user、group的quota限制在恢复过程中也不强加,如果超过了quota的限制,则在恢复完成后,/etc/quota就需要改变,然后再执行quotaresize命令。
恢复完成后文件的属性(大小、权限、属主等)与snapshot中的一致。
如果恢复过程中,系统宕机了,则重启后操作自动重新启动。
命令实践
snaprestore-tvol-stestvol1←==恢复整个卷
WARNING!
Thiswillrevertthevolumetoaprevioussnapshot.
Allmodificationstothevolumeafterthesnapshotwillbe
irrevocablylost.
Volumevol1willbemaderestrictedbrieflybeforecomingbackonline.
Areyousureyouwanttodothis?
Youhaveselectedvolumevol1,snapshottest
Proceedwithrevert?
Apply_WaitForPendingCloseShare()-waitingforsharestoclose...
Apply_WaitForPendingCloseShare()-allsharesarenowclose
ShareCIFS.HOMEDIRdisabledwhilevolumevol1isoffline.
Sharetest1disabledwhilevolumevol1isoffline.
Sharetest2disabledwhilevolumevol1isoffline.
Sharetestdisabledwhilevolumevol1isoffline.
TueDec2917:
19:
42CST[wafl.snaprestore.revert:
notice]:
Revertingvolumevol1toaprevioussnapshot.
ShareCIFS.HOMEDIRactivated.
Sharetest1activated.
Sharetest2activated.
Sharetestactivated.
43CST[cifs.homedir.activateEntries: