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-poolrunning - 公钥
/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同步,请勿在站点侧修改)