跳转至

SOP — 创建 rocky9-01 虚拟机(8C/16G/50G HDD,Rocky 9)

变更日期:2026-09-25 | 宿主:dell-R620(单机、本机执行)| 状态:已验证通过【已确认】 实现体:main.py + deployer.py;本文件第 5 章代码块为文档呈现,以实现体为准。

1. 背景

需要一台 8C / 16G / 50G HDD 的 Rocky 9 虚拟机。既有四个批次(k8s / slurm / lustre / lsf)配置与磁盘按红线不得触碰,故新建独立配置文件单台创建。

2. 目标

  • 域 rocky9-01 处于 running、自启开启、SSH 可达
  • 规格实测:8 vCPU / 约 16G 内存 / 系统盘 50G(hdd-pool 稀疏 qcow2)
  • IP 192.168.31.28 可 ping 通
  • --drift 报 0 项漂移;复跑执行为 skipped(幂等)

3. 前置条件

  • root 权限(sudo)、宿主已装 virt-install / virsh / qemu-img / openssl
  • ISO /data/kvm/iso/Rocky-9-latest-x86_64-dvd.iso 可读、存储池 hdd-pool running
  • 公钥 /home/rain/.ssh/id_ed25519.pub 可读
  • 执行前已跑 --precheck(10/10 通过)与 --dry-run(2 项待变更)

4. 影响范围

  • 主机:仅 rocky9-01 单台(新域 + 新卷 rocky9-01.qcow2),不涉及其它批次、不碰 br0 / 物理网卡 / netplan、不重启宿主
  • 是否停服:否;宿主上 19 台既有虚机不受影响
  • 窗口:安装期约 750s(HDD 上单台无人值守安装),期间占用 .28
  • 在跑业务:本机若有调度作业,与本次单台创建无冲突(不改宿主内核与 KSM)

5. 分步操作

对应实现体 main.py / deployer.py / config/hosts-20260925-rocky9.yaml,以实现体为准。

cd /home/rain/Documents/kvm/kvm_rocky9_deploy

# 1) 预检:IP 与域名不被占用(预期 ping 100% loss、无同名域)
ping -c 2 -W 1 192.168.31.28
virsh --connect qemu:///system list --all --name | grep '^rocky9-01$'

# 2) 只读体检:预期「预检查通过:全部检查项达标」(10/10)
sudo .venv/bin/python main.py --precheck --config config/hosts-20260925-rocky9.yaml

# 3) 预演:零系统改动,预期列出 2 项待变更(卷 + 域)
sudo .venv/bin/python main.py --dry-run --config config/hosts-20260925-rocky9.yaml

# 4) 真实执行(高危:会创建卷与域、写入凭据)
#    预期:状态: success,节点校验「状态=running SSH=可达 自启=是」
sudo .venv/bin/python main.py --config config/hosts-20260925-rocky9.yaml

凭据(root 口令)由实现体生成,落盘 config/credentials-rocky9.yaml(已 gitignore)——取用命令:

sudo cat config/credentials-rocky9.yaml   # 输出勿外传

6. 验证

sudo .venv/bin/python main.py --drift --config config/hosts-20260925-rocky9.yaml
# 预期:待变更 0 项,「未发现漂移:实机与期望态一致」

virsh --connect qemu:///system dominfo rocky9-01 | grep -E '^(CPU|Memory|Autostart|State)'
# 预期:State=running、CPU(s)=8、Memory=16384、Autostart=enable

ping -c 2 -W 1 192.168.31.28        # 预期 0% packet loss
ssh root@192.168.31.28 'nproc; free -m | grep Mem; lsblk -d -o NAME,SIZE | grep vda'
# 预期:8 | Mem ≈15731 | vda 50G

# 幂等复跑:预期第二次零变更
sudo .venv/bin/python main.py --config config/hosts-20260925-rocky9.yaml
# 预期:「状态一致,无需变更,跳过备份与执行」、状态: skipped

实测记录(2026-09-25):precheck 10/10 → dry-run 2 项 → 执行 success(750.09s,48 次安装探测、第 3 次就绪探测 SSHD 可达)→ drift=0 → 复跑 skipped。全部达标【已确认】。

7. 回滚

  • 备份:本次为纯新增(新建 config/hosts-20260925-rocky9.yaml、config/credentials-rocky9.yaml,未改动任何既有文件),无既有文件需备份;台账见 rocky9-20260925/backup/README.md
  • 销毁虚机【高危,不可恢复,会删除域与磁盘】:
# 预演:只列清单,不删
sudo .venv/bin/python main.py --rollback --dry-run --config config/hosts-20260925-rocky9.yaml
# 真实销毁(需 --force 或交互输入 YES)
sudo .venv/bin/python main.py --rollback --force --config config/hosts-20260925-rocky9.yaml
  • 回滚后验证:virsh list --all --name | grep rocky9-01 无输出;virsh vol-list hdd-pool | grep rocky9-01 无输出;其余批次域数量不变(19 → 18)
  • 回滚只作用于本配置列出的主机,不影响其它四个批次

8. 风险说明

风险 缓解
.28 与路由器 DHCP 池冲突(.23–27 已确认不冲突,.28 未验证) 创建前 ping 探测空闲【已确认】;若后续出现地址冲突,改配置 IP 并重建
HDD 上安装慢、超时 install_timeout_sec=2400,实测 750s 完成
--rollback 误删 现需 --force / 交互确认;--dry-run --rollback 只列清单
凭据泄露 config/credentials*.yaml 已 gitignore,禁止提交或外传

附录:交付物清单

  • config/hosts-20260925-rocky9.yaml — 本批次配置
  • config/credentials-rocky9.yaml — root 口令(gitignore)
  • build/plans/plan-hosts-20260925-rocky9-*.yaml、build/reports/{precheck,drift}-*.txt — 实现体产物,可清理
  • rocky9-20260925/backup/README.md — 备份台账

来源:/home/rain/Documents/kvm/kvm_rocky9_deploy/rocky9-20260925/SOP.md | 最后更新:2026-09-25 00:28(由 build/sync.py 同步,请勿在站点侧修改)