探索中国CIO人才现状 | 第四季调研报告
应用于vSphere和Hyper-V的LUN存储管理
2013-11-20  作者:TechTarget中国 

  对于物理服务器的存储配置来说,从RAID组中切分出来,为应用提供逻辑块容量的LUN,一直占据着基础地位。

  现在,虚拟服务器环境能够把一个服务器抽象成物理特征,从而提高硬件资源的扩展性和利用率。

  但是,仍需将存储提供给虚拟服务器和桌面虚拟机。虚拟管理程序作为虚拟化层扮演者一个重要的角色,即将物理存储资源抽象成虚拟设备。

  那么,对于LUN会有怎样的变化?这取决于你使用怎样的虚拟化环境。

  物理和虚拟驱动器以及LUN

  暂且不管虚拟管理程序的类型,数据的持久化保存依赖于一些存储设备载体,如传统硬盘或者固态硬盘(SSD)。对于块设备存储,VMware的vSphere系列,包括ESXi和Microsoft的Hyper-V使用根本不同的策略来呈现物理存储。

  vSphere系统使用存储阵列上配置过的LUN,使用VMware文件系统(VMFS)对其进行格式化。VMFS是一个专利文件格式用于存储虚拟机文件,利用了磁盘上的组织结构支持高粒度对象和块级锁。

  使用VMFS的必要的原因是大多数vSphere部署时使用少量的大型LUN,每个LUN上会搭载很多虚拟机。故需要高效的锁机制来保证虚拟环境扩展时性能不会受到严重影响。

  单个虚拟机是由多个独立文件构成的,包括VMDK(或称作虚拟机磁盘)在内。一个VMDK类似于一个物理服务器上的硬盘,一个虚拟vSphere上的客户端可能有多个VMDK文件,这取决于支持的逻辑驱动数、在使用的快照数以及VMDK的类型。

  举例来说,对于精简配置的VMDK,存储按需分配,一个客户硬盘由一个主VMDK文件和多个VMDK数据文件构成,后者代表随着虚拟机写到磁盘上的数据越来越多,增量分配的空间单元。

  与之对比的是,Microsoft则是把所有的虚拟机磁盘组件合并成单个文件,即所谓的VHD(虚拟硬盘)。VHD文件可以部署到已格式化过的Microsoft文件系统上,如NTFS或CIFS/SMB。

  对于Hyper-V没有单独的LUN格式。VHD文件作为精简卷(即所谓的动态硬盘)进行扩张,即增加文件的大小,消耗磁盘上更多的空间。在VHD内部,Microsoft在定长VHD的尾部、动态VHD首尾部存有元数据信息。

  与VMDK和VMFS相比,VHD在基于块的环境下更具优势。在这种环境下底层存储采用NTFS,即Microsoft用于Windows服务器上存储的标准文件系统。这就意味着VHD文件可以由系统管理员在卷或系统间进行简单拷贝,而不需要任何特定工具(当然前提是没有虚拟机运行)。

  对虚拟机进行克隆也变得容易起来,只需简单得对VHD进行复制,用其作为新的虚拟机源文件即可。如果能用到Windows2012的重删新特性就锦上添花了,因为这个特性可以显著减小从主VHD克隆出的虚拟机的空间消耗。

  为性能进行设计

  将服务器和桌面整合到虚拟化环境中意味着,跟传统的物理服务器相比,数据I/O特性发生了很大变化。I/O负载变得难以预测,因为来自虚拟化服务器的单个I/O命令可能以任何顺序出现,带来的大量随机I/O就不足为奇了。

  这就是所谓的“I/Oblender”效应,结果导致虚拟化环境使用的存储必须有能力处理I/O的大型卷;对于虚拟桌面,面临着“bootstorms(启动风暴)”,这是由用户通常早上启动虚拟机,工作了一天之后关闭它导致的大量I/O请求导致的。

  为保证性能,一般存储部署通常会使用这样一些选项:

  用于虚拟化环境的全闪存阵列逐渐普及开来。对于虚拟化服务器,它可以提供一致性和可预见的性能;对于虚拟化桌面,它的高I/O带宽可以处理启动风暴的问题。

  混合闪存阵列是对传统旋转式介质和固态存储的混合应用,针对固态存储上的活动I/O使用动态分层技术。它比全闪存阵列更具价格优势,因为很多部署上存在着大量不活动的VM数据。

  高级特性——对于vSphere有VAAI(用于阵列集成的vStorage接口,vStorageAPIsforArrayIntegration),对于Hyper-V有ODX(卸载式数据传输,OffloadedDataTransfer)。当执行诸如给虚拟机做副本或者初始化文件系统等常见任务时,二者均可以卸载来自管理程序的重复任务,减少存储网络上的数据传输。

  最终,虚拟环境中的存储配置实际上是为部署的存储获取合适的IOPS。这似乎很难估算,但可以通过如下方式获得:将现存物理服务器作为迁移计划的一部分,或通过预先部署一些虚拟服务器然后通过IOPS命令测量。对于虚拟化桌面,最好保证每个桌面有大约5-10的IOPS,整个VDI集区的IOPS按比例扩大。虚拟化环境可能还需要内置额外的IOPS能力来应对启动风暴。

  LUN性能和展现形式

  对于块设备,LUN一般通过使用光纤通道,以太网光纤通道(FCoE)或者iSCSI等来呈现。光纤通道和FCoE通过使用特定的主机总线适配器(HBA)或CNA(聚合网络适配器),能够更容易的将主机IP流量从存储网络流量中隔离开来。但即使一个特定的存储网络可用,仍有一些重要的设计问题需要考虑。

  首先,为保证存储的弹性和高性能,可以通过多个光纤通道接口来提供LUN。我们把存储弹性作为给定的,因为这一般是存储系统管理员的标准实践。就性能而言,多个HBA(或双口HBA)通过面向性能的分层技术允许vSphere和Hyper-V进行物理分段。

  这可能看起来不是特别符合逻辑,但是要考虑到vSphere和Hyper-V使用的LUN会相当大,那么到单个LUN的队列深度就可能存在问题,尤其是在不同优先级的工作负载存在时。当部署了高性能的全闪存设备时这尤为重要。对于iSCSI连接,使用特定的NIC并配置多路径以实现链路冗余。Microsoft和VMware均提供有部署指南来描述如何启用iSCSI多路径。

  LUN大小

  关于这个话题,即讨论LUN的大小还是很有意义的。vSphere(Hyper-V不尽然)限制了单个管理程序使用的LUN个数。通常,这些环境中存储是使用大型LUN(最大到2TB),以最大化总容量。因此,搭载许多主机的特定LUN上的用户会获得相同级别的性能。

  从存储方面来看,创建很多2TB大小的LUN成本很高。因此,存储阵列的精简配置提供这样的可行性,使得LUN逐步扩大到2TB的容量,同时可以为一个主机提供多个LUN,从而保证尽可能多的LUN中进行分布式I/O。

  LUN的局限和未来

  在LUN级别对管理程序进行存储分组意味着,对提供给单个虚拟机的服务的质量进行了物理限制;一个LUN上的所有访问者享受的性能级别相同。

  Microsoft推荐一个VM使用一个LUN,这样做在较大系统中也许会有限制(显然意味着大量管理开支),但是仍然可以这样实现。

  VMware表示要实现vVOL——虚拟卷——从存储阵列到管理程序对虚拟机存储的物理特性进行抽象。这样做可以根据虚拟机优先级和I/O负载更好的进行粒度划分,即使他们存在于同一个物理盘阵上。

  但是尽管一些公司致力于完全弃用存储阵列,很明显保留一个智能存储阵列受益颇多,其中一个好处就是它能够理解管理程序,并与之交流。