关于 virtualization
面向基础设施运维人员的虚拟机创建、配置与管理技能,适用于 Proxmox、libvirt/KVM、XCP-ng 和 VMware 等平台,覆盖存储、设备直通、集群与恢复。
主要功能
- 01虚拟机创建与配置
- 02Terraform 和 Packer 部署
- 03存储与性能指导
- 04GPU 和 PCI 直通
- 05集群、迁移与备份
适用场景
- 01部署 Proxmox 虚拟机
- 02使用 cloud-init 构建虚拟机模板
- 03规划 GPU 直通
- 04测试迁移与恢复流程
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ iuliandita/ skills --skill virtualization安装后在 Claude Code 中输入/virtualization确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/agent-hygiene.mdgotchas.mdimage-building.mdlibvirt-qemu-kvm.mdoutput-contract.mdproxmox.md详细介绍
虚拟化:虚拟机监控程序、虚拟机和基础设施
在各类虚拟机监控程序上创建、配置和管理虚拟机——从单节点 Proxmox 部署,到支持高可用(HA)、实时迁移和 GPU 直通的多节点集群。目标是打造可用于生产环境的虚拟机基础设施,正确配置存储、内存和 CPU,避免凌晨 3 点出问题。
目标版本(2026 年 10 月):
| 工具 | 版本 | 发布日期 | 备注 |
|---|---|---|---|
| Proxmox VE | 9.2 | 2026 年 5 月 | 当前生产版本线;查看从 9.1 升级的说明 |
| Proxmox Backup Server | 4.2 | 2026 年 4 月 | 去重、增量备份、修剪策略 |
| bpg/proxmox (Terraform) | 0.115.0 | 2026 年 10 月 | 主要的 Proxmox IaC 提供程序 |
| QEMU | 11.1.2 | 2026 年 9 月 | 稳定的 11.1 维护版本 |
| libvirt | 12.8.0 | 2026 年 10 月 | 虚拟机监控程序抽象层 |
| XCP-ng | 8.3 LTS | 2024 年 10 月 | 基于 Xen,自 2025 年 6 月起为 LTS,2028 年 11 月 EOL |
| VMware ESXi | 8.0 U3k (25595708) | 2026 年 7 月 | 8.0 U3 版本线的安全基准(构建号未经 2026 年 10 月核实);请检查设备版本线 |
| VirtualBox | 7.2.20 | 2026 年 9 月 | 当前 7.2 维护版本 |
| Packer | 1.16.1 | 2026 年 9 月 | 镜像构建工具,支持多平台 |
| cloud-init | 26.2 | 2026 年 7 月 | 实例初始化标准 |
安全复核(2026-09-10):VMSA-2026-0006 涉及严重漏洞 CVE-2026-47876(ESX VMXNET3 虚拟机逃逸,CVSS 9.3)。8.0 版本的修复构建为 ESXi80U3k-25595708 或 ESXi80U2f-25626445(构建号未经 2026 年 10 月核实:Broadcom 公告无法获取);请选择对应的更新版本线。 该公告还涉及 vCenter 严重漏洞 CVE-2026-59309/CVE-2026-59310; 请根据其响应矩阵单独修补 vCenter。ESX/vCenter 7.0 应遵循 Broadcom 扩展支持指南,而不要假定 8.0 补丁适用。
适用场景
- 在 Proxmox、libvirt/KVM、XCP-ng 或 VMware 上创建或配置虚拟机
- 使用 Terraform(bpg/proxmox 提供程序)配置 Proxmox 虚拟机
- 使用 Packer 和 cloud-init 构建虚拟机模板
- 为计算或显示 GPU 配置 PCI/GPU 直通
- 管理存储后端(LVM-thin、ZFS、Ceph、NFS)
- 设置 Proxmox 集群、高可用和实时迁移
- 排查虚拟机性能问题(磁盘 I/O、内存、CPU)
- 规划备份策略(Proxmox Backup Server、快照)
- 调优磁盘性能(virtio-scsi、iothread、discard/fstrim)
- 内存管理(气球驱动、NUMA 拓扑、大页)
不适用场景
- Kubernetes 清单、Helm chart、容器编排(使用 kubernetes)
- 通用 Terraform/OpenTofu HCL 模式、状态、模块(使用 terraform)
- 与虚拟机监控程序无关的网络配置:DNS、VPN、反向代理(使用 networking)
- Ansible playbook 和配置管理(使用 ansible)
- Docker/容器镜像优化(使用 docker)
- OPNsense/pfSense 防火墙管理(使用 opnsense-pfsense)
- Synology DSM 管理(使用 synology-dsm)
- NixOS 配置和镜像生成(使用 nixos)
AI 自检
AI 工具总是会生成相同的 VM 配置错误。返回任何生成的 VM 配置、Terraform HCL 或 Packer 模板之前,请根据此列表进行检查:
- 不要硬编码 IP、密码或 SSH 密钥——使用变量或通过 cloud-init 注入
- 磁盘接口使用 virtio(scsi0 搭配 virtio-scsi 控制器),而非 IDE,除非是旧版 OS
- 仅当控制器为
virtio-scsi-single时,才在 SCSI 磁盘上设置iothread = true - 后端存储为 SSD 时,启用
ssd = true仿真(可启用来宾 TRIM) - 对精简置备存储,在 QEMU 磁盘配置中设置
discard = on(允许 fstrim 直通) - 除非来宾系统加载了
virtio_balloon驱动(例如精简版 Alpine 构建、部分 BSD),否则禁用内存气球;将memory:调高至当前运行上限以上属于 DIMM 热插拔,而非气球调节,并且需要hotplug: memory加 NUMA,或完全停止后再启动 - 在 bpg/proxmox Terraform 中,在
memory块内通过floating = 0禁用气球;将原生 Proxmox 的balloon: 0语法单独处理 - 生产环境的 CPU 类型设为
host(完整传递 CPU 特性),而非kvm64/qemu64 - 为多插槽或大内存 VM 启用 NUMA
- 启用 QEMU 来宾代理(cloud-init 会安装它,但仍需确认)
- 指定 cloud-init 接口(bpg/proxmox 在值为 null 时默认为 ide2)
- Terraform 生命周期:在 VM 上设置
prevent_destroy,在node_name上设置ignore_changes;仅当磁盘在主机上扩容时才忽略disk - 磁盘大小只能由一方管理:通过 bpg/proxmox 中的
disk.size扩容(当disk位于hotplug中时可在线扩容),或通过qm resize扩容并忽略disk,不可同时使用两种方式 - PCI 直通:标准直通时设置
pcie = false;除非是显示用 GPU,否则设置xvga = false - PCI 直通:需要
pcie = true时,机器类型设为q35 - GPU 直通:AMD GPU 容易出现重置故障(可能需要 vendor-reset 内核模块或
pcie_port_pm=off);NVIDIA 通常可正常重置,但在生产环境使用前,请根据具体显卡型号进行验证 - BIOS 类型与使用场景匹配:默认使用
seabios;UEFI/Secure Boot/Windows 11 使用ovmf - 配置备份保留策略(避免无限保留快照而耗尽存储)
- 网络设备使用
virtio型号,而非e1000或rtl8139 - 为精简置备存储在来宾系统中启用
fstrim.timer(完成 discard 链路) - 明确设置 SCSI 控制器(使用单磁盘 I/O 线程时设为
virtio-scsi-single;禁用线程时仅使用virtio-scsi-pci) - 机器类型应符合固件需求:PCIe 直通以及 OVMF Secure Boot/Windows 11(需要基于 SMM 的固件)使用
q35;i440fx可搭配 seabios 或 ovmf 启动,但 Proxmox 随后会使用不带 SMM 的 OVMF 构建(不强制执行 Secure Boot)。 - VGA 类型应符合使用场景:无头云镜像使用
serial0,图形界面 VM 使用virtio,用于 PCI 直通的显示 GPU 则省略(x-vga=1会取代虚拟显示设备) - 已检查虚拟机监控程序/版本:Proxmox、QEMU/KVM、libvirt、XCP-ng、vSphere 和 cloud-init 相关建议均适用于目标平台
- 已控制存储风险:磁盘格式、快照、直通和迁移命令都能保留数据并支持回滚
- 已遵循跨领域 Agent 卫生规范——参见
references/agent-hygiene.md
最佳实践
- 在升级来宾代理、磁盘、启动配置、直通或虚拟机监控程序之前创建快照,但不要将快照视为备份。
- 确保主机、来宾系统和存储的备份均可独立恢复。
- 记录 PCI/GPU 直通绑定,避免内核更新导致主机无法使用。
恢复演练
将具有代表性的来宾系统恢复到隔离网络中,避免与生产环境的 IP 或身份重复。验证启动、应用程序数据、依赖服务和加密密钥的可用性;根据 RTO/RPO 衡量恢复时间和数据丢失情况。记录所选备份、检查项和清理步骤。备份作业或快照成功并不能证明数据可恢复。
工作流
修改现有 VM 或主机时,复制此检查清单并跟踪进度:
- [ ] Step 1: Task identified and matching reference read (plus `references/gotchas.md`)
- [ ] Step 2: Hypervisor, guest OS, storage, and backup state recorded
- [ ] Step 3: Change applied on a non-critical VM first
- [ ] Step 4: Validation passed (fix and return to Step 3 on any failure)
第 1 步:确定任务
| 任务 | 从以下内容开始 | 参考资料 |
|---|---|---|
| 创建 Proxmox 虚拟机 | CLI(qm)或 API(pvesh)、cloud-init | references/proxmox.md |
| Terraform 配置 | bpg/proxmox provider、生命周期规则 | references/proxmox.md(Terraform 部分) |
| 构建镜像 | Packer + cloud-init 模板 | references/image-building.md |
| libvirt/KVM 管理 | virsh、XML 域定义 | references/libvirt-qemu-kvm.md(第 8 节:快速入门) |
| GPU/PCI 直通 | IOMMU 组、vfio-pci | references/proxmox.md(第 7 节,含 Windows 11 + NVIDIA 快速路径) |
| 性能调优 | 磁盘、内存、CPU 配置 | 本文件 + 参考资料 |
| 迁移到 Proxmox | 从 VMware、XCP-ng 或裸机迁移 | references/proxmox.md |
第 2 步:收集需求
创建或修改虚拟机前:
- 虚拟机监控程序和版本 - Proxmox VE 9.x?libvirt?从 VMware 迁移?
- 客户机操作系统 - Linux 发行版、Windows、BSD?(会影响 virtio 驱动、内存气球、Agent)
- CPU - 核心数、类型(host 与模拟)、是否需要绑定、NUMA 拓扑
- 内存 - 专用内存量、内存气球(通常不启用)、数据库是否需要大页
- 存储 - 后端(LVM-thin、ZFS、Ceph、NFS)、磁盘大小、格式(raw 或 qcow2)
- 网络 - 网桥、VLAN 标签、virtio、防火墙
- 直通 - GPU/PCI 设备、USB、串行端口
- 配置方式 - 手动、Terraform、Packer 模板 + cloud-init
- HA 需求 - 是否集群部署?是否需要实时迁移?是否需要隔离?
- 备份策略 - PBS、快照、vzdump、频率
第 3 步:构建
遵循特定领域的参考文件。关键原则:
- 使用 cloud-init 进行配置。 创建虚拟机后不要手动配置。通过 cloud-init 注入 SSH 密钥、网络配置、软件包和用户帐户。
- 全面使用 virtio。 磁盘(virtio-scsi)、网络(virtio-net)、显示(无头环境使用 virtio-gpu)。IDE 和 e1000 仅用于兼容旧版操作系统。
- 将 CPU 类型固定为
host。 模拟 CPU 类型(kvm64、qemu64)会隐藏客户机所需的功能 (AES-NI、AVX、SSE4)。除非需要在异构硬件间实时迁移,否则使用host。 - 更改磁盘配置后通过关机并启动进行测试,不要重启。 使用
qm shutdown正常关机, 确认qm status显示已停止,然后启动全新的 QEMU 进程。
第 4 步:验证
| 验证项 | 方法 |
|---|---|
| 虚拟机已启动且 Agent 有响应 | qm agent <vmid> ping(Proxmox) |
| cloud-init 已完成 | 在客户机中运行 cloud-init status --wait |
| 磁盘性能 | fio --name=test --rw=randread --bs=4k --direct=1 --numjobs=4 --runtime=30 |
| TRIM/discard 正常工作 | 在客户机中运行 fstrim -v /,并在主机上检查 thin pool 的 data_percent |
| PCI 直通 | 客户机中的 lspci 显示已直通的设备,且驱动已加载 |
| 网络连接 | ping gateway,检查 ip addr 是否与 cloud-init 配置一致 |
| 内存 | 客户机中的 free -h 与预期一致(未因内存气球而减少) |
| 实时迁移 | 先在非关键虚拟机上使用 qm migrate <vmid> <target> --online 进行测试 |
客户机中通常缺少 fio:command -v fio >/dev/null || echo "fio missing: sudo apt install fio (Debian/Ubuntu)"。
如果有任何检查未通过,请修复配置并返回第 3 步;硬件级修复需要重新启动 QEMU,而不是重启客户机。
快速任务:从云镜像创建 VM(Proxmox)
快速创建可投入生产的 VM。对于标准设置,跳过 Packer 和 ISO 安装。
- 将稳定的云镜像下载到 Proxmox 节点(不要使用
daily/,那里可能缺少 cloud-init 配置):wget -P /var/lib/vz/template/iso/ https://cloud.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2 - 创建 VM 框架:
qm create 100 --name myvm --memory 2048 --cores 2 --cpu host --net0 virtio,bridge=vmbr0 --agent enabled=1 --scsihw virtio-scsi-single - 导入并挂载磁盘,同时启用 SSD 优化:
qm importdisk 100 /var/lib/vz/template/iso/debian-13-generic-amd64.qcow2 local-lvmqm set 100 --scsi0 local-lvm:vm-100-disk-0,discard=on,iothread=1,ssd=1 --boot order=scsi0 - 添加 cloud-init 驱动器并进行配置:
qm set 100 --ide2 local-lvm:cloudinitqm set 100 --ciuser admin --sshkeys ~/.ssh/id_ed25519.pub --ipconfig0 ip=10.0.0.100/24,gw=10.0.0.1 - 启动:
qm start 100 - 验证:
qm agent 100 ping(首次启动时,cloud-init 运行可能需要 1-2 分钟)
若要将启动后的 VM 制作为可复用模板,先在来宾系统中重置实例状态:
sudo cloud-init clean --logs --machine-id && sudo rm -f /etc/ssh/ssh_host_* && sudo poweroff
(克隆后的首次启动时,cloud-init 会重新生成主机密钥和 machine-id),然后运行 qm template 100。
使用 qm clone 100 101 --name new-vm --full 进行克隆。
Proxmox VE 快速参考
阅读 references/proxmox.md,了解 API、CLI、存储后端、集群、HA、迁移、PCI 直通、备份和 Terraform 模式的完整说明。
必备 CLI
# VM management
qm list # List all VMs
qm create 100 --name test --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0
qm start/stop/shutdown/reset 100 # Power operations
qm config 100 # Show VM config
qm set 100 --memory 4096 # Modify config (some need stop/start)
qm resize 100 scsi0 +10G # Extend disk (can't shrink)
qm agent 100 ping # Test QEMU agent
qm migrate 100 pve2 --online --with-local-disks # Live migrate
# Container management
pct list # List LXC containers
pct create 200 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst
# Storage
pvesm status # Storage pool overview
lvs -a -o+devices # LVM thin pool status (on LVM backend)
# Cluster
pvecm status # Cluster status
pvecm nodes # Node list
ha-manager status # HA status
经实践验证的关键注意事项
这些经验来自生产环境中的 Proxmox,将为你节省数小时的调试时间:
停止/启动与重启: 在客户机中执行 reboot 不会重启 QEMU 进程。磁盘配置更改(discard、缓存模式、iothread、总线类型)只有在 QEMU 重新启动时才会生效。修改硬件配置时,请使用 qm shutdown,确认已停止,然后执行 qm start。内存气球设备更改同样适用。只有在正常关机失败、且有明确理由需要强制恢复时,才使用 qm stop;这会切断客户机电源。
LVM 精简池达到 100%: 当 data_percent 达到 100% 时,该池上的所有 VM I/O 都会立即失败——客户机会卡住,且不会逐步降级。恢复需要对精简池执行 lvextend,或将 VM 迁出。监控精简池使用率,并在远低于 100% 时发出告警(80% 警告,90% 严重)。data_percent 表示精简卷当前分配的池数据空间占比(lvmthin(7)),并非客户机内文件系统的使用率——VM 写入后又删除的 50GB,在 discard 传递到存储池之前,仍会占用这 50GB 空间。
通过 SSH 实时迁移: qm migrate 会在前台运行。如果 SSH 会话断开,迁移就会中止。对于大型 VM(磁盘 32GB 以上),请使用:
nohup qm migrate <vmid> <target> --online --with-local-disks \
> /tmp/migrate-<vmid>.log 2>&1 &
迁移可以安全中止:失败时源 VM 会继续运行,目标 LVs 会被清理。
KVM 内存气球: 气球设备可让主机回收客户机中未使用的内存,回收范围介于配置的最小值和 memory: 之间。它需要客户机中的 virtio_balloon 驱动:精简型 Alpine 镜像和部分 BSD 系统不会加载该驱动,因此主机的请求会被直接忽略。将 memory: 提高到当前运行上限以上,使用的是另一种机制——DIMM 热插拔;这需要 hotplug: memory、NUMA,以及能够将新内存块上线的客户机,否则就必须彻底停止并重新启动。即使在 Debian 上,内存压力下的气球行为也难以预测。建议:在 bpg/proxmox Terraform memory 块中使用 floating = 0,或在原生 Proxmox 配置中设置 balloon: 0,并按 VM 的实际需求配置内存。
Proxmox 上的 fail2ban(Debian 13): 在 journald 环境中,/var/log/daemon.log 不存在。请在 jail 配置中使用 backend = systemd 和 journalmatch = _COMM=pvedaemon。
在非 IPMI 硬件上运行 openipmi: 启动时会失败,并产生不必要的告警。对于没有 BMC/IPMI 硬件的节点,可以安全地执行 systemctl mask openipmi。屏蔽状态会在软件包更新后保留;禁用则不会。
存储性能
| 后端 | 最适合的场景 | 精简配置 | 快照 | 实时迁移 |
|---|---|---|---|---|
| LVM-thin | 本地 SSD、生产环境 | 是 | 是(写时复制) | 使用 --with-local-disks |
| ZFS | 数据完整性、压缩 | 是 | 是(原生) | 使用复制 |
| Ceph/RBD | 多节点共享存储 | 是 | 是 | 原生(共享) |
| NFS | ISO、模板、备份 | 取决于 NAS | 视情况而定 | 是(共享) |
| local (dir) | 小型/测试 | 否(基于文件) | 仅 qcow2 | 否 |
磁盘接口层级(从快到慢):
- virtio-scsi-single + iothread - 每块磁盘使用一个控制器,IOPS 最佳
- virtio-scsi-pci,不启用每块磁盘的 iothreads - 共享控制器,适用于中等 I/O
- virtio-blk - 旧版 virtio,性能良好,但功能较少
- IDE - 仅用于旧版场景,某些旧操作系统需要
SSD 优化检查清单:
- 在磁盘配置中设置
ssd = 1(告知来宾系统其运行在 SSD 上,并在来宾系统中启用 TRIM) - 在 QEMU 磁盘上设置
discard = on(将 TRIM/UNMAP 传递给存储后端) - 在来宾系统中启用
fstrim.timer(使用 systemd 的发行版默认每周运行) - 验证方法:在来宾系统中运行
fstrim -v /,然后在主机上检查lvs -o data_percent
磁盘扩容(Terraform 陷阱): 无论从哪一侧操作都可以扩容,但只能由一侧负责。bpg/proxmox provider 会在 disk.size 增大时原地扩容磁盘——如果 disk 在虚拟机的 hotplug 列表中,则可实时扩容;否则会由 provider 发起重启。任何情况下都不支持缩小。请选择一方负责:
- 由 Terraform 管理: 在
disk块中增大size并应用。不要将disk放入ignore_changes,否则扩容永远不会生效。 - 由主机管理: 在 Proxmox 主机上运行
qm resize <vmid> scsi0 +10G,将disk保留在ignore_changes中,并随后更新 Terraform 中的大小,确保计划保持干净。
无论哪种方式,都要在来宾系统内完成操作:运行 growpart /dev/sda 1(扩展分区),然后运行
resize2fs /dev/sda1 或 xfs_growfs /(扩展文件系统)。两方同时负责会导致计划缩小或重新创建磁盘。
内存管理
内存气球——简要说明: 除非已在确切的来宾操作系统和工作负载上进行过测试,否则不要使用。通过虚拟机配置中的 balloon: 0 禁用。
NUMA: 对于 4 个及以上核心或 8GB 及以上内存的虚拟机,请启用。Proxmox:在虚拟机配置中设置 numa: 1。
QEMU 会自动创建与主机拓扑匹配的 NUMA 节点。
大页: 2MB 或 1GB 页面可减少 TLB 未命中。对于数据库和内存密集型工作负载,效果显著。在主机上配置:
# Reserve 1024 x 2MB hugepages (2GB total)
echo 1024 > /proc/sys/vm/nr_hugepages
# Persistent: add to /etc/sysctl.d/
vm.nr_hugepages = 1024
然后在虚拟机配置中启用。注意:大页内存无法共享,也无法通过气球机制调整。
CPU 热插拔与内存热插拔: CPU 热插拔可在大多数现代 Linux 来宾系统上实时运行。
内存热插拔(运行时添加 DIMM)需要 hotplug: memory、在虚拟机上启用 NUMA,以及来宾系统能够上线新增内存块,通常通过 udev 规则实现;缺少这三项中的任何一项,变更都会静默失败。这与气球机制不同,后者只会在配置的最小内存和 memory: 之间移动内存。请在创建时正确设置内存大小。
虚拟机监控程序选择
| 虚拟机监控程序 | 类型 | 最适合 | 避免使用的情况 |
|---|---|---|---|
| Proxmox VE | Type 1(KVM+LXC) | 家庭实验室、中小型企业、由 API 驱动的自动化 | 需要 VMware 生态系统工具 |
| libvirt/KVM | Type 1(裸机) | 自定义配置、OpenStack、直接控制 | 需要图形界面或开箱即用的集群功能 |
| XCP-ng | Type 1(Xen) | 基于 Xen 的基础设施、XenOrchestra UI | 需要 KVM 专属功能(virtio-fs) |
| VMware ESXi | Type 1 | 已投入 VMware 的企业 | Broadcom 收购后:许可成本大幅飙升 |
| VirtualBox | Type 2 | 开发工作站、测试 | 生产环境。永远不要。 |
Broadcom 收购 VMware 后(2026): Broadcom 收购 VMware(于 2023 年 11 月完成)。永久许可证已取消,改为仅提供订阅模式;免费 ESXi 曾被取消,随后又部分恢复(ESXi 8.0 U3e“免费虚拟机监控程序”,2025 年 4 月)。许多组织正在迁移到 Proxmox 或 XCP-ng。从 VMware 迁移的路径有详尽的文档记录,但对于大型环境而言并非易事。
参考文件
references/proxmox.md- Proxmox VE 深入指南:API、CLI、存储、集群、高可用性、在线迁移、PCI 直通(包括 Windows 11 + NVIDIA 的快速方案)、Proxmox Backup Server 和 Terraform(bpg/proxmox provider 模式、生命周期注意事项、cloud-init)references/libvirt-qemu-kvm.md- libvirt/QEMU/KVM:virsh 命令、XML 域定义、QEMU 命令行、KVM 模块、磁盘格式、网络,以及不使用 Proxmox 的 libvirt 云镜像快速入门references/image-building.md- Packer 模板、cloud-init 配置、云镜像工作流、模板管理references/gotchas.md- 从生产环境 Proxmox/KVM 环境中总结的实战陷阱和故障模式。进行任何复杂更改之前请先阅读。
输出约定
完整约定请参阅 references/output-contract.md。
- 技能名称: VIRTUALIZATION
- 交付物类别:
audits - 模式: 有条件。调用以分析、审查、审计或改进现有仓库内容时,应用
references/output-contract.md中的报告篇幅和证据规则,并将交付物写入docs/local/audits/virtualization/<YYYY-MM-DD>-<slug>.md。调用以回答问题、讲解概念、构建新产物或生成内容时,可自由回复,不受约定限制。 - 严重性级别:
P0 | P1 | P2 | P3 | info(请参阅共享约定;仅用于审计/审查模式)。
相关技能
- terraform - 负责 HCL 模式、模块设计和状态管理。本技能负责 Proxmox 专属 provider 模式(bpg/proxmox 生命周期规则、cloud-init 接口、磁盘扩容变通方案)。通用 IaC 请使用 terraform;Proxmox 专属 Terraform 请使用本技能。
- kubernetes - 用于在 VM 上运行的容器编排。本技能负责配置 VM 基础设施;kubernetes 管理集群内运行的内容。
- networking - 用于非虚拟机监控程序专属的网络配置(DNS、VPN、反向代理、nftables)。本技能涵盖 VM 网络(网桥、VLAN、virtio-net)。
- ansible - 用于 VM 配置完成后的 day-2 管理。本技能创建 VM;ansible 配置其上运行的内容。
- docker - 用于容器镜像优化。本技能管理可能承载 Docker/容器工作负载的 VM。
规则
- 硬件变更时关机再启动,不要重启。 来宾系统重启不会重启 QEMU。 正常关机,确认已停止,然后再启动;强制停止需要单独说明理由。
- 磁盘大小只能由一方管理。 要么通过 bpg/proxmox 中的
disk.size扩容,并且不忽略disk;要么在主机上通过qm resize扩容,并且忽略disk——绝不能两者兼用。最后在来宾系统中使用 growpart,再运行 resize2fs 或 xfs_growfs。 - 默认禁用内存气球功能。 仅在特定来宾操作系统上测试后才启用。
- 监控 thin pool 的 data_percent。 达到 80% 时告警,达到 90% 时触发严重告警。达到 100% 时,所有 I/O 都会失败。
- 长时间迁移使用 nohup。 SSH 断开会终止前台运行的
qm migrate。 - Terraform 虚拟机使用
prevent_destroy+ignore_changes。 防止意外销毁,并忽略node_name和生成的 MAC 地址,以免实时迁移被识别为配置偏差。仅在由主机管理扩容的路径中,将disk添加到ignore_changes(规则 2)。 - 先测试,再用于生产环境。 新的虚拟机配置、直通设置和存储后端,都应先在非关键虚拟机上测试。