漫谈高端存储的快照效率和一致性快照
西瓜哥 发表于:13年09月04日 12:02 [原创] 存储在线
最近我重点看了IBM的DS8870的手册,800多页全英文的,看得我头都大了。前面介绍open system的时候有一个错误,这里纠正一下。
IBM说DS8000支持open systems and system z/os。从IBM的描述来看,如果z系列大机安装linux应该算open system。另外,DS8000的FC主机接口支持FCP和FICON协议,不需要单独的FICON口。我 原来以为DS8000分不同的口,发现物理层都一样,只是上面管理员要选择跑FCP协议还是FICON协议,但不能同时支持。因此3PAR和HW HVS这些只支持open system的高端存储,也可以支持大机了,只要和大机做一个兼容性的测试就可以了。以后,大机和open system并不能对立来看,这是我的理解。
上面我们说了快照实现的两种方法COW和ROW。虽然采用同样的技术,但每个厂商实现的细节都 不同,加上底层RAID技术不同,因此空间的利用率方面差距也比较大。大家看到,同样采用COW技术,3PAR和HW由于底层采用RAID 2.0技术,因此实现的效率更高,性能指标也高不少。因为RIAD 2.0具备完全块虚拟化能力,存储空间是在写时完成分配,而且具备非常灵活的扩展能力。
1、在创建快照的时候,不用为快照匹配资源池。按照COW原理,当快照需要额外空间保存数据时,RAID 2.0会自动从存储池中分配空闲空间给快照。
2、当存储池空闲存储空间不足时,只需要简单给存储池扩容即可。
3、因为业务LUN和快照共享存储池,所以不会出现资源池浪费或不足等存储空间管理问题。
但采用传统RAID的高端存储,如EMC V-MAX,在最新的Enginuity version 5876才加入TimeFinder VP Snap功能,只有针对thin LUN做快照具有上面的部分优点,一般LUN的快照系统需要保留20%-30%左右的预留快照空间才行。
快照另外一个非常重要的特性是快照一致性组(Consistency Group)。我们今天重点来介绍这个功能对于高端存储的意义。
这个功能就是支持多个LUN或者叫卷volume同时做快照,保证数据的一致性。我们举一个生活的照集体照的例子来说明这个这个功能的用处。
我的大情人在银行工作,她曾经告诉我,她们银行很NB,每次部门合影,别人一般只会喊“茄子”,她们都是这样喊的:
摄影师:大家别动,马上要拍照了。
摄影师:我们银行什么最多?
众人:钱!(啪,第一张快照)
摄影师:钱多怎么办?
众人:花!(啪,第二张快照)
摄影师:花完怎么办?
众人:抢!(啪,第三张快照)
你看,是否是很有气势。以后你们照合影都可以这么学,把银行改成你们部门就好了。不过现在银行银根缺紧,应该没这么牛气了吧。
为什么要大家统一喊“钱”、“花”、“抢”?意思这个口型类似“茄子”,说起来像笑的样子,关键是同时笑,这张集体照才完美。
看这样的毕业照多美,是吧。为什么一般集体照要多照几张,就是怕有些人脸长,笑容爬得慢,不同步。你看这个小伙就不老实,需要重拍。
快照一致性组就是解决这个问题。我说一个ORACLE数据库的例子,10多年前我还是一个认证的ORACLE DBA(当时中国认证的人很少,我们封闭学了一个月,考了5门课才拿到证书。据说当时如果直接技术移民加拿大都没有问题,和CCIE有一拼。不过现在好像 掉下个椰子都会砸着两,哎),我们建数据库的时候一般采用多个裸设备(LUN),不同的LUN用来放不同的数据。如果采用阵列的快照来做数据库的备份,必 须所有的LUN都是一个时间点的才行,这样数据库恢复的时候才能起来,否则数据库必须回滚到某一个一致的时间点,意味数据的丢失。比较完美的做法就是在主 机安装一个快照的agent,最好是多路径软件具备这个功能(据说华为已经整合在一起了),在高端存储要做快照的时候,对主机的快照agent说,别动, 要照相了。主机agent接受到摄影师的命令后,把ORACEL主机缓存的内容flush一下到陈列来,然后hold住,阵列也尽快把cache的内容 flush到硬盘里,ORACLE用到的所有硬盘一块喊”茄子“,摄像师一按快门,一幅完美的快照就产生了。
一致性组除了保证照相的时候一致性外,还有恢复的时候要一致性恢复。这块的实现的重要性就不如照相的时候重要,可以人工选择同一时间的LUN快照恢复就可以了。最重要的是照相的时候必须要一致,而且这个人工干不了。
高端存储手册里面的KiB,MiB,GiB是啥意思?
接下来随便聊一个我过去不太注意的小细节。也就是在我看使用的厂商手册里面,经常出现KiB,MiB,GiB这些术语,我详细里面有很多童鞋了解它的意思,我也相信很多童鞋不太了解。
这个原因只要是KiB,MiB,GiB是采用2进制来,而我们常见的KB,MB,GB都是采用10进制来表示的单位。
这是十进制的单位:
这是采用二进制的单位:
造成这种原因主要是计算机操作系统都是采用二进制来表示的,而一般硬盘厂商都喜欢采用十进制来表示容量(估计这样容量就可以大一些?),害得我们经常需要在这两种容量中算来算去。
在 购买硬盘之后,细心的人会发现,在操作系统当中硬盘的容量与官方标称的容量不符,都要少于标称容量,容量越大则这个差异越大。标称40GB的硬盘,在操作 系统中显示只有38GB;80GB的硬盘只有75GB;而120GB的硬盘则只有114GB。这并不是厂商或经销商以次充好欺骗消费者,而是硬盘厂商对容 量的计算方法和操作系统的计算方法有不同而造成的,不同的单位转换关系造成的。
众所周知,在计算机中是采用二进制,在电脑世界里,以2的次 方数为“批量”处理Byte会方便一些,整齐一些。每1024Byte为1KB,每1024KB为1MB,每1024MB为1GB,每1024GB为 1TB,而在国际单位制中TB、GB、MB、KB是“1000进制”的数,为此国际电工协会(IEC)拟定了"KiB"、“MiB”、“GiB"的二进制单位,专用来标示“1024进位”的数据大小;而 硬盘厂商在计算容量方面是以每1000为一进制的,每1000字节为1KB,每1000KB为1MB,每1000MB为1GB,每1000GB为1TB, 在操作系统中对容量的计算是以1024为进位的,并且并未改为"KiB"、“MiB”、“GiB"的二进制单位,这差异造成了硬盘容量“缩水”。
还有,硬盘需要分区和格式化,操作系统之间存在着差异,再加上安装操作系统时的复制文件的行为,硬盘会被占用更多空间,所以在操作系统中显示的硬盘容量和标称容量会存在差异,而硬盘的两类容量差值在5%-10%左右应该是正常的。
大家了解了这些知识后,希望以后看到带“i"的单位就知道是啥意思了,不要以为是厂商创造的新术语哦。
不过,我看到很多国产的产品手册,好像从来不区分这两个单位,因此,我感觉严谨性不够。比如,IBM DS8870的Extent大小,写得很清楚是1GiB,XIV的手册也很严谨,MB和MiB区别得很清楚。我们中国人需要学习这种严谨的写法(啊,又扔 臭鸡蛋,我错了,行吗,我前面的文章所有的单位都应该带i,除了表示硬盘容量的单位外。看来讲别人容易,自己改起来难啊)。
好的,今天我们先聊到这里。希望大家积极反馈你的意见和建议,微信扫描如下二维码,关注微信公众号“高端存储知识”,与作者微信互动。