本项目是一个基于 Proxmox VE (PVE) 平台的自动化脚本合集,旨在帮助管理员简化日常虚拟化管理操作,提高工作效率。
目前项目包含以下功能脚本:
- 虚拟机快照管理与重启脚本
- 功能:
- 定时创建虚拟机快照(每日、每周、每月)。
- 自动删除过期快照,避免存储空间占用。
- 批量重启虚拟机,优雅关机失败时强制关机并重启。
- 当虚拟机无法正常启动时,自动回滚到最近的快照,最多重试指定次数。
- 适用场景:
- 自动化维护虚拟机快照。
- 定期重启虚拟机,确保系统稳定运行。
- 遇到启动失败时自动恢复到正常状态。
- 功能:
确保 PVE 主机满足以下条件:
- 脚本需要执行
qm
命令(用于管理虚拟机),路径/usr/sbin/
已正确配置。 - 日志文件将保存在
/var/log/restart_vm_with_snapshot.log
,需确保该路径可写。
打开脚本文件,修改以下部分内容以适配你的环境:
# 虚拟机ID列表,根据需求替换为你的虚拟机ID
qvmids=(102)
# 最大回滚重试次数
MAX_RETRY=3
qvmids
:需要管理的虚拟机 ID 列表。可以添加多个虚拟机,例如qvmids=(101 102 103)
。MAX_RETRY
:当虚拟机无法启动时,回滚快照的最大重试次数(默认值为 3)。
将脚本上传到 PVE 主机,并赋予执行权限:
chmod +x restart_vm_with_snapshot.sh
手动运行脚本:
./restart_vm_with_snapshot.sh
如果需要每天自动执行脚本,可以通过 crontab 添加定时任务:
- 编辑 crontab 配置:
crontab -e
- 添加定时任务。例如,每天凌晨 2 点运行脚本:
0 2 * * * /path/to/restart_vm_with_snapshot.sh >> /var/log/restart_vm_with_snapshot_cron.log 2>&1
脚本日志默认保存在 /var/log/restart_vm_with_snapshot.log
,格式如下:
[2024-06-17 12:00:01] [VM 102] [INFO] 开始管理快照
[2024-06-17 12:00:02] [VM 102] [SUCCESS] 创建快照 daily-20240617
[2024-06-17 12:00:22] [VM 102] [ERROR] 虚拟机启动失败,开始回滚 (尝试次数: 1)
[2024-06-17 12:00:40] [VM 102] [SUCCESS] 回滚到快照 daily-20240617
[2024-06-17 12:00:41] [VM ALL] [INFO] 任务执行完成
- 添加更多 PVE 自动化脚本,如资源监控、自动备份等。
- 优化现有脚本,支持更多管理操作和参数配置。
- 在生产环境使用前,请先测试脚本,以确保其符合预期效果。
- 脚本需以管理员权限运行,确保有足够的权限管理虚拟机和快照。