1.2.1 存储虚拟化
存储虚拟化是通过从应用、主机或通用网络资源中抽象、隐藏或隔离存储系统或服务的内部功能,使存储或数据的管理独立于应用和网络[6]。对存储服务和设备进行虚拟化,能够在对下一层存储资源进行扩展时进行资源合并,降低实现的复杂度。将存储资源虚拟成一个“存储池”,这样做的好处是把许多零散的存储资源整合起来,从而提高整体利用率,同时降低系统管理成本。特别是虚拟磁带库,对于提升备份、恢复和归档等应用服务水平起到了非常显著的作用,极大地节省了企业的时间和成本。除了时间和成本方面的好处,存储虚拟化还可以在单一的控制界面动态地管理和分配存储资源,提升存储环境的整体性能和可用性水平。通过虚拟化,许多既消耗时间又多次重复的工作,如备份/恢复、数据归档和存储资源分配等,可以通过自动化的方式来进行,大大减少了人工作业。
存储虚拟化可以按不同的标准进行分类。存储网络工业协会SNIA提供的存储虚拟化模型如图1-4所示,包括三种分类标准。根据资源类型的差异,我们可以分为磁盘虚拟化、磁带/磁带库虚拟化、文件系统虚拟化、文件/记录虚拟化、块虚拟化等。
图1-4 存储虚拟化分类
· 磁盘虚拟化,是指磁盘固件通过虚拟化屏蔽磁盘的物理特性,逻辑块寻址方法将CHS地址转换为连续编号的逻辑块给上层的操作系统和应用使用,简单地通过逻辑块数用户就知道磁盘容量;此外,磁盘固件能够将有缺陷的块重映射到一个空的无缺陷磁盘块存储池,使用户看起来仍然是一块很好的无缺陷磁盘。
· 磁带/磁带库虚拟化,使用在线的磁盘存储作为高速缓存来模拟物理磁带上的数据读写,这样不仅能够改进磁带的备份性能和服务寿命,还能改进存储容量的利用率;磁带驱动虚拟化是在磁带库里让尽可能多的主机系统共享物理磁带驱动,节省大量的硬件资源。此外,磁带驱动虚拟化使得坏磁带替换不会影响备份过程;类似于RAID技术在磁盘上的使用,独立冗余磁带RAIT和独立冗余磁带库RAIL都是磁带驱动虚拟化技术的应用。
· 文件系统虚拟化,最简单的形式就是网络附属文件系统NAS,如NFS和CIFS,有专门的文件服务器管理共享网络访问文件系统内的文件;文件系统虚拟化还可以用在数据库环境来结合裸设备访问和文件系统访问的优势。
· 文件/记录虚拟化,最广泛使用的一个例子就是分层存储管理,很少被使用的数据会被自动迁移到廉价的二级存储媒介,如光盘、磁带或低价高密度的SATA磁盘阵列;并且,这种迁移对上层的用户和应用是位置透明的。
· 块虚拟化,是磁盘虚拟化的延伸,也是存储虚拟化的核心内容。它通过控制物理存储设备来提供具有足够容量、性能和可靠性的逻辑卷,以满足存储消费者不必关心底层细节的需要;虚拟层负责将I/O请求映射到底层物理存储上的逻辑卷,并且按用户需要创建足够大、快速和可用的虚拟存储设备。
为了更好地理解存储虚拟化各种实现背后的原因,我们来看看I/O请求从应用到存储的执行链。首先,上层应用发送读/写请求到操作系统;其次,该请求通过文件系统或者直接发送到硬盘,并将请求转化为逻辑块地址;再次,将逻辑块地址转换为实际物理硬盘CHS地址,这一转换可以在主机端、网络或存储端实现;最后,在硬盘对应的物理地址上完成访问操作,将结果按原路反馈。根据虚拟化的处理位置不同,可以分为基于主机/服务器的虚拟化、基于存储子系统的虚拟化、基于网络的虚拟化。
· 基于主机/服务器的虚拟化一般由操作系统下的逻辑卷管理器(Logical Volume Manager,LVM)完成,不同操作系统的逻辑卷管理器也不相同。它是最流行的一种存储虚拟化方式,特别是直连式存储(Direct Attached Storage,DAS)广泛使用。主机逻辑卷管理器最常用的功能包括:将物理存储从多个逻辑单元号LUN合并为单一的超级LUN,使主机操作系统看起来像单一硬盘驱动;实现软RAID和快照及远程复制等先进功能;在操作系统的控制下管理硬盘资源的健康状况。基于主机/服务器的虚拟化主要用途是使服务器的存储空间可以跨越多个异构的磁盘阵列,常用于不同磁盘阵列之间做数据镜像保护。常见产品有IBM公司的AIX LVM、Linux LVM和Veritas Volume Manager等。
· 基于存储子系统的虚拟化不依赖于特定类型的主机,允许磁盘阵列支持具有不同操作系统或应用的异构主机。存储阵列RAID、快照、LUN屏蔽和映射等都属于块级存储子系统虚拟化。RAID系统能提供与其硬件相关的最优性能,但单个的阵列在硬件失效时会让快照等数据保护措施失效,需要存储子系统虚拟化来实现跨多个阵列的虚拟化。通常地,基于主机的虚拟化和基于存储子系统的虚拟化是结合使用的,不仅具有硬件辅助的RAID性能,还能提供基于主机LVM的弹性。代表性的产品有DELL公司的EqualLogic和Compellent系统、HP公司的3PAR和LeftHand系列以及IBM V系列等。
· 基于网络的虚拟化支持数据中心范围的存储管理,能够适应一种真正的异构存储区域网络SAN,提供存储容量爆炸式增长所需的自动存储管理。它的功能是异构存储系统整合和统一数据管理,包括:将几个LUN从一个或多个阵列合并成单个LUN给主机使用;将单个LUN分割为多个小的虚拟LUN给不同的主机;在SAN内部或广域网上进行同步和异步复制;让设备被特定的主机安全地访问LUN。在路由器固件上截取网络中任何一个从主机到存储系统的命令也可以实现存储虚拟化功能,供应商通常也提供运行在主机上的附加软件来进一步增强存储管理能力。典型基于网络的存储虚拟化产品有EMC公司的VPLEX、IBM公司的SVC和飞康FreeStor系列。
根据系统实现方式的区别,存储虚拟化又可以分为带内(In-band)虚拟化和带外(Out-of-band)虚拟化两种,早期业界也称其为对称虚拟化和非对称虚拟化。带内虚拟化设备放置在主机和存储之间的数据路径上,类似存储转发过程,所有的控制信息和数据必须经过带内设备。对于主机而言,带内设备像是能提供逻辑卷的存储阵列;对于存储而言,带内设备像是一个主机,发送不区分主机的读写请求。这样,带内虚拟化可以支持数据中心范围内管理的异构存储和异构主机资源。带内虚拟化可以在存储系统、网络、主机、文件系统上实现,但容易引起性能瓶颈,每个带内设备往往在一定程度上限制了主机数目,根据吞吐量需求有时需要多个带内设备。
带外虚拟化设备放置在从主机到存储的数据路径之外,实际的I/O可以直接发送到存储设备,主要在存储区域网络SAN上实现。带外设备负责管理存储池和卷的配置及控制信息,主机用这些信息来定位SAN存储系统内的物理块位置。由于不在数据流的路径上操作,在SAN环境中增加数据流虚拟化并不会直接影响带外设备,对硬件平台的技术要求也比较低。由于有更低的系统要求,带外虚拟化设备可以在SAN系统内的应用服务器集群上作为纯软件功能实现,避免增加额外的硬件设备要求。相比于带内方式,它虽然增加了更多复杂的交互,但是缩短了数据I/O路径,并且在全卷管理上更轻量级。