跳过正文
  1. 博客文章/

PVE AutoSnap 自动快照工具使用指南

·391 字·2 分钟·
虚拟化 备份 PVE Proxmox AutoSnap 虚拟化
Zayn
作者
Zayn
专注 Kubernetes、CI/CD、可观测性等云原生技术栈,记录生产环境中的实战经验与踩坑复盘。
目录

工具简介
#

PVE AutoSnap 是一个用于 Proxmox VE 环境的自动快照管理工具,可以自动创建、管理和清理虚拟机快照。

  • 项目地址cv4pve-autosnap
  • 主要功能:自动创建虚拟机快照、设置保留策略、批量管理多个虚拟机

安装配置
#

下载并安装工具
#

# 下载最新版本
wget https://github.com/Corsinvest/cv4pve-autosnap/releases/download/v1.14.8/cv4pve-autosnap-linux-x64.zip

# 解压文件
unzip cv4pve-autosnap-linux-x64.zip

# 移动到系统路径
mv cv4pve-autosnap /usr/bin/

# 设置执行权限
chmod a+x /usr/bin/cv4pve-autosnap

注意:请根据需要选择合适的版本,最新版本信息可查看 GitHub Releases

基本使用
#

环境变量配置
#

首先设置 PVE 连接参数:

SNAP_LIST="111,101"          # 需要备份的虚拟机 ID 列表
PVE_USER='root@pam'          # PVE 用户名
PVE_PASSWD='your_password'   # PVE 密码
PVE_HOST='192.168.8.19'      # PVE 主机地址

创建虚拟机快照
#

批量为指定虚拟机创建快照:

for vmid in ${SNAP_LIST//,/ }; do
    cv4pve-autosnap --host=${PVE_HOST} \
    --username=${PVE_USER} \
    --password=${PVE_PASSWD} \
    --vmid=${vmid} \
    snap --label=daily --keep=3
done

参数说明

  • --host:PVE 主机地址
  • --username:PVE 用户名
  • --password:PVE 密码
  • --vmid:虚拟机 ID
  • --label:快照标签(如 daily、weekly)
  • --keep:保留快照数量

查看快照状态
#

查看指定虚拟机的快照信息:

cv4pve-autosnap --host=${PVE_HOST} \
    --username=${PVE_USER} \
    --password=${PVE_PASSWD} \
    --vmid=111 status

GitLab CI/CD 集成
#

创建执行脚本
#

创建 Script.pve-snap 脚本文件:

#!/bin/bash
#================================================================
# 文件名:    Script.pve-snap
# 版本:      v1.0
# 日期:      2023/9/25
# 作者:      yangzun
# 邮箱:      yangzun@treesir.pub
# 描述:      PVE 虚拟机快照自动化脚本
#================================================================

# 默认配置参数
SNAP_LIST=${SNAP_LIST:-'101'}
PVE_USER=${PVE_USER:-'root@pam'}
PVE_PASSWD=${PVE_PASSWD:-'your_password'}
PVE_HOST=${PVE_HOST:-'192.168.8.19'}

# 安装 AutoSnap 工具
function install_autosnap() {
    echo "正在安装 cv4pve-autosnap 工具..."
    wget https://github.com/Corsinvest/cv4pve-autosnap/releases/download/v1.14.8/cv4pve-autosnap-linux-x64.zip
    unzip cv4pve-autosnap-linux-x64.zip
    mv cv4pve-autosnap /usr/bin/
    chmod a+x /usr/bin/cv4pve-autosnap
    echo "cv4pve-autosnap 工具安装完成"
}

# 执行快照操作
function execute_snapshot() {
    echo "开始执行虚拟机快照操作..."
    for vmid in ${SNAP_LIST//,/ }; do
        echo "正在为虚拟机 ${vmid} 创建快照..."
        cv4pve-autosnap --host=${PVE_HOST} \
        --username=${PVE_USER} \
        --password=${PVE_PASSWD} \
        --vmid=${vmid} \
        snap --label=daily --keep=3
    done
    echo "快照操作执行完成"
}

# 查看快照状态
function check_snapshot_status() {
    echo "正在检查虚拟机快照状态..."
    for vmid in ${SNAP_LIST//,/ }; do
        echo "虚拟机 ${vmid} 的快照状态:"
        cv4pve-autosnap --host=${PVE_HOST} \
        --username=${PVE_USER} \
        --password=${PVE_PASSWD} \
        --vmid=${vmid} \
        status
    done
}

# 主程序逻辑
case "${1}" in
    'exec')
        install_autosnap
        execute_snapshot
        ;;
    'plan')
        install_autosnap
        check_snapshot_status
        ;;
    *)
        echo "用法: $0 {exec|plan}"
        echo "  exec - 执行快照创建"
        echo "  plan - 查看快照状态"
        exit 1
        ;;
esac

GitLab CI/CD 配置文件
#

创建 .gitlab-ci.yml 配置文件:

# 全局变量配置
variables:
  extends: .default_vars

# 计划阶段 - 查看快照状态
.plan:
  stage: plan
  extends:
    - .schedule_trigger_disable

# 执行阶段 - 创建快照
.exec:
  stage: exec
  extends:
    - .master_schedule_manual_trigger

# 公共扩展配置
.extends_group:
  extends:
    - .runner_tag
    - .harbor_auth_vars
    - .load_function_before_jobs
    - .script_exec_vars
    - .nexus_auth_vars

# 计划脚本模板
.plan_script: &plan_script
  extends:
    - .plan
    - .extends_group
  script:
    - set -- $CI_JOB_NAME
    - chmod a+x Script.$1
    - ./Script.$1 plan

# 执行脚本模板
.exec_script: &exec_script
  extends:
    - .exec
    - .extends_group
  script:
    - set -- $CI_JOB_NAME
    - chmod a+x Script.$1
    - ./Script.$1 exec

# 任务定义
pve-snap plan: *plan_script   # 预览快照状态
pve-snap exec: *exec_script   # 执行快照创建

运行效果展示
#

计划阶段执行结果
#

image-20231005164932661

执行阶段运行结果
#

image-20231005165104628

使用建议
#

最佳实践
#

  1. 定期备份:建议设置定时任务,每日自动执行快照创建
  2. 保留策略:根据存储空间合理设置快照保留数量
  3. 监控告警:配置监控,及时发现快照创建失败的情况
  4. 测试恢复:定期测试快照恢复功能,确保备份有效性

注意事项
#

  1. 权限配置:确保 PVE 用户具有足够的权限执行快照操作
  2. 存储空间:监控存储空间使用情况,避免因空间不足导致快照失败
  3. 网络连接:确保执行环境能够正常访问 PVE 主机
  4. 密码安全:建议使用环境变量或密钥管理工具存储敏感信息

故障排除
#

  • 连接失败:检查网络连接和认证信息
  • 权限不足:确认用户权限配置
  • 存储空间:检查存储空间是否充足
  • 虚拟机状态:确认虚拟机处于可快照状态

相关文章

VMware ESXi 虚拟机克隆完整操作指南
·244 字·2 分钟
虚拟化 Vmware Esxi 虚拟化 克隆
使用 Kubernetes CronJob 自动备份 MySQL 数据到 MinIO
·1766 字·9 分钟
Kubernetes 数据库 Kubernetes Mysql 备份 Minio Cronjob
Linux LVM 分区扩容完整指南
·827 字·4 分钟
SRE Linux Lvm Storage