2.4存储虚拟化
存储虚拟化是存储模块的主要焦点(参见图2-2),它抽象了服务器应用访问数据时的逻辑表现与数据的物理位置,实现了位置无关性(云计算的基本特征之一)。虚拟系统负责管理卷到实际物理位置的映射过程,使逻辑实体以卷的形式展现给用户。虚拟化软件或虚拟化设备负责维护映射表,它也是元数据的一部分。映射粒度小至物理磁盘的一部分,大至整个物理磁盘,在这样的环境中,单个信息块由其LUN,也即物理磁盘,以及LUN内的偏移地址一起确定,这一偏移地址也称为逻辑块地址(Logical Block Address,LBA)[16]。逻辑实体通常指虚拟磁盘,物理磁盘之间的地址空间映射由它们各自的LUN确定。
说明:物理磁盘也可以仅为存储的一部分,例如从底层磁盘子系统中的RAID阵列切出来的一块。
从另一个角度来看,传统存储管理通常采用到主机系统的DAS方式,主机拥有对DAS的唯一控制。SAN出现后,DAS被存储网络而替代,不过依然主要在RAID系统级别创建并维护存储,虚拟化是传统存储管理模型的下一逻辑步骤,虚拟化实现了集中的磁盘创建及维护的集中控制中心。
未进行虚拟化时,不同的主机系统拥有各自的烟囱式数据库或存储(参见图2-3),造成了资源的浪费,存储虚拟化实现了按需供应—资源池(而非特定的烟囱式数据库),使得无论应用来自哪个附加系统,需要多大量的资源,都能够获得满足。池式存储由各厂商的不同后端存储混合而成,能够实现对各类遗留及异构存储资源的整合和充分利用。
虚拟化也有助于调节可得资源的数量,而不再需要通过启用周期存储设备实现容量的增加或减少。主机系统也不用再负责卷的管理以及关注存储的变化,包括数据迁移或存储升级等。数据保护技术,诸如快照和复制,也被简化了,为不同应用分配不同类别的存储也变得简单了。此外,SAN存储虚拟化是对服务器虚拟化的补充,SAN存储虚拟化简化了VM在不同物理平台间迁移数据链路的关联。最后但也同样重要的是:存储虚拟化也简化了存储管理,降低了管理异构存储资源的成本,这也是现代DC的常见问题。
2.4.1块汇聚
到目前为止,在这一章我们已经讨论了块级别的虚拟技术,通过对不同物理磁盘整合使得它们看起来就像一个逻辑设备一样。这样的技术通常也称为块汇聚,它与全球网络存储工业协会(Storage Networking Industry Association,SNIA)提出的L2共享存储模型有关。为什么在块一级进行虚拟化?最主要的原因是希望无须增加额外的智能应用,就能够克服个体设备的物理局限性,在应用看来是拥有了更大的磁盘,而实际上是通过增加一个虚拟磁盘来实现LBA容量扩展。
块汇聚是在主机(服务器)内部的存储设备(智能设备控制器)或在存储网络(基于网络的设备或FC交换机)上实现的,以下是三种常见的块一级虚拟化解决方案,它们各有利弊:
基于主机的虚拟化。
利:软件解决方案与存储平台或开发商无关,也与底层SAN技术、FC、iSCSI等无关。
弊:基于主机的虚拟化通常需要为每个主机购买一个许可,因而整体成本比较高,虚拟化软件也有可能十分复杂,而且需要在访问到存储目标之前,必须对每一个帧都进行拦截及重定向处理。由于每个主机都需要独立控制,因此需要为每个主机都安装一个软件驱动程序。因为实际主机是基于VM的(更多细节请参考本章“虚拟数据存储概念”的相关内容),所以使用VMware VMFS能够解决其中一部分问题。
基于设备的虚拟化。
利:存储设备或子系统与主机平台及OS都无关,虚拟化是由与物理磁盘驱动器非常接近的设备控制器完成的,该解决方案能够提供更好的响应能力。
弊:通常设备来自不同厂商,因而对异构存储资源的SAN环境进行管理十分困难,数据存储设备厂商通过将大量不同的物理存储技术,包括NFS、CIFS、iSCSI、FC以及FCoE,放在一起组成统一的存储体系架构来克服此问题。NetApp数据ONTAP 7G以及8.0,以及EMC公司的Celerra/CLARiiON,都是基于统一存储体系架构。
基于网络的虚拟化。
利:通过虚拟化设备或在FC交换机内可以实现基于网络的虚拟化,该解决方案完全独立于存储平台、主机平台以及OS。当连接到SAN后,基于网络的虚拟化可以访问所有相连的主机以及存储设备,并具备高性能及可扩展性。
弊:基于网络的虚拟化技术通常与厂商相关,如果将虚拟设备以界内方式部署在数据路径上,它们往往会变成瓶颈,同样,基于网络的虚拟化技术也面临着可扩展性难题,需要采用聚集处理,以防止单点失效。通过基于交换机的虚拟化技术,可以访问到高性能的基架,从而增强了系统的可扩展性。这样的强化效果受制于用户所选择的特定类型的交换机及硬件,也有可能在未来系统升级时不得不全盘更新。因此,我们需要采用独立供应商的标准,例如使用光纤架构应用接口标准(Fabric Application Interface Standard,FAIS)来克服基于专有性交换机虚拟化的缺点。
说明:FAIS基于INCITS T11标准,其目标是为光纤应用创建一个与底层硬件平台无关的通用API,来帮助开发人员将存储和数据管理问题与应用、主机以及存储设备分离并集中到一个基于光纤的智能存储平台上。
2.4.2同步及异步存储虚拟化
同步虚拟化属于基于网络的带内虚拟化部署方式,此时,数据及控制消息使用相同的路径,由一个集中的虚拟存储管理器负责所有的I/O及元数据路由。虚拟引擎通常为一个单独的网络设备,不过也可以将该设备作为特殊的模块嵌入到FC交换机中,或直接运行在服务器上。所有I/O都需要经过虚拟设备,这样会对能够利用的SAN拓扑有所限制,有可能产生瓶颈。利用缓存最大化虚拟引擎性能可以解决这一瓶颈问题。IBM SAN卷控制器(SAN Volume Controller,SVC)是基于网络的带内设备的样例。
图2-10给出了一个同步虚拟化的样例。在这个样例中,所有服务器端口都划分到虚拟设备的虚拟目标端口T区域,所有的存储端口均划分到虚拟设备的虚拟发起端口I1。所有来自主机(发起者I)的数据及控制帧都将送往虚拟目标T,并在虚拟目标终止。SCSI CDB[17](命令描述块)以及LUN都将被重新映射,发起者(例如I1)作为虚拟设备代理将发给物理目标T1一个新帧。
异步虚拟化方法属于基于网络的带外虚拟化部署,可以将I/O操作分成如下3个阶段:
1)服务器拦截下I/O请求块。
2)服务器要求元数据管理器确定数据的物理位置。
3)服务器存储或重新检索那些直接经过SAN的数据。
FC SAN上的元数据以带内方式进行传输,以太网链路上的元数据以带外方式传输。在SAN中,每个使用虚拟存储的服务器都必须使用特定接口或安装的代理与元数据管理器进行通信,完成从逻辑的数据访问到物理访问的转换,因此推荐使用带外以太网链路,因为它能够避免SAN中由于IP元数据传输产生的拥塞。
图2-11向我们揭示了异步虚拟化的原理,此时每一个服务器上都运行了一个虚拟化主机代理,负责拦截I/O请求块,并将元数据(CDB以及LUN)发送给带外LAN上的虚拟(元)管理器。虚拟管理器将对CDB以及LUN进行重映射,并将它们返回给服务器。服务器将修改后的帧发送到存储目标端口,所有之后的数据及响应帧都可以在发起者(I)以及目标端口(T)之间直接移动。
两种部署方式拥有各自的优缺点:
同步虚拟化。
优点:带内部署复杂性较低,因为它使用单点管理模式,整体结构更简单,也不需要主机代理。
缺点:同步虚拟化增加了每一帧的时延,因为所有的帧都先被终止,然后再被设备重映射,最后才被转发到目标地点。所有的网络传输都经过设备,将增加潜在的单点故障以及性能瓶颈,借助集群解决方案以及大容量缓存解决这些问题,只是执行虚拟操作的集群虚拟化设备又会因元数据库同步产生新的一致性问题。
异步虚拟化。
优点:异步虚拟化的主要优势在于低时延。
缺点:异步虚拟化属于带外操作,要求主机能够拦截控制帧,此外,虚拟(元数据)管理器有可能形成单点故障。
对基于网络的虚拟化而言,到底应选用哪一种部署方案:是带内部署还是带外部署?是否存在一种体系结构能够结合二者的优势,却又可以避免同步虚拟的瓶颈,也不需要异步虚拟中的主机代理呢?基于智能交换机的分离路径架构有可能是一种最佳方案。换句话说,也就是使用基于交换机的混合(分离路径)方法,控制路径采用效率更高的带外部署,而数据路径采用带内部署,这种方案从本质上避免性能瓶颈,也不需要使用主机代理。
在分离路径体系架构中,元数据管理器通常为一个控制路径处理器(Control Path Processor,CCP),嵌入在智能交换机中的特定刀片上,或者位于某个外部带外控制器(设备)上。CPP支持FAIS,负责设备恢复、卷配置(例如,管理LBA元数据、将主机映射到存储LUN上)以及I/O错误或意外处理。这些操作不要求CCP处在界内,也不要求CPP位于数据路径上。当卷信息(主机到存储的映射)确定后,将被委托给数据路径控制器(Data Path Controller,DPC)。DPC包含了高性能的I/O处理ASIC[18],也驻留在特定刀片上,负责复制等带内操作。当接收到来自CPP的卷信息后,DPC将独立开始工作,完成从虚拟到物理的I/O转换,并且将数据转发到正确的目的地。例如,MDS 9000系列上的Cisco存储设备服务模块(Storage Services Module,SSM[19])能够支持分离路径架构。SSM支持FAIS,允许集成第三方虚拟引擎(例如EMC Invista[20])将虚拟化控制数据转移给MDS交换机。