mcpField
V
virtualization

virtualization

github.com/iuliandita云与 DevOps1066 次安装今天更新
代码仓库

关于 virtualization

面向基础设施运维人员的虚拟机创建、配置与管理技能,适用于 Proxmox、libvirt/KVM、XCP-ng 和 VMware 等平台,覆盖存储、设备直通、集群与恢复。

主要功能

  1. 01虚拟机创建与配置
  2. 02Terraform 和 Packer 部署
  3. 03存储与性能指导
  4. 04GPU 和 PCI 直通
  5. 05集群、迁移与备份

适用场景

  1. 01部署 Proxmox 虚拟机
  2. 02使用 cloud-init 构建虚拟机模板
  3. 03规划 GPU 直通
  4. 04测试迁移与恢复流程

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/iuliandita/skills --skill virtualization

安装后在 Claude Code 中输入/virtualization确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
agent-hygiene.md
gotchas.md
image-building.md
libvirt-qemu-kvm.md
output-contract.md
proxmox.md

详细介绍

虚拟化:虚拟机监控程序、虚拟机和基础设施

在各类虚拟机监控程序上创建、配置和管理虚拟机——从单节点 Proxmox 部署,到支持高可用(HA)、实时迁移和 GPU 直通的多节点集群。目标是打造可用于生产环境的虚拟机基础设施,正确配置存储、内存和 CPU,避免凌晨 3 点出问题。

目标版本(2026 年 10 月):

工具版本发布日期备注
Proxmox VE9.22026 年 5 月当前生产版本线;查看从 9.1 升级的说明
Proxmox Backup Server4.22026 年 4 月去重、增量备份、修剪策略
bpg/proxmox (Terraform)0.115.02026 年 10 月主要的 Proxmox IaC 提供程序
QEMU11.1.22026 年 9 月稳定的 11.1 维护版本
libvirt12.8.02026 年 10 月虚拟机监控程序抽象层
XCP-ng8.3 LTS2024 年 10 月基于 Xen,自 2025 年 6 月起为 LTS,2028 年 11 月 EOL
VMware ESXi8.0 U3k (25595708)2026 年 7 月8.0 U3 版本线的安全基准(构建号未经 2026 年 10 月核实);请检查设备版本线
VirtualBox7.2.202026 年 9 月当前 7.2 维护版本
Packer1.16.12026 年 9 月镜像构建工具,支持多平台
cloud-init26.22026 年 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-initreferences/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-pcireferences/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 安装。

  1. 将稳定的云镜像下载到 Proxmox 节点(不要使用 daily/,那里可能缺少 cloud-init 配置): wget -P /var/lib/vz/template/iso/ https://cloud.debian.org/images/cloud/trixie/latest/debian-13-generic-amd64.qcow2
  2. 创建 VM 框架: qm create 100 --name myvm --memory 2048 --cores 2 --cpu host --net0 virtio,bridge=vmbr0 --agent enabled=1 --scsihw virtio-scsi-single
  3. 导入并挂载磁盘,同时启用 SSD 优化: qm importdisk 100 /var/lib/vz/template/iso/debian-13-generic-amd64.qcow2 local-lvm qm set 100 --scsi0 local-lvm:vm-100-disk-0,discard=on,iothread=1,ssd=1 --boot order=scsi0
  4. 添加 cloud-init 驱动器并进行配置: qm set 100 --ide2 local-lvm:cloudinit qm set 100 --ciuser admin --sshkeys ~/.ssh/id_ed25519.pub --ipconfig0 ip=10.0.0.100/24,gw=10.0.0.1
  5. 启动:qm start 100
  6. 验证: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多节点共享存储是是原生(共享)
NFSISO、模板、备份取决于 NAS视情况而定是(共享)
local (dir)小型/测试否(基于文件)仅 qcow2否

磁盘接口层级(从快到慢):

  1. virtio-scsi-single + iothread - 每块磁盘使用一个控制器,IOPS 最佳
  2. virtio-scsi-pci,不启用每块磁盘的 iothreads - 共享控制器,适用于中等 I/O
  3. virtio-blk - 旧版 virtio,性能良好,但功能较少
  4. 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 VEType 1(KVM+LXC)家庭实验室、中小型企业、由 API 驱动的自动化需要 VMware 生态系统工具
libvirt/KVMType 1(裸机)自定义配置、OpenStack、直接控制需要图形界面或开箱即用的集群功能
XCP-ngType 1(Xen)基于 Xen 的基础设施、XenOrchestra UI需要 KVM 专属功能(virtio-fs)
VMware ESXiType 1已投入 VMware 的企业Broadcom 收购后:许可成本大幅飙升
VirtualBoxType 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。

规则

  1. 硬件变更时关机再启动,不要重启。 来宾系统重启不会重启 QEMU。 正常关机,确认已停止,然后再启动;强制停止需要单独说明理由。
  2. 磁盘大小只能由一方管理。 要么通过 bpg/proxmox 中的 disk.size 扩容,并且不忽略 disk;要么在主机上通过 qm resize 扩容,并且忽略 disk——绝不能两者兼用。最后在来宾系统中使用 growpart,再运行 resize2fs 或 xfs_growfs。
  3. 默认禁用内存气球功能。 仅在特定来宾操作系统上测试后才启用。
  4. 监控 thin pool 的 data_percent。 达到 80% 时告警,达到 90% 时触发严重告警。达到 100% 时,所有 I/O 都会失败。
  5. 长时间迁移使用 nohup。 SSH 断开会终止前台运行的 qm migrate。
  6. Terraform 虚拟机使用 prevent_destroy + ignore_changes。 防止意外销毁,并忽略 node_name 和生成的 MAC 地址,以免实时迁移被识别为配置偏差。仅在由主机管理扩容的路径中,将 disk 添加到 ignore_changes(规则 2)。
  7. 先测试,再用于生产环境。 新的虚拟机配置、直通设置和存储后端,都应先在非关键虚拟机上测试。

评论

支持 Markdown