虚拟资源管理
云主机管理
云主机调度策略
云主机调度策略可为云主机分配物理机资源编排策略,用于保障业务高性能和高可用。支持将云主机加入一个云主机调度组,通过为该云主机调度组绑定调度策略实现云主机调度。
功能原理
- 若绑定互斥云主机或聚集云主机策略,无需指定物理机调度组,云主机按照策略及其执行机制分配物理机。
- 若绑定云主机亲和物理机或云主机互斥物理机调度策略,需指定对应的物理机调度组,云主机按照策略及其执行机制分配物理机。
下文通过四个场景说明四类调度策略的工作原理:
- 强制机制下,云主机VM3遵循与组内其他云主机强制互斥原则:
- 若物理机Host3资源充足,可正常在Host3上启动并运行。
- 若物理机Host3资源不足,无法在Host3上启动。
- 优先机制下,云主机VM3遵循与组内其他云主机尽量互斥原则,优先在Host3上启动:
- 若物理机Host3资源充足,可正常在Host3上启动并运行。
- 若物理机Host3资源不足,VM3可尝试在其他资源充足的物理机上启动。在该场景下,VM3在Host2上启动并运行。

- 强制机制下,云主机VM3遵循与组内其他云主机强制聚集原则:
- 若物理机Host1资源充足,可正常在Host1上启动并运行。
- 若物理机Host1资源不足,无法在Host1上启动。
- 优先机制下,云主机VM3遵循与组内其他云主机尽量聚集原则,优先在Host1上启动:
- 若物理机Host1资源充足,可正常在Host1上启动并运行。
- 若物理机Host1资源不足,VM3可尝试在其他资源充足的物理机上启动。在该场景下,VM3在Host2上启动并运行。

- 强制机制下,云主机VM3遵循与物理机调度组A内的物理机强制互斥原则:
- 若物理机Host1资源充足,可正常在Host1上启动并运行。
- 若物理机Host1资源不足,无法在Host1上启动。
- 优先机制下,云主机VM3遵循与物理机调度组A内的物理机尽量互斥原则,优先在Host1上启动:
- 若物理机Host1资源充足,可正常在Host1上启动并运行。
- 若物理机Host1资源不足,VM3可尝试在其他资源充足的物理机上启动。在该场景下,VM3在Host2上启动并运行。

- 强制机制下,云主机VM6遵循与物理机调度组A内的物理机强制聚集原则:
- 若物理机Host2或Host3资源充足,可正常在Host2或Host3上启动并运行。
- 若物理机Host2和Host3资源不足,无法在Host2或Host3上启动。
- 优先机制下,云主机VM6遵循与物理机调度组A内的物理机尽量聚集原则,优先在Host2或Host3上启动:
- 若物理机Host2或Host3资源充足,可正常在Host2或Host3上启动并运行。
- 若物理机Host2和Host3资源不足,VM6可尝试在其他资源充足的物理机上启动。在该场景下,VM6在Host1上启动并运行。

云主机克隆
云平台提供三种云主机克隆方式以满足不同业务场景需求:链接克隆、全量克隆、快速全量克隆。
链接克隆
链接克隆的云主机启动速度快,仅占用少量存储空间。但是链接克隆的云主机共享使用源云主机的磁盘链,因为两者之间存在依赖关系。云平台提供的链接克隆不受限于源云主机的快照链长度,且支持各类主存储。
在执行链接克隆新云主机时,无需复制源云主机所有数据,而是基于源云主机快照链创建一个新磁盘文件,并做关联作为新云主机实例。新云主机实例共享源云主机快照链,且该部分共享快照链只读,因此通过链接克隆创建云主机过程中并无实际数据拷贝,从而实现云主机快速启动。
基于源云主机快照链创建的新磁盘文件具有写时重定向特性,即刚创建时仅占用极少存储空间。后续当云主机实例尝试修改云主机内容时,会把修改数据写入新磁盘文件中,不影响源快照链数据,从而确保克隆云主机与源云主机的相对独立性。
如希望将克隆云主机与源云主机从快照链上完全独立开来,则需使用云平台提供的扁平合并功能。当执行批量链接克隆时,由于多个云主机实例共享相同的只读快照链,链接克隆大幅减少存储空间需求。
云主机链接克隆技术提供一种有效管理云主机方式,尤其在创建多个相似云主机实例时(如测试集群或桌面云VDI场景),通过共享的快照链,链接克隆显著节省存储成本,并提高云主机创建和管理效率。

全量克隆
全量克隆是针对云主机的另一种克隆方法。与链接克隆不同,它不与源云主机共享数据,而将源云主机做成镜像文件后创建新的云主机实例。该源云主机镜像是一个完整的镜像文件,包含云主机所需所有文件和配置,并保存在镜像服务器中,随后将镜像文件推送到主存储作为克隆云主机的镜像缓存,以此来克隆出全新云主机。全量克隆的云主机不受主存储限制,克隆出的云主机可指定与源云主机不同的主存储来启动。
全量克隆创建的云主机是完全隔离且独立的,与源云主机没有依赖关系,云主机性能完全不受影响。全量克隆通常需要更多存储空间,但在批量全量克隆多云主机时,云平台已做存储优化,新云主机镜像缓存仅在主存储上存储一份,从而避免消耗更多主存储资源,也加快了批量克隆的云主机启动速度。

快速全量克隆
快速全量克隆是对链接克隆和全量克隆的一种整合。它既能像链接克隆快速启动克隆出的云主机,又能像全量克隆保持数据独立,不与源云主机共享快照链。
执行快速全量克隆时,在克隆初始利用链接克隆技术创建出依赖源云主机的新云主机,以此来满足快速云主机启动。随即后台会启动一个任务做快照合并,最终将克隆云主机的数据完全独立出来,不依赖于源云主机。因此,通过快速全量克隆的云主机具有启动速度快、数据最终独立的特点,且克隆完成后云主机性能不受影响。

云主机热迁移
云主机热迁移,指在不中断业务的前提下,将运行中的云主机从一台物理机迁移至另一台物理机。云主机热迁移全程用户无感知,业务不中断。该技术广泛应用于云计算和数据中心管理,以实现资源优化、负载均衡、维护升级以及灾难恢复等目的。云平台支持两种云主机热迁移:同存储不同物理机之间的热迁移、不同存储不同物理机之间的热迁移。
要理解云主机热迁移原理,重点关注云主机的CPU、内存、磁盘、网络等核心资源的传输原理。
同存储不同物理机之间的热迁移
两台物理机使用同一存储,云主机从其中一台物理机热迁移至另一台物理机。

在热迁移过程中,源云主机的各核心资源是如何同步至目标云主机的呢?
首先是网络,云主机的网络请求基本上均为无状态,因此只需将源云主机的网络配置同步至目标云主机即可。其次是磁盘,源云主机和目标云主机均存放于共享存储中,而源物理机和目标物理机对共享存储的视野一致,因此磁盘无迁移需求。
真正重要的是CPU和内存的热迁移。在热迁移过程中,源云主机仍需运行,目标云主机则尚未启动,CPU会持续产生新数据添加至内存中。我们将CPU产生新数据修改的内存页称为脏页。热迁移模块先将源云主机的内存数据传输至目标云主机;接下来的每一轮均会发送上一轮拷贝过程中产生的脏页内存数据,而不用再次发送源云主机中的全部内存数据;如此循环往复,直至源云主机中的脏数据量低于某一极小阈值,以致于传输该部分数据的耗时极短(通常是毫秒级别),则进入停机拷贝阶段。在停机拷贝阶段,源云主机被挂起,不再产生新的脏数据。热迁移模块将最后一轮中的脏数据传输至目标云主机,并将CPU状态和外设状态一并迁移至目标云主机,然后启动目标云主机。至此,目标云主机完成整个源云主机状态的交接,完全承载源云主机的业务。由于停机拷贝的时间极短,因此可实现用户无感知,业务不中断。

不同存储不同物理机之间的热迁移
两台物理机使用不同存储,云主机从其中一台物理机热迁移至另一台物理机。

在热迁移过程中,由于源物理机与目标物理机在不同存储上,因此磁盘有迁移需求。磁盘承接的数据可分为两类:已落盘的数据和未落盘的数据。我们将未落盘的数据(即内存中的数据)称为脏数据。磁盘迁移首先在对端存储上创建一个相同的目标磁盘,然后将目标磁盘和源磁盘设置镜像,Qemu接收到指定的源磁盘和目标磁盘设备,并创建一个镜像任务(Mirror Job),该任务在后台持续运行,直至完成所有数据复制。
全量同步(Full Sync)。镜像任务启动后,首先会进行一次全量数据同步,Qemu按顺序遍历源磁盘的所有数据块,逐块读取并写入目标磁盘。在此期间,若云主机产生新的写操作,Qemu会将这些写入暂存,并在初始同步完成后立即将增量数据同步至目标磁盘。
增量同步(Incremental Sync)。在全量数据同步过程中,云主机仍可能对源磁盘进行写入。为确保源磁盘与目标磁盘之间的数据一致性,Qemu会拦截源磁盘的写操作,并将变动的数据块增量复制至目标磁盘。
写操作拦截。Qemu的块设备层(Block Layer)负责拦截磁盘的I/O请求,并将写操作日志化。写操作会被暂存,并记录写操作的时间戳、写入的块偏移等元信息,以确保增量复制正确进行。Qemu将新的写入操作通过增量同步方式同步至目标磁盘,以确保目标磁盘始终与源磁盘保持一致。
镜像完成与切换。镜像任务结束时,Qemu会进行最后一次数据同步,将剩余未同步的数据块复制至目标磁盘,然后用户可选择将云主机的I/O从源磁盘切换至目标磁盘。至此,源磁盘中的数据完全同步至目标磁盘,待后续内存和CPU热迁移完成即可完成整个云主机热迁移。

裸金属管理
- 管理网络:用于管理云平台相关硬件资源。
- 扁平网络:用于裸金属主机的业务网络,对外提供应用服务。
- IPMI网络:用于管理节点对裸金属设备与裸金属主机远程开关机、重启、获取硬件信息等操作。
- 部署网络:用于PXE服务器通过DHCP服务下发IP地址,以及通过TFTP服务传输镜像。

裸金属管理核心:硬件信息获取、裸金属设备无人值守部署。
- 管理节点通过PXE服务器指定裸金属设备通过PXE启动。
- PXE服务器封装DHCP、TFTP和镜像存储服务。裸金属设备PXE启动后,通过DHCP获得IP地址,随后从TFTP服务器下载pxelinux.0和引导文件,并将内核加载至内存中执行,引导进LiveCD系统。
- 在LiveCD系统中执行检测脚本,将裸金属设备的硬件信息回传至管理节点。
- 根据回传的硬件信息,对裸金属设备设置预配置模板,包括:分区信息、设置网卡Bond、IP地址等。
- 选择一个待安装的操作系统ISO,即可部署裸金属主机。
- 重启裸金属设备至PXE启动,PXE服务器会预先下载待安装操作系统ISO,裸金属设备根据预设好的配置模板实行无人值守部署,部署完毕后会自动根据预配置模板配置网卡等信息,至此裸金属主机配置完毕。
- 为更好地运维裸金属主机,PXE服务器支持下发裸金属监控服务,实现裸金属主机内部数据的实时监控,包括:CPU、内存、磁盘容量、磁盘IO、网卡等信息。
弹性裸金属管理
弹性裸金属管理可为应用提供专属物理服务器,保障核心应用的高性能和稳定性,并结合云平台资源的弹性优势,实现灵活申请,按需使用。弹性裸金属管理融合物理机和云主机各自优势,业务应用不仅可使用物理机强劲稳定的计算能力,而且可使用云平台内主存储、三层网络等资源。避免虚拟化开销的同时,突破云资源与物理资源的边界,提高云资源的可用性,特别适合部署传统的非虚拟化场景应用。

弹性裸金属框架
弹性裸金属支持两种集群类型:网关代理集群、DPU加速集群。两种集群的架构各有不同。
- 存储网络:与主存储通信使用的网络。
- 管理网络:云平台管理节点通过该网络对节点进行管控,该网络与IPMI网络需互通。
- IPMI网络:裸金属节点通过BMC接口连接到IPMI网络,同时,管理节点也连接IPMI网络,实现对裸金属节点的远程电源控制。
- 管理节点:云平台管理节点。
- 弹性裸金属集群:为裸金属节点提供单独的集群管理,分为网关代理集群和DPU加速集群两种类型。
- 弹性裸金属实例:性能媲美物理服务器的云实例,结合云平台资源的弹性优势,实现灵活申请,按需使用。
- 弹性裸金属规格:弹性裸金属实例涉及的CPU、内存、CPU架构、CPU型号等规格定义。
- 裸金属节点:用于创建弹性裸金属实例,通过BMC接口以及IPMI配置进行唯一识别。
- 主存储:用于存储裸金属实例的磁盘文件(包括:系统盘、数据盘、系统盘快照、数据盘快照、镜像缓存等)的存储服务器。
- 部署网络:创建弹性裸金属实例时,用于PXE流程及下载镜像的专属网络。
- 网关节点:云平台和弹性裸金属实例的流量转发节点,提供iPXE服务、DHCP服务等,通过网关节点为弹性裸金属实例下发配置。通过网关节点接管主存储,并为弹性裸金属实例分配主存储。一个网关节点只能加载到一个网关代理集群。
- DPU设备:
- 安装于裸金属节点上的PCIe设备,通过内置独立处理器SoC与管理节点通信,实现裸金属节点操作系统部署和生命周期管理(不含电源管理)。
- 通过SPDK协议直连主存储,为裸金属节点提供系统盘存储空间。
- 通过OVS-DPDK协议实现业务网络配置下发。

获取硬件信息
为获取裸金属节点硬件信息,在网关代理集群中,管理节点会使用IPMI来引导裸金属节点从网络启动。裸金属节点启动过程中,通过PXE加载位于网关节点上的一个LiveCD系统,并通过系统中预置的脚本来获取裸金属节点硬件信息,同时把硬件信息返回给管理节点。如图 1所示:

云盘启动与控制台
裸金属节点的云盘启动
裸金属节点支持使用本地磁盘或云盘作为启动源。在使用本地磁盘启动场景下,支持使用本地系统纳管或使用平台镜像部署本地系统的方式。在使用云盘启动场景下,云盘的存储资源主要由Shared Block主存储或Ceph主存储提供。因此可兼具云平台资源弹性以及本地磁盘稳定I/O与高吞吐优势。
- 当创建弹性裸金属实例选择镜像后,镜像会被下发到云平台主存储作为镜像缓存。
- 基于镜像缓存创建出弹性裸金属实例对应的云盘。
- 在网关节点上,云盘会被映射成iSCSI Target并通过部署网络暴露给裸金属节点,作为弹性裸金属实例的根盘或数据盘。
- 裸金属节点通过PXE启动,加载网关节点上暴露出来的根盘和数据盘从而实现云盘启动。
弹性裸金属实例的控制台
要实现在云平台上打开弹性裸金属实例的控制台以及实时监控,需在弹性裸金属实例系统中安装相应的裸金属代理服务程序。裸金属网关节点上的Nginx代理服务将来自管理节点的请求转发至裸金属代理服务程序,再将来自裸金属代理服务程序的反馈转发回管理节点,以此来实现弹性裸金属实例的控制台功能。
