25存储本章讨论存储抽象的框架。将介绍各种物理存储硬件映射到VM的方式,以及XenServer主机API使用的软件对象执行与存储相关的任务的方式。在每个支持的存储类型的详细信息部分中,包括使用CLI为VM创建存储的过程、特定类型的设备配置选项,生成用于备份的快照,以及一些在XenServer主机环境中管理存储的最佳做法。最后,将介绍虚拟磁盘QoS(服务质量)设置。存储概述本部分介绍有哪些XenServer存储对象,以及它们之间的关系。存储库(SR)XenServer定义了一个名为存储库(SR)的容器来描述存储虚拟磁盘映像(VDI)的特定存储目标。VDI是包含虚拟磁盘内容的磁盘抽象。存储硬件的接口允许在大量SR类型上支持VDI。XenServerSR具有对本地连接的IDE、SATA、SCSI和SAS驱动器和远程连接的iSCSI、NFS、SAS和光纤通道的内置支持,因而非常灵活。SR和VDI抽象允许在支持高级存储功能(如稀疏置备、VDI快照和快速克隆)的存储目标上提供这些功能。对于本身不直接支持高级操作的存储子系统,会根据实现这些功能的Microsoft虚拟硬盘(VHD)规范提供软件堆栈。每台XenServer主机可以同时使用多个SR和不同的SR类型。可以在主机之间共享这些SR,也可以将其专用于特定主机。共享存储会加入一个已定义的资源池,并由该池内的多台主机共用。共享SR必须可由每台主机通过网络访问。单个资源池中的所有主机必须至少有一个共用的共享SR。SR是包含虚拟磁盘映像(VDI)的存储目标。SR命令提供用于创建、销毁、克隆、连接、查找它们包含的各个VDI及调整这些VDI大小的操作。存储库是一个永久性的磁盘上数据结构。对于使用基本块设备的SR类型,创建新SR的过程都包括清除指定存储目标上的所有现有数据。其他存储类型(如NFS、Netapp、Equallogic和StorageLinkSR)则会在与现有SR平行的存储阵列上创建一个新容器。用于管理存储库的CLI操作在“SR命令”一节中介绍。虚拟磁盘映像(VDI)虚拟磁盘映像是显示给VM的存储抽象。VDI是XenServer中的虚拟化存储的基本单元。与SR类似,VDI是独立于XenServer主机存在的永久性磁盘上对象。用于管理VDI的CLI操作在“VDI命令”一节中说明。数据在磁盘上的实际表现形式不同于SR类型,并通过针对每个SR的专用存储插件界面(称为SMAPI)来管理。物理块设备(PBD)物理块设备代表物理服务器和连接的SR之间的接口。PBD是允许将给定SR映射到XenServer主机的连接器对象。PBD存储一些设备配置字段,用于与给定的存储目标进行连接和交互。例如,NFS设备配置包括NFS服务器的IP地址和XenServer主机装载的关联路径。PBD对象管理给定SR与给定XenServer主机之间的运行时连接。与PBD相关的CLI操作在“PBD命令”一节中介绍。虚拟块设备(VBD)虚拟块设备是连接器对象(与上述的PBD类似),可用于在VDI和VM之间进行映射。除了作为VDI和VM之间的连接(也称为插入)机制外,VBD还可用于微调给定VDI的QoS(服务质量)、统计数据和可引导性等相关参数。与VBD相关的CLI操作在“VBD命令”一节中介绍。存储对象摘要下图概括说明了目前提供的存储对象之间的关系:26存储库和相关对象的图形概述虚拟磁盘数据格式一般来说,针对VDI的物理存储的映射包括以下三种:•文件系统上基于文件的VHD;VM映像作为精简置备的VHD格式文件在本地非共享文件系统(EXT类型SR)或共享NFS目标(NFS类型SR)上存储。•LUN上基于逻辑卷的VHD;默认的XenServer基于块设备的存储在磁盘上的逻辑卷管理器中插入光纤通道(LVMoHBA类型SR)、iSCSI(LVMoISCSI类型SR)或SAS(LVMoHBA类型Sr)上本地附加设备(LVM类型SR)或SAN附加LUN。VDI表示为卷管理器中的卷并以VHD格式保存,以支持快照和克隆上引用节点的精简置备。•每个VDI的LUN;LUN按SR类型(提供特定阵列的插件,Netapp、Equallogic或StorageLink类型SR)作为VDI直接映射到VM。因此,阵列存储抽象与环境(管理阵列级存储置备)的VDI存储抽象相匹配。基于VHD的VDI可以将VHD文件链接起来,从而允许两个VDI共享通用数据。如果克隆基于VHD的VM,生成的VM将共享克隆时的通用磁盘数据。每个VM将在VDI的单独写入时复制(CoW)版本中继续进行各自的更改。此功能允许从模板快速克隆基于VHD的VM,便于极快地置备和部署新VM。由XenServer中基于LVM和基于文件的SR类型使用的VHD格式使用稀疏置备。当VM将数据写入到磁盘时,映像文件将自动在大小为2MB的块中扩展。对于基于文件的VHD,VM映像文件仅在物理存储中占用所需的空间,这将带来极大的好处。通过基于LVM的VHD,基础逻辑卷容器必须与VDI的虚拟磁盘大小相同,但是当出现快照或克隆时,基础CoW实例磁盘上的闲置空间将被收回。两种行为之间的差异描述如下:•对于基于LVM的VHD,链中的差异磁盘节点(differencedisknode)所消耗的空间与写入磁盘的数据量相同,但叶节点(VDI克隆)则完全扩充至虚拟磁盘的大小。快照叶节点(VDI快照)在未使用时保持压缩状态,并且可以附加只读存储以保持压缩分配。附加读写存储的快照节点将在附加后完全扩大,在分离后压缩。•对于基于文件的VHD,所有节点所消耗的空间与写入的数据量相同,叶节点文件所占空间则随数据的实时写入而增长。如果为新VM分配100GB的VDI并且安装操作系统,VDI文件的物理大小仅是已写入到磁盘的操作系统数据加上一些小的元数据开销的大小。基于单个VHD模板克隆VM时,每个子VM会形成一个链,其中新更改将写入新VM,并且直接从父模板读取旧块。如果将新VM进一步转换为模板并克隆更多的VM,则生成的链将导致性能下降。XenServer支持的最大链27长度为30,但是如果没有充足的理由,一般不建议您接近此限制。如果存有疑问,您随时可以使用XenServer或vm-copy命令“复制”VM,这会将链长度重置回0。VHD链合并VHD映像支持链接,该过程可使一个或多个VDI之间共享的信息不发生重复。这会导致出现一种情况,即在克隆VM及其关联的VDI时会不断创建链接VDI的树。删除链中的一个VDI时,XenServer会合理化链中的其他VDI以删除不必要的VDI。此合并过程异步运行。回收的磁盘空间量和执行此过程所花费的时间取决于VDI的大小和共享数据量。对于SR来说,永远只有一个合并过程处于活动状态。此过程的线程在SR主节点主机上运行。如果有重要的VM在池的主服务器上运行,且IO由于此过程偶尔会出现缓慢情况,您可以采取措施来缓解这一现象:•将VM迁移到SR主节点以外的主机。•将磁盘IO优先级设置为较高的级别,并调整调度程序。有关详细信息,请参阅“虚拟磁盘QoS设置”一节。空间利用率始终根据SR的当前分配来报告空间利用率,这可能无法反映已分配的虚拟磁盘空间量。如果基于文件的VHD支持完全的精简置备,而基于LVM的VHD的基础卷将完全扩大以支持可写入叶节点的潜在增长,基于LVM的SR与基于文件的SR的空间报告也将有所差异。SR空间利用率报告将基于快照的数量,以及各快照之间写入到磁盘的差异数据量。基于LVM的空间利用率有所差别,具体取决于在XenServer中LVMSR是进行升级还是作为新SR进行创建。升级的LVMSR将保留一个完全扩充至虚拟磁盘大小的基本节点,任何后续快照或克隆操作将至少置备一个完全扩充的附加节点。与此相反,对于新SR,基本节点将缩小至仅包含VHD覆盖中所分配的数据。删除基于VHD的VDI时,其在磁盘上占用的空间将标记为删除。实际删除分配的数据可能需要花费一些时间,因为删除操作由一个合并过程处理,对于每个基于VHD的SR,此合并过程异步且独立运行。基于LUN的VDI将原始LUN映射为虚拟磁盘映像通常是可获得最高性能的存储方法。对于想要利用现有存储SAN基础结构(如Netapp、Equallogic或StorageLink可访问阵列)的管理员来说,可以通过其中一种阵列特定的适配器SR类型(Netapp、Equallogic或StorageLink)来直接利用阵列快照、克隆和精简置备功能。对于每个VDI表示形式,使用LUN将虚拟机存储操作直接映射到阵列API上。这包括即时激活数据路径,例如当启动VM或向另一个主机迁移VM时。托管NetAppLUN可以使用NetAppSR驱动程序类型进行访问,且承载在运行Ontap7.0版本或更高版本的NetworkAppliance设备上。使用XenServer主机管理框架动态分配LUN并将其映射到主机上。EqualLogic存储可以使用EqualLogicSR驱动程序类型访问,并且该存储托管在运行4.0或更高固件版本的EqualLogic存储阵列上。使用XenServer主机管理框架动态分配LUN并将其映射到主机上。有关StorageLink支持的阵列系统以及每种情况下各种功能的详细信息,请直接参阅StorageLink文档。存储配置本部分介绍了创建存储库类型并使其可用于XenServer主机。提供的示例关于使用CLI进行存储配置,这样可以提供最大的灵活性。有关使用NewStorageRepository(新建存储库)向导的详细信息,请参阅XenCenter帮助。创建存储库本部分介绍了如何创建不同类型的存储库(SR)并使其可用于XenServer主机。提供的示例涉及使用xeCLI创建SR。有关使用XenCenter通过NewStorageRepository(新建存储库)向导添加SR的详细信息,请参阅XenCenter帮助。28注意lvm和ext类型的本地SR只能使用xeCLI创建。创建后,所有SR类型可由XenCenter或xeCLI进行管理。使用CLI创建在XenServer主机上使用的新存储库包括两个基本步骤:1.探测SR类型以确定任何必需参数的值。2.创建SR以初始化SR对象及关联的PBD对象、插入PBD以及激活SR。根据创建的SR类型,这些步骤稍有差异。在所有示例中,如果成功,sr-create命令将返回创建的SR的UUID。如果不再使用SR,可以将它销毁以释放物理设备的空间,或忘记该SR以将其与某个XenServer主机分离而连接到另一个主机上。有关详细信息,请参阅“销毁或忘记SR”一节。注意为XenServer主机或池指定StorageLink配置时,请提供默认凭据,即用户名admin和密码storagelink,或提供安装StorageLinkGateway服务过程中指定的自定义凭据。与StorageLinkManager不同,XenCenter不会自动提供默认凭据。从XenServer5.0或更早版本升级LVM存储有关升级LVM存储以启用最新功能的信息,请参阅《XenServer安装指南》。在支持快照和快速克隆前,此前产品版本(XenServer5.0和更早版本)的本地、iSCSI上LVM和HBA上LVM存储类型都需要进行升级。警告在5.0版或更早版本中创建的SR的SR升级需要创建大小为4MB的元数据卷。请首先确保您的SR上至少有4MB的可用空间,然后再尝试升级存储。注意升级是一个单向操作,因此Citrix建议仅在您确定存储不再需要连接到运行旧版本软件的池时进行升级。LVM性能注意事项XenServer5.5和更新版本提供的快照和快速克隆功能(用于基于LVM的SR)具有固有的性能系统开销。如果想要获得最佳性能,XenServer支持创建raw格式以及默认VHD格式的VDI。原始VDI不支持XenServer快照功能。注意使用默认的WindowsVSS提供程序的不可传送快照适用于所有类型VDI。警告请勿尝试为连接了type=raw磁盘的VM制作快照。这可能会导致创