✅ 一、方案技术栈一览

技术栈名称 类型 在系统中的作用
Python 编程语言 编写核心控制逻辑、API 接口、配置生成、自动化脚本
libvirt (libvirt-python) 虚拟化管理接口 控制虚拟机的创建、启动、关机、XML定义、状态监控等
QEMU-KVM 虚拟化引擎 提供底层虚拟机执行环境(CPU、内存、设备模拟)
Open vSwitch (OVS) 网络虚拟化 实现虚拟交换机,支持 VLAN/VXLAN、流量隔离、带宽控制
cloud-init 虚拟机初始化 虚拟机内自动配置网络、主机名、用户、脚本(用于静态 IP 分配)
dnsmasq DHCP/DNS服务(可选) 为虚拟机自动分配 IP 地址,支持 MAC-IP 绑定(替代 cloud-init)
qemu-img 镜像工具 创建、转换、扩容虚拟机磁盘(qcow2/raw)
libvirt XML 模板 配置格式 定义 VM 的 CPU、内存、磁盘、网络、接口等资源
Flask/FastAPI(可选) Web 框架 实现 Web 控制界面 / API 接口(如启动/销毁虚拟机)
psutil / libvirt stats 状态监控 采集虚拟机 CPU、内存、IO、网络状态数据
systemd / Supervisor 后台进程管理 管理你的控制程序运行(如自动重启、日志)

✅ 二、各技术模块之间的协作关系

[Python 控制程序]
   │
   ├── libvirt-python → 控制 QEMU-KVM 启动虚拟机(用 XML 定义)
   │     └─ 使用 qemu-img 创建磁盘镜像
   │     └─ 使用 cloud-init 配置 VM 网络
   │     └─ 加载配置中绑定的 OVS 接口
   │
   ├── ovs-vsctl / ovs-ofctl(shell调用) → 管理 OVS 网络、带宽、VLAN
   │
   ├── psutil / libvirt stats → 获取 VM 状态
   │
   └── Flask/FastAPI(可选) → 提供 HTTP API 让前端或用户控制 VM


✅ 三、每个功能模块使用哪些技术

功能模块 使用技术
虚拟机创建 / 控制 Python + libvirt + qemu-kvm + libvirt XML
虚拟机硬盘管理 qemu-img + libvirt
虚拟机网络配置(OVS + 静态 IP) OVS + cloud-init + libvirt
网络带宽/VLAN OVS(ovs-vsctl 设置端口限速/VLAN tag)
IP分配 cloud-init(静态)或 dnsmasq(DHCP)
虚拟机状态监控 libvirt stats + psutil(采集资源占用)
接口控制 Flask/FastAPI 提供 Web/API 管理接口
自动部署与管理 systemd 或 Supervisor 管理 Python 服务运行

✅ 四、方案优势分析

特性 原因
高可控性 所有资源使用 XML 定义,可完全由 Python 程序生成和修改
自动化强 使用 cloud-init 配置网络,无需手动进入虚拟机
网络灵活性强 OVS 支持高级网络(VLAN/VXLAN/SDN)适用于复杂部署
易集成 提供 Web 接口或 API,适配平台、控制台、监控系统
安全隔离 每台虚拟机网络、磁盘、权限完全隔离,可按需授权

✅ 可扩展方向(后期)

功能 技术建议
分布式部署 使用 etcd 或数据库存储 VM 信息,结合 Ansible 或 SaltStack 同步
监控告警 对接 Prometheus + Grafana
SDN 支持 集成 OVN 或 OpenDaylight 控制器
自动调度 加入 libvirt 的 NUMA/CPU Pinning 功能
虚拟机模板 统一镜像与 cloud-init 配置实现“秒级启动”