一个方案设计提前完成j_0068.gif,周四,周五就轻松一些,那就写点东西吧。关于存储精简配置技术,算是一个古老的技术,不过仍然看到有论坛很多朋友没有一个完整的理解,包括:目前技术程度,发展过程,用到哪些方面环境,应该注意什么,产生的效益等等,因此我想阐述下自己一些卑微的见识;毕竟Thin Provisioning给我带来很多利益,同时也是我比较敬重技术之一。

<之所以称他为古老的技术,那是因为存储技术的发展实在太快了>i_f36.gif


   首先,由于一些标准协会的成立,很多技术概念已被定义,不过一些技术概念在不同的厂商使用不同的专利技术实现,所呈现的结果可能是不同的。厂商为了符合市场需求,产品竞争力,通常在维护这些技术概念的基础上,进一步扩展其特性,这就好比Linux,简单来说,最初阶段只是一个内核,而如今发展成各个分支与商业版本,唯一保留的则是那几个核心命令和系统名称,告诉人们它是从Linux演变而来的。

    其次,我希望任何对这篇文章感兴趣的朋友,能够按照文章的思路走下去,其一:能够完整的了解这个技术以及发展到目前的程度。其二:您可能接触很多一线厂商的存储中关于Thin Provisioning的技术例如:IBM,EMC等等,而这并不代表Thin Provisioning技术是他们强项,所以我们的想象力绝对不能被他们限制。


******再次声明下:既然标识为原创,证明下方所阐述的全部来于我自己的观点。我的经验,阅历,知识程度等方面会有不足,请把此文作为一个参考,切勿较真。

----------------------------    

先聊一下发展历程:


<*这不是一篇软文,所以我尽可能隐去一些公司名称>

Thin Provisioning技术蓝图来自存储界的前辈STK公司,因为他们早在93年提出来的,这一点可以在Google.com.tw进行了解,只是一个蓝图或说是技术架构。而在2001年<或者之前>被一个软件厂商“V”公司使用在存储层并投入市场,使之前的蓝图转为商业技术,不过这一技术的命名并非使用的是“Thin Provisioning”,其技术原理和结果却是一样的。紧接着在Gartner 02年峰会,“P”公司实现了Thin Provisioning技术,且命名为:Thin Provisioning;在当时有趣的是,V公司和P公司在媒体,公开场合争论的不可开交,争论的焦点在于——Who is the first Thin Provisioning?或者Who invented the Thin Provisioning?但两个公司还算厚道,坦诚是STK首先提出的这一理念。



精简配置技术架构?

精简配置技术在于把存储内部的磁盘或者RAID进行“池”化,通过磁盘池提供LUN给应用主机,而提供LUN的体积不受实际空间的制约,通过图释也许能够更直观的了解:

143513773.png


通过上图能够看出,所有RAID容量被合并到一个大的池中,池可以包含一个RAID或者若干个:容量和数量取决于各厂商的技术原理和指标,而这一技术发展并未停止。

随之虚拟化技术广泛使用,一些跑在技术前沿的厂商创造了更高明的玩法,比如通过软件,建立一套虚拟化层,整合的资源从存储的内置RAID扩展到整合外置的资源。比如把一台或若干台存储也塞到磁盘池,并且让这些不同厂商的存储相容性的工作,如下图:


143636719.png

实现这一技术的过程也许相当复杂的,但是就结构来看比较简单。





值得一提的是,任何技术都会有乐观的一面和消极的一面,关键是各个厂商是否投入精力去改善这些不利的因素。如果选择我们运气好选择了一个不错的厂商,潜在问题都已解决或规避,我们完全认为这个技术是没有副作用的,那剩下的则是潜在效益,这是明智的。当然我们也会遇到另一种情况,厂商没有投入过多的精力或技术实力因素,导致这个技术不是很完善,我们可以采取变通的方式解决,但是不要消极的看待某种技术,或彻底的放弃。我觉得作为技术人员,应该充分利用现有技术,因为这是用户投入的一部分,尽可能不要为用户做主。


聊一下Thin Provisioning使用会带来哪些潜在的问题!如何规避以及那些更完善的技术厂商所带来的结果:


容量爆满

通过上面图释能够看到,每个主机都获得了一个更大体积卷,这些虚拟体积容量也会呈现在每个主机的操作系统,正常情况下,主机会无止境的填满被自己识别到的空间;会不会有种可能,其中一个主机把磁盘池实际容量给填满了?答案是:默认情况下会发生的。并且所有的主机将会出现写入报错的信息,如图:


143909365.png

   上图是预料中的结果,因为我们实际的磁盘(5TB)都已经被其中一台主机填满了;

一些厂商比我们更早意识到了这问题。所以,我们选择这项是技术要咨询厂商如何解决这个问题。一部分厂商使用容量限制阀,也就说虽然提供了35TB-LUN给一个主机,当然主机在系统也能识别,但是我们提前在存储对这个LUN设置了一个Reserve值,比如是33;哈哈i_f30.gif,这下好了,这个主机虽然识别了35TB,但只能使用到2TB;另外一部厂商使用优先级的设置,比如以整个磁盘池资源为基础,强制多少TB只能是给哪几个主机使用,而这几个主机可能运行着关键业务。容量爆满的问题已经解决了。对于有些存储厂商似乎没有做到这么完善,那也OK,另外创建一个LUN,这个LUN不提供任何服务,只是Standby。一旦磁盘池容量被写爆,删掉这个LUN,让磁盘池多出一部分空间,然后尽快购买磁盘,并且,存储设备通常会有丰富的预警措施,请善用这一点。




聊一下空间自动回收


   容量写爆问题,对Thin Provisioning了解的工程师似乎都比较关注,但是,现在聊得话题更应该关注,因为能够解决此问题的厂商真的很少,但很多时候我们需要解决。

   一个有趣的回忆,在一台手提电脑,有些时候我们误删除一堆东西,也可能是格式化,而文件系统也显示了空间被释放,但是为什么第三方软件仍然能够恢复这些内容呢?阅历比较丰富的技术人员明白了答案:这些被删除的文件仅仅是从系统上,由“1”被标记为“O”,并且告诉文件系统,“O”是可用空间,而实质来讲,没有被覆盖之前,删除的内容仍然存在;<当然我的措辞不太严谨,请参照权威的诠释>


   这个问题映射到存储层会是什么结果呢?一个10TB-LUN映射给主机A,首先存储的磁盘池被占用的空间则是“O”,这是Thin Provisioning的特性,以数据实际占用为主。这时候因为某一个测试,主机A把10TB的卷塞满,此时,磁盘池被占用的容量是10TB。再过一会,主机A的测试结束,删除了卷内的临时数据9TB,而这时,磁盘池被占用的容量则仍然是10TB,其实,无论主机删除多少内容,只要10TB卷被填满过,存储层的磁盘池就无法再释放。问题来了,一个新主机B加入网络中,需要2TB的容量,而磁盘池将无法提供任何容量给主机B,并且磁盘池显然容量可用为“0”;如果多台主机已经存在网络中,那么其它主机也无法写入。可是我们很需要在磁盘池释放这些空间,尤其是更多台主机。Thin Provisioning的磁盘池在于提高容量的利用率,在此时看来却与之违背。


144502541.png


      一个好的消息,这个已经可以解决。一个不好的消息,更多的厂商没有解决。

   首先,这需要两部分来操作,第一:在应用主机上面,对已删除的数据做“Zeroed”—至零操作。我自己的经验告诉我,目前市场上主流的商业操作系统都会支持。第二:需要在存储执行“Recycle”—空间回收。两个操作原理可以用一个比较恰当的场景:小明向政府租借了10块地皮盖房子,然后觉得自己一个人没必要住这么多,就拆掉了9个房子,然后他通知政府,请把9块地皮拿走吧,我不要了,这时政府行动,收回来了地皮共9块,分与其它人使用。

   之所以在此前强调,这个空间回收问题重要性,原因是很多存储设备不支持Recycle。如果要回收这部分空间,意味必须整个删掉了LUN;

   结论:在使用Thin Provisioning技术时,请选择有Recycle功能的存储,如果环境的系统是vSphere,并且存储设备支持VAAI,那就太棒了,因为这部分空间可以自动回收,无需繁琐的步骤。

那关于空间回收的问题也解决了,除此之外还没想到Thin Provisioning带来的其他问题。




在最后这一部分,我想称赞Thin Provisioning来了的利益!


   在技术上:早期的文件系统无法提供更多的便捷性,假如一个卷写满了,管理员只能依靠堆积更大的卷组。无法保证1个TB卷,写满后扩容到2TB以此类推,像NTFS的扩展卷一样来的方便。而庞大的卷组会导致更多的隐患。比如存储阵列能够对磁盘进行更高级别的保护,那如果卷组下面有的5个卷,其中一个卷产生逻辑错误,存储阵列都无法帮助管理员。依靠快照技术,能够对每个卷进行数据回退,但是,对于一个卷组依靠的是5个LUN来讲,必须在同一时刻对5个LUN同时执行快照,我尝试过,如果存储阵列无法把5个LUN组合成LUN Group进行快照,而是单独为每一个LUN做5个快照,很多时候卷组上面的数据库无法启动,可几乎就是一致性所导致的问题。


   通过Thin Provisioning技术,管理员在第一期规划就给主机映射一个10TB,或者100TB空间,而无需关心实际容量是否满足?其它主机是否够用?,在今后容量扩展中,主机管理员不做任何操作,容量自动上浮,更不会产生因为卷扩容带来的停机。


   很多用户厌倦了传统的存储方式,一个RAID 2TB的空间,如果划分一颗1TB LUN给主机,那下一个主机接入,只能映射一颗等于或者小于1TB的LUN,而不考虑第一个主机使用率是多少,Thin Provisioning则完美的解决了这个问题。


Thin Provisioning技术使用,磁盘池下面的RAID或者LUN采用最多的则是Striping技术,这无疑为每个卷的IO增加了Spindle's,主机的应用程序会直接获益,减少IO队列,提高性能。


   提供利用率,资源灵活分配,动态迁移等等好处还真是不少,关键在于除去节省用户的投资,没有用户规划周期是当前到下一个季度,通常是2年,3年,或是5年。为了后期兼容性及平滑融入环境,用户通常会一次性投入,比如年数据量增长是100TB,那么3年的规划就300TB的一次性投入。通过Thin Provisioning技术可以先投入100或50TB,而每个主机早早的获得了一个300TB的空间,受益于虚拟化技术,后期能够平滑的接入存储设备,无需考虑兼容性,磁盘池屏蔽了主机与存储子系统的交互,扩展变得更随意。还记得最早提及的“V”公司吗?IBM早在01年,通过Resell<转售>“V”公司的产品,使数以万计的IBM存储用户降低采购成本,提高购买力。HDS公司则是直接采用OEM合作方式,让用户直接获益................


    由此看来,Thin Provisioning是存储界伟大的技术发明之一!