实现原理:
提供ESXI的系统内的定时任务实现定期自动快照及保留一定的副本数
一.登录VC或者ESXI的WEB管理页面,打开SSH服务,后面需要在主机的系统内写脚本和任务。
这里以VC登录举例:集群-宿主机-配置-系统-服务-SSH-启动
二.SSH登录ESXI后台,切换到ESXI系统盘的目录,一般是容量较小的那个盘;我这里是 datastore1(25)。
远程工具只要支持SSH都行,IP是宿主机的IP,端口22,账号密码就是登录这台宿主机的账号密码,我这里远程工具使用的是MobaXterm。
切换到/vmfs/volumes/宿主机系统盘/crontabs的目录
三.编写快照脚本
1.创建快照的脚本
vi snapshot_creat.sh
脚本内容(可直接拷贝使用):
#!/bin/sh
#auto create ESXi snapshots
for i in `vim-cmd vmsvc/getallvms | grep -v nosnap | awk '{print $1}' | grep -e "[0-9]"`
do
vname=$(vim-cmd vmsvc/get.summary $i | grep name | awk '{ print $3 }' | cut -d \" -f 2)
vim-cmd vmsvc/snapshot.create $i $(date "+%F")
sleep 30s
if [ $? -eq 0 ];then
echo "$(date "+%F %T") : $vname snapshot create success.." >> ./schedule_snap.log
else
echo "$(date "+%F %T") : $vname snapshot create FAILED.." >> ./schedule_snap.log
fi
done
2.删除快照的脚本
vi snapshot_del.sh
脚本内容(可直接拷贝使用):
DAY=3 #保留快照的数量
for i in `vim-cmd vmsvc/getallvms | awk '{print $1}' | grep -e "[0-9]"`
do
SNAPSHOT_COUNT=`vim-cmd vmsvc/snapshot.get $i | egrep -- '--\|-CHILD|^\|-ROOT' | wc -l`
if [ $SNAPSHOT_COUNT -gt $DAY ]; then
DELETE_COUNT=$(($SNAPSHOT_COUNT-$DAY))
OLD_SNAPSHOT_ID=`vim-cmd vmsvc/snapshot.get $i | grep Id | head -$DELETE_COUNT | awk -F: '{print $2}'`
for n in $OLD_SNAPSHOT_ID
do
vim-cmd vmsvc/snapshot.remove $i $n > /dev/null
sleep 30s
done
fi
done
3.给文件赋权
chmod 755 snapshot_*
四.创建定时任务
vi /etc/rc.local.d/local.sh
配置文件内容如下,kill到crond之间的内容是我们新增的,其他的都是系统原来的。
注:crond服务的计划任务参数中,所有命令一定要用绝对路径的方式来写,即 /vmfs/volumes/ 后面的路径,每个人的都不一样,当你切换到对应的目录时,输入pwd会自动显示该ESXi主机存储的绝对路径
#!/bin/sh ++group=host/vim/vmvisor/boot
# local configuration options
# Note: modify at your own risk! If you do/use anything in this
# script that is not part of a stable API (relying on files to be in
# specific places, specific tools, specific output, etc) there is a
# possibility you will end up with a broken system after patching or
# upgrading. Changes are not supported unless under direction of
# VMware support.
# Note: This script will not be run when UEFI secure boot is enabled.
kill $(cat /var/run/crond.pid)
/bin/echo "0 1 * * 2,4 sh /vmfs/volumes/632b2a06-89970b44-6d1c-80615f170c0c/crontabs/snapshot_creat.sh" >> /var/spool/cron/crontabs/root
/bin/echo "30 2 * * 2,4 sh /vmfs/volumes/632b2a06-89970b44-6d1c-80615f170c0c/crontabs/snapshot_del.sh" >> /var/spool/cron/crontabs/root
crond
exit 0
五.使配置生效
1.刷新/etc/rc.local.d/local.sh配置
/sbin/auto-backup.sh
2.重启ESXI主机使用之生效,或手动执行一次,看是否有快照文件生成。
重启ESXI
手动执行
查看主机快照,已经自动生成
本文参考链接:https://blog.csdn.net/zz960226/article/details/118363126
致敬~