存储虚拟化就是将实际的物理存储实体与存储的逻辑表示分离开来,服务器只与分配给它们的逻辑卷打交道,而不用关心其数据是在哪个物理存储实体上。它可以重新规划磁盘阵列,它允许任意数量的服务器访问磁盘阵列,并且不会受到仅能访问某个物理磁盘或某个RAID分组的限制。存储虚拟化表现了更直观,更随意,更透明的存储解决方案。基本层次分为:基于主机的虚拟化,基于存储的虚拟化和基于网络的虚拟化。
存储虚拟化的内涵和外延经过这些年的大浪淘沙,从概念到具体的解决方案,它的轮廓逐渐清晰,我们在日常工作和应用中,已经将它不知不觉的应用起来,并试图把这条路走到底,形成一个完整的数据存储周期的链条。
就我们所想所知,目前我们在讨论一个概念的时候,在为它的前景激动不已的时候,对何时能够实现经常要画上许多问号。而走在第一个的实践者,需要付出的代价也远远不只摸着石头过河这么简单。没有软硬件厂家的配合,真正实现完整的数据周期只能是空中楼阁。所幸,存储虚拟化在这些年不遗余力为各个厂商所支持,我们的工作实践中,已经可以触摸到,感受到这些支持的作用。走通信息生命周期已经可以实现。这个想法让人激动不已。这里就和大家分享下在这几年目睹对于虚拟化存储的一些应用。
最初的个人电脑我们具体的看到盘,从物理到逻辑,是如此的清晰。这也是目前我们所有的个人电脑采用的模式,无须多说,都是没有做过虚拟化的大同小异。而后的PC 服务器,通过硬件或软件,给硬盘作出了raid。这是最普遍使用的存储虚拟化的情况了。从这以后,数据可能被镜像或n+1的保证了。
随后接触到第一套SAN的环境。(存储局域网(SAN)是一项加强存储虚拟化的技术。SAN结构的实现使得多服务器平台可以共享多存储设备,而SAN结构中的虚拟化可以更有效的利用存储设备,并减小对物理存储设备的需求)。最初我们的SAN环境,结构非常简单。两台小型机通过存储的光纤交换机连接磁盘阵列。两台机器通过高可靠性软件互相切换磁盘阵列的磁盘与应用的运行。这是虚拟化当时存在的比较典型的应用,到目前都有非常广泛的使用。这中应用的模式对应用用户而言,感觉只有一台服务器在使用,前端服务在某台特定服务器上坏掉后可以由另外的服务器接管。存储端因为主机端的虚拟而虚拟化起来。客户体验得到了一定的提高。
体会到双机与存储阵列为应用带来的巨大好处,我们将另外一套生产中的单机系统换成了双机,当时因为经费的原因,没有选择磁盘阵列,选择了散盘。选择散盘柜之后,经过对这组盘经过认真仔细的划分,根据应用需要对应作成了不同的RAID级别,而后就将两台主机与散盘柜通过光纤交换机相连,配制成高可靠性集群。大家都非常期待见到该应用系统运转良好,客户反馈好评如潮。没想到压力上来后,运转效率低下的远远超乎我们的想象。由于散盘其本身没有控制器,它所有的运算,分配,读写操作的负担全部压在主机一侧,盘的读写操作、运算工作负荷和外界对服务器应用的访问使用压得服务器动弹不得,万般无奈之下,增加了一个磁盘阵列来做智能化的存储。换过磁盘阵列后,提供服务的效果方才转变。
看到此处,相信很多人都会皱眉头说,这不是显而易见的问题嘛,散盘柜的运行效率怎么可能会比拥有控制器的智能化存储阵列相比。既然已经用了磁盘阵列,怎么还会倒退回去使用散盘柜,来用主机的CPU进行计算和分配呢。话虽然是这么说,但如果没有这一次的弯路,我们对存储阵列(这里所说的存储阵列是比较早期的低端些的存储)究竟比散盘柜的好多少的的感觉只是一个大概的感觉,甚至我们可能还抱有一些幻想,就是如果散盘配制合理得当,其效率不见得会比磁盘阵列慢。但事实胜于雄辩,更换使用磁盘阵列之后系统效率的提高不仅仅是成倍的关系,运行速度的提高了一个数量级。
如果从现在看来,这种选择的弯路的确可以避免,但当时,因为这样的选择和弯路,我们却因此切身的体会到存储自身提供的虚拟化方法和本身控制器的管理效能会给应用充分的加分。
伴随这应用的逐渐增多,管理的系统也呈现了两种趋势,一个是SAN的数量变多(不同类型的应用被部署在不同的SAN),另一个是每个SAN需要管理的服务器和存储数量增加。SAN的数量上增加仅仅是从量上的变化,其基本结构不足以引起我们的兴趣,但一个SAN内的设备数量的增加,对虚拟存储的支持力度就越来越大了。智能化的存储,有内置的算法,作磁盘存储的默认算法,这些算法负责掌管数据怎么读出来,怎么写进去,哪些东西从cache里请出去,哪些可以留下来,数据坏了怎么使用热备盘等等。这些规矩定下之后,这个存储对我们而言就是透明的了。我们不关心磁盘的数据存在哪里,只关系把那些逻辑盘究竟给了哪个服务器,我们最终可以使用的存储空间有多少。在一个较大范围的SAN里面,我们用多个存储支持着多个主机,也用一个存储支持着多个主机,多个存储支持着一个主机。多对多的虚拟化在不同程度上得到了实现和发挥。
我们得到了一个SAN,里面的数据存储已经实现了虚拟化,然而,这距离信息生命周期的完整闭环仍然距离遥远。存储行业中的分类和策略服务、整合、业务连续性、恢复和归档、法规遵从和内容 管理等存储策略,体现了信息生命周期管理的不同应用领域。在这个里面,我们已经根据不同数据的存储情况,对经常访问的数据,使用了性能较快的硬盘存储,对可靠性要求高的数据,做了镜像,保证了数据的存储的分类和策略。同时,目前使用的Ultrium二代的磁带作数据的备份存储,归档保存和恢复,可以基本保证数据的可靠性。为保证业务的连续性,重要应用均采用双机Fail over切换,Oracle数据库也采用高可靠性的RAC(Real Application Cluster),这些都在一定程度上保证了业务的连续性。
上述设备和应用,虽然在一定程度上保证了信息在生命周期的各个阶段的有效性和可靠性,但其中的几个问题仍然是今后需要仔细解决的。接下来,我们会详细看看目前现有系统可能存在的问题和今后对问题解决的方法。
按照信息生命周期来思考,磁带备份并不是作为数据恢复的最佳媒介,磁盘的快速恢复对业务的恢复。而由于可以异地存放和保留较长时间,是归档保存的不二选择。保证业务连续性的恢复更好的方法是有双套存储系统,一套远程,一套眼前。然后夜晚做异步复制(对于一般业务)。这样即使本地发生什么意外,都可以立刻切换到灾备中心。但这种大手笔的方法,实在不是一般的业务所能承受的。其次的方式就是选择一套低端磁盘作存储使用。磁带作离线保存。这个就是我们正在计算准备的数据保存方法。也会在提高业务连续性的同时,体现信息生命周期的管理。
这里,选择低端磁盘的使用,或者利用现有旧的磁盘阵列,都涉及到虚拟化。目前,我们购买的 hp 的XP12000(即HDS的USP系列)。XP12000已经对某些特定的存储作了支持,可以支持在存储阵列端的虚拟化。这样,在我们将某些特定的磁盘阵列加到这个盘阵的存储池中,就可以成为一个大的虚拟存储。或者,我们可以依靠SAN,在这个存储网络里增加低端硬盘,成为近线存储,在离线和在线存储中减少过度的跨度。而低端的硬盘盘阵,对于主机,同样是一个有着一定空间的挂接点,对于存储备份软件,它却是存储和备份的虚拟磁带机。
想法不错,但实施起来需要软件的帮助。大家都知道,很多存储软件早就已经作到了将硬盘虚拟成磁带机来进行数据存储的方法。用这种方法,我们就可以将在线的数据以快于备份到磁带上的速度存储在近线的磁盘存储上。而后,我们可以将这份数据保存到磁带上。这种做法说起来很容易,维护起来也可以实现,只是需要考虑很多因素。比如磁盘的数据保存周期,哪些数据copy到磁带上,Oracle数据库的归档日志维护改变等等。最近,我使用的备份软件,升级后可以在一个完整作业中维护磁盘和磁带两套备份。其具体步骤是目标地点可以同时选择磁盘和磁带,并可以分别对它们的保留时间和磁带、磁盘的擦除时间作出循环规定。通过这个方法,我们很容易的就可以定义在磁盘上的多份近线备份(建议不要留太多份),同时,可以在磁带上留下离线的备份数据,增加可靠性。在软件的帮助下,已经开始做一些不太大,但变化很多,很重要的数据的磁盘近线的临时备份,等到有便宜的大型存储接入存储网络后,就可以将很多重要数据快速存储在两个不同地点,进一步提高系统的可靠性和业务连续性了。
存储的虚拟化作为技术,简化了与存储有关的上下游的工作人员的需要考虑的问题。它对用户而言变成透明的,在存储数据的时候,用户并不关系他存储的数据究竟在物理位置的哪块盘上,具体哪个存储设备上。对我们的工作而言,它帮助信息在日趋复杂的异构平台上完满的完成生命周期,让数据更安全,更可靠。