存储
本节介绍物理存储硬件如何映射到虚拟机(VM),以及管理API用于执行存储相关任务的软件对象。关于每种支持的存储类型的详细章节包括以下信息:
- 使用CLI为VM创建存储的过程,包括特定于类型的设备配置选项
- 为备份目的生成快照
- 管理存储的最佳做法
- 虚拟磁盘QoS(服务质量)设置
存储存储库(SRs)
存储库(SR)是存储虚拟机(VM)虚拟磁盘映像(VDI)的特定存储目标。VDI是表示虚拟硬盘驱动器(HDD)的存储抽象。
SRs具有灵活性,内置支持以下驱动器:
本地连接:
- 世达
- SCSI
- SAS
- NVMe
本地物理存储硬件可以是硬盘驱动器(HDD)或固态驱动器(SSD)。
远程连接:
- iSCSI
- NFS
- SAS
- SMB(仅限版本3)
- 光纤通道
注:
不支持通过光纤通道的NVMe和通过TCP的NVMe。
SR和VDI抽象允许在支持高级存储功能的存储目标上公开这些功能。例如,高级功能,如精简自动配置、VDI快照和快速克隆。对于不直接支持高级操作的存储子系统,提供了实现这些功能的软件堆栈。此软件堆栈基于Microsoft的虚拟硬盘(VHD)规范。
存储库是一种持久的磁盘数据结构。对于使用底层块设备的SR类型,创建SR的过程涉及擦除指定存储目标上的任何现有数据。其他存储类型(如NFS)在存储阵列上与现有SRs并行创建一个容器。
每个Citrix Hypervisor服务器可以同时使用多个SR和不同的SR类型。这些SRs可以在主机之间共享,也可以专用于特定主机。共享存储在定义的资源池中的多个主机之间进行池化。共享SR必须可由池中的每个主机通过网络访问。单个资源池中的所有服务器必须至少有一个公共共享SR。共享存储不能在多个池之间共享。
SR命令提供创建、销毁、调整大小、克隆、连接和发现其包含的单个VDI的操作。中介绍了管理存储库的CLI操作高级指挥官.
警告:
Citrix虚拟机监控程序不支持任何SR类型的LUN外部SAN级别的快照。
虚拟磁盘映像(VDI)
虚拟磁盘映像(VDI)是表示虚拟硬盘驱动器(HDD)的存储抽象。VDI是Citrix虚拟机监控程序中虚拟化存储的基本单元。VDI是独立于Citrix虚拟机监控程序服务器存在的持久性磁盘对象。中介绍了管理VDI的CLI操作VDI命令. 数据的磁盘表示形式因SR类型而异。每个SR都有一个单独的存储插件接口,称为SM API,用于管理数据。
物理块设备(PBD)
物理块设备表示物理服务器和连接的SR之间的接口。PBD是允许将给定SR映射到主机的连接器对象。PBD存储用于连接到给定存储目标并与之交互的设备配置字段。例如,NFS设备配置包括NFS服务器的IP地址和Citrix Hypervisor服务器装载的关联路径。PBD对象管理给定SR到给定Citrix虚拟机监控程序服务器的运行时附件。中介绍了与PBD相关的CLI操作PBD命令.
虚拟块设备(VBD)
虚拟块设备是允许VDI和VM之间映射的连接器对象(类似于上述PBD)。除了提供将VDI连接到VM的机制外,VBD还允许微调有关给定VDI的QoS(服务质量)和统计信息的参数,以及该VDI是否可以启动。中介绍了与VBD相关的CLI操作VBD命令.
存储对象摘要
下图总结了目前显示的存储对象之间的关系:
虚拟磁盘数据格式
通常,物理存储到VDI的映射有以下几种类型:
LUN上基于逻辑卷的VHD:默认的基于Citrix虚拟机监控程序块的存储在磁盘上插入逻辑卷管理器。此磁盘是通过光纤通道、iSCSI或SAS连接的本地连接设备(LVM)或SAN连接LUN。VDI在卷管理器中表示为卷,并以VHD格式存储,以允许在快照和克隆上精简配置引用节点。
LUN上基于文件的QCOW2:VM映像作为精简配置的QCOW2格式文件存储在通过iSCSI软件启动器或硬件HBA连接的LUN上的GFS2共享磁盘文件系统中。
文件系统上基于文件的VHD:VM映像作为精简配置的VHD格式文件存储在本地非共享文件系统(EXT3/EXT4类型SR)、共享NFS目标(NFS类型SR)或远程SMB目标(SMB类型SR)上。
VDI类型
对于GFS2 SRs,创建QCOW2 VDI。
对于其他SR类型,将创建VHD格式的VDI。您可以选择在创建VDI时使用raw。此选项只能通过使用xe CLI指定。
注:
如果在基于LVM的SR或每个VDI SR的HBA/LUN上创建原始VDI,则可能会允许所属VM访问属于任何VM的先前删除的VDI(任何格式)中的数据。我们建议您在使用此选项之前考虑安全性要求。
NFS、EXT或SMB SR上的原始VDI不允许访问以前删除的属于任何VM的VDI的数据。
检查是否使用创建了VDI类型=原始
,检查其sm配置
地图这个高级参数列表
和vdi参数列表
xe命令可分别用于此目的。
使用xe CLI创建原始虚拟磁盘
根据要放置虚拟磁盘的SR的UUID,运行以下命令创建VDI:
xe vdi create sr uuid=sr uuid type=user virtual size=virtual size\name label=vdi name sm config:type=raw<--需要复制-->
将新虚拟磁盘连接到VM。使用VM中的磁盘工具进行分区和格式化,或者使用新磁盘。你可以使用
vbd创建
命令创建VBD以将虚拟磁盘映射到VM。
在VDI格式之间转换
无法在原始格式和VHD格式之间进行直接转换。相反,您可以创建VDI(如上所述的原始VDI或VHD),然后将数据从现有卷复制到VDI中。使用xe CLI确保新VDI的虚拟大小至少与要从中复制的VDI一样大。您可以通过检查其虚拟大小
字段,例如使用vdi参数列表
命令然后,您可以将这个新的VDI连接到VM,并在VM中使用首选工具对数据进行直接块拷贝。例如,Windows或dd
Linux中的命令。如果新卷是VHD卷,请使用可避免将空扇区写入磁盘的工具。此操作可以确保在底层存储库中以最佳方式使用空间。基于文件的复制方法可能更合适。
基于VHD和QCOW2的VDI
可以使用VHD和QCOW2映像锁链,允许两个VDI共享公共数据。在克隆支持VHD或QCOW2的VM的情况下,生成的VM在克隆时共享磁盘上的公共数据。每个VM在VDI的一个独立的写时拷贝版本中进行自己的更改。此功能允许从模板快速克隆此类虚拟机,从而促进新虚拟机的快速供应和部署。
随着时间的推移,VM及其关联VDI被克隆,这将创建链接VDI的树。当链中的一个VDI被删除时,Citrix Hypervisor会使链中的其他VDI合理化,以删除不必要的VDI。这凝聚进程异步运行。回收的磁盘空间量和执行该过程所需的时间取决于VDI的大小和共享数据量。
VHD和QCOW2格式都支持精简自动配置. 当VM将数据写入磁盘时,映像文件会自动扩展为细粒度块。对于基于文件的VHD和基于GFS2的QCOW2,这种方法具有相当大的好处,即VM映像文件只占用所需的物理存储空间。对于基于LVM的VHD,底层逻辑卷容器的大小必须与VDI的虚拟大小相同。但是,在发生快照或克隆时,会回收写实例磁盘上基础副本上未使用的空间。这两种行为之间的差异可以用以下方式描述:
对于基于LVM的VHD图像,链中的不同磁盘节点消耗的数据量仅与写入磁盘的数据量相同。但是,叶节点(VDI克隆)仍然完全膨胀到磁盘的虚拟大小。快照叶节点(VDI快照)在不使用时保持放气状态,并且可以以只读方式连接以保留放气后的分配。附加读写的快照节点在附加时完全充气,在分离时放气。
对于基于文件的VHDs和基于GFS2的QCOW2图像,所有节点消耗的数据量仅与写入的数据量相同。叶节点文件会随着数据的写入而增长,以容纳数据。如果为VM分配了100 GB VDI并安装了操作系统,VDI文件的物理大小仅为磁盘上操作系统数据的大小,外加一些较小的元数据开销。
基于单个VHD或QCOW2模板克隆虚拟机时,每个子虚拟机形成一个链,在该链中新的更改将写入新虚拟机。旧块直接从父模板读取。如果将新VM转换为另一个模板并克隆了更多VM,则生成的链将导致性能下降。Citrix虚拟机监控程序支持最大链长30。没有充分的理由,不要接近这个极限。如果有疑问,请使用XenCenter“复制”VM或使用虚拟机副本
命令,将链长度重置回0。
关于合并的VHD特定注释
SR只有一个合并进程处于活动状态。此进程线程在SR主主机上运行。
如果池的主服务器上运行着关键VM,则可以采取以下步骤来缓解偶尔出现的缓慢I/O:
将VM迁移到SR主机以外的主机
将磁盘I/O优先级设置为更高级别,并调整计划程序。有关详细信息,请参阅虚拟磁盘QoS设置.