VMware虚拟化自动化快照实现-全过程

实现原理:
提供ESXI的系统内的定时任务实现定期自动快照及保留一定的副本数


一.登录VC或者ESXI的WEB管理页面,打开SSH服务,后面需要在主机的系统内写脚本和任务。
这里以VC登录举例:集群-宿主机-配置-系统-服务-SSH-启动

VMware虚拟化自动化快照实现-全过程_第1张图片

二.SSH登录ESXI后台,切换到ESXI系统盘的目录,一般是容量较小的那个盘;我这里是 datastore1(25)。
VMware虚拟化自动化快照实现-全过程_第2张图片


远程工具只要支持SSH都行,IP是宿主机的IP,端口22,账号密码就是登录这台宿主机的账号密码,我这里远程工具使用的是MobaXterm。
在这里插入图片描述
切换到/vmfs/volumes/宿主机系统盘/crontabs的目录
VMware虚拟化自动化快照实现-全过程_第3张图片


三.编写快照脚本

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
VMware虚拟化自动化快照实现-全过程_第4张图片


手动执行
VMware虚拟化自动化快照实现-全过程_第5张图片
查看主机快照,已经自动生成
VMware虚拟化自动化快照实现-全过程_第6张图片
本文参考链接:https://blog.csdn.net/zz960226/article/details/118363126
致敬~

你可能感兴趣的:(VMware,自动化,linux,vim)