KVM+QEMU 批量管理 Linux 虚拟机需脚本化模板化,依托 libvirt 统一调度;使用 cloud-init 定制标准化镜像,通过 seed.iso 注入配置;用 virsh+shell 批量创建、集中管控与轻量监控。

用 KVM+QEMU 批量管理 Linux虚拟机 ,核心是把重复操作脚本化、模板化,再配合 libvirt 工具 链统一调度。重点不在单台虚拟机怎么装,而在如何让 10 台、100 台按同一标准快速就绪、一致运行、集中监控。
标准化镜像与云初始化(cloud-init)
手动装系统无法批量,必须用预配置好的基础镜像。推荐基于官方 cloud image(如 Ubuntu Server Cloud Image 或 CentOS Stream Cloud)启动,通过 cloud-init 自动注入主机名、SSH 密钥、网络配置、用户密码和初始化脚本。
- 下载 qcow2 格式的 cloud image,用 qemu-img convert -O qcow2 确保格式兼容
- 用 cloud-localds 生成 seed.iso,打包 meta-data(主机名、网络)和 user-data(shell 脚本、apt 源替换、服务启用等)
- 启动时通过 -cdrom seed.iso 挂载,libvirt XML 中需添加
并设为只读
批量创建:virsh + shell 脚本驱动
不用图形界面,全部走命令行。写一个参数化脚本,循环调用 virt-install 或直接定义 XML 后用virsh define + virsh start。
- 用 virt-install –import 跳过安装过程,直接基于 qcow2 镜像启动
- 内存、vCPU、磁盘路径、网卡模型(建议virtio)、桥接网络(如br0)全部通过变量传入
- 示例片段:virt-install –name vm01 –ram 2048 –vcpus 2 –disk path=/var/lib/libvirt/images/vm01.qcow2,format=qcow2,bus=virtio –cdrom /tmp/seed01.iso –network bridge=br0,model=virtio –import –noautoconsole
集中配置与状态巡检
创建完不是终点,要能统一查状态、批量关机、动态调资源、导出配置做审计。
- 用 virsh list –all 看全量,配合 awk 提取名称后循环执行 virsh dominfo 或virsh domstate
- 修改配置不重启生效:如热添加内存需先 virsh setmem vm01 4096 –live,再virsh setmaxmem 同步上限
- 导出 XML 备份:virsh dumpxml vm01 > /backup/vm01.xml,后续可用 diff 比对配置漂移
轻量监控与日志聚合
不依赖复杂平台,用已有工具搭最小可观测性:宿主机上收集 guest 内核日志、SSH 登录记录、磁盘使用率。