songwei 发表于 2022-12-5 16:06:05

ESXi 虚拟机自动热备份工具Ghetto介绍和使用

工具名称:GhettoVCB
github主页:https://github.com/lamw/ghettoVCB
下载地址:https://github.com/lamw/ghettoVCB/releases
官方wiki文档:https://communities.vmware.com/t ... -i-3-5/ta-p/2773570


该工具是VMware Cloud项目构架师William Lam发布的开源程序,可以在设定好几个简单的配置之后每天自动或手动备份指定或者所有的虚拟机到指定目录,备份过程虚拟机无需关机(可以是ESXi本地的某个磁盘也可以是远程NAS中,NAS可以通过NFS挂载)

安装步骤:
1 打开ESXi ssh功能

如果你想每次开启自动打开ssh服务,右击选择策略--随追击启动而停止

2 调整第三方软件接受等级调为CommunitySupported
   ssh到esxi之后
esxcli software acceptance set --level=CommunitySupported

3 通过连接下载最新版本的vib文件,然后在ESXi的web界面上传到存储中,比如上传到如下目录:/vmfs/volumes/datastore1/

4 使用本地安装命令
esxcli software vib install -v /vmfs/volumes/datastore1/vghetto-ghettoVCB.vib -f#请注意文件名输入正确#请注意路径输入正确,以你的实际为准


5 在存储中新建配置文件,取名为ghettoVCB.conf
    使用cmd,ssh到esxi,,进入目录
/vmfs/volumes/datastore1/#<span style="background-color: rgb(255, 255, 255);">(不一定非要在此处,你可以自由选择)</span>    使用vi命令新建一个配置文件
vi ghettoVCB.conf    粘贴配置:VM_BACKUP_VOLUME=/vmfs/volumes/datastore1/MyBackup
DISK_BACKUP_FORMAT=thin
VM_BACKUP_ROTATION_COUNT=2
POWER_VM_DOWN_BEFORE_BACKUP=0
ENABLE_HARD_POWER_OFF=0
ITER_TO_WAIT_SHUTDOWN=3
POWER_DOWN_TIMEOUT=5
ENABLE_COMPRESSION=0
VM_SNAPSHOT_MEMORY=0
VM_SNAPSHOT_QUIESCE=0
ALLOW_VMS_WITH_SNAPSHOTS_TO_BE_BACKEDUP=1
SNAPSHOT_TIMEOUT=15
WORKDIR_DEBUG=0
VM_SHUTDOWN_ORDER=
VM_STARTUP_ORDER=
LOG_LEVEL="info"
VMDK_FILES_TO_BACKUP="all"修改好VM_BACKUP_VOLUME参数之后按下:输入wq保存。

在目标存储中新建一个配置文件中提到的备份目录:
cd /vmfs/volumes/datastore1/
mkdir MyBackup
重要参数解释:
    VM_BACKUP_VOLUME 你想要放置备份的文件夹路径,如果你的esxi本地磁盘够大,或者ESXi本地有更多磁盘,可以备份在本地,只要磁盘不蹦就可以顺利恢复虚拟机。
      VM_BACKUP_ROTATION_COUNT=2 你想要保存的备份的版本数量,例如今天备份之后,昨天的保留,明天备份之后,今天的保留,昨天的删除。

6 在存储中新建待备份的虚拟机列表,取名为vms_backup_list
<span style="white-space: pre-wrap;">cd </span>/vmfs/volumes/datastore1/<span style="white-space: pre-wrap;">
</span><span style="white-space: pre-wrap;">vi vms_backup_list</span>填入你想要备份的虚拟机,一行一个
iKuai
leanop
ROS6
AD
    #注意,虚拟机的名字需要填写在WEB界面看到的虚拟机的名字,不要带有空格,如果web界面中虚拟机的名字带有空格,点击编辑按钮,点击虚拟机选项,删掉空格。
   


7 手动测试备份任务
/opt/ghettovcb/bin/ghettoVCB.sh -f /vmfs/volumes/datastore1/vms_backup_list -g /vmfs/volumes/datastore1/ghettoVCB.conf    # /opt/ghettovcb/bin/ghettoVCB.sh :ghettoVCB脚本所在路径
    # /vmfs/volumes/datastore1/vms_backup_list: 你创建的待备份虚拟机列表
    # /vmfs/volumes/datastore1/ghettoVCB.conf:你创建的配置文件路径

所有虚拟机备份成功之后的提示:



8 添加自动备份任务
vi /etc/rc.local.d/local.sh

/bin/chmod +w /var/spool/cron/crontabs/root
/bin/kill $(cat /var/run/crond.pid)
/bin/echo '<font color="#ff0000"><b>00    18   *   *   *   /opt/ghettovcb/bin/ghettoVCB.sh -f /vmfs/volumes/datastore1/vms_backup_list -g /vmfs/volumes/datastore1/ghettoVCB.conf</b></font>' >> /var/spool/cron/crontabs/root
/bin/crond
wq保存之后命令行执行一下/etc/rc.local.d/local.sh
# 红色加粗部分就是刚才手动执行的备份命令,如果你没有改过目录名字、待备份列表文件、配置文件的名字,你可以直接粘贴上述代码
#0020 * * * 指的是每一天的ESXi时间的晚上20点钟,由于ESXi使用的时区是UTC 0 与中国相差8个小时,设置定晚上20点,那么实际备份时间会是中国时间的晚上12点,你用想要在几点钟备份,然后+8个小时就好了。


9 其他实用命令
临时想要备份一个虚拟机:/opt/ghettovcb/bin/ghettoVCB.sh -m 虚拟机名字 -g /vmfs/volumes/datastore1/ghettoVCB.conf


10 还原虚拟机操作

[*]在web界面从备份目录中将指定虚拟机复制到该虚拟机所在目录 (本次教程中使用的备份目录是/vmfs/volumes/datastore1/MyBackup,以iKuai虚拟机为例,那么进入指定的备份虚拟机文件夹之后,将“iKuai-2022-12-04_06-00-00”文件夹复制回vmfs/volumes/datastore1/)
[*]复制完成后,注册该备份虚拟机
[*]关闭出错的原虚拟机电源
[*]启动注册好的备份虚拟机
[*]确认备份好的虚拟机各功能工作正常
[*]删除原虚拟机

#如果你的备份目录在本地,临时需要启动备份的虚拟机,可以直接从备份目录注册虚拟机,然后直接启动,但这只建议临时应急使用,因为直接从备份目录启动虚拟机和即将来临的定时任务冲突。


11 挂载NFS网络存储用于备份
由于笔者只有群辉,所以只能用群辉举例。
进入群辉后台,点击控制面板,点击文件服务,点击NFS,勾选启用NFS服务,点击底部应用
点击控制面板,在左侧点击共享文件夹,右击列表中你想要共享给ESXi的文件夹,选择编辑:

点击NFS权限,点击新增,服务器名称输入你的ESXi地址或者直接输入本地局域网的网段,笔者所用网段是192.168.1.0/24,勾选允许用户访问已挂载的子文件夹,点击保存


记下上方的装载路径,等下在ESXi中要用到。
前往ESXi,点击存储,新建存储,挂在NFS数据存储:

下一步后确认挂载。
那么此时可以使用nfs作为备份的目的地了,请在/vmfs/volumes/datastore1/ghettoVCB.conf 配置文件中,将VM_BACKUP_VOLUME参数改为/vmfs/volumes/nfs/Mybackup,注意先去nfs中新建Mybackup这个文件夹。


songwei 发表于 2022-12-5 16:09:25

如果想要每周五0点备份一次,时间可填写 00 20 5 * *
查看linux任务计划的小网站
https://crontab.guru/#00_20_5_*_*

嘘~我不是运维 发表于 2024-4-16 10:00:35

你好看到你这个帖子,确实对我的帮助很大,感谢
页: [1]
查看完整版本: ESXi 虚拟机自动热备份工具Ghetto介绍和使用