EXSI主机自动创建快照,删除快照

1.开启EXSI主机SSH


2.使用SSH连接EXSI主机

SSH连接账号密码为登录EXSI主机时的账号密码


esxi重启会删除/vmfs/volumes目录外的文件,所以脚本放在/vmfs/volumes/datastore1
进入数据存储目录下,这个名称根据自己建立数据存储的名称来

cd /vmfs/volumes/datastore1/

创建存放脚本文件夹

mkdir crontabs

切换到存放脚本目录

cd crontabs

3.设置时区

EXSI主机默认为UTC时区
复制一份Linux时区正常的Shanghai文件到到EXSI主机的/vmfs/volumes/datastore1/crontabs/

/usr/share/zoneinfo/Asia/Shanghai

重命名EXSI主机的/etc/localtime,并给/etc/localtime建立软连接
/vmfs/volumes/5b006ef2-79848440-3c9c-0894ef0f727c/crontabs/就是刚才进入的datastore1下

mv /etc/localtime /etc/localtime_bak
ln -s /vmfs/volumes/5b006ef2-79848440-3c9c-0894ef0f727c/crontabs/Shanghai  /etc/localtime

编辑/etc/rc.local.d/local.sh,放进开机自启动

mv /etc/localtime /etc/localtime_bak
ln -s /vmfs/volumes/5b006ef2-79848440-3c9c-0894ef0f727c/crontabs/Shanghai  /etc/localtime
exit 0

输入date查看时间

可以重启EXSI主机查看是否正常

4.创建自动快照脚本

vi snapshot_creat.sh

填入自动快照脚本信息

#!/bin/sh
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

5.创建自动删除快照脚本

vi snapshot_del.sh

填入删除快照脚本信息

DAY=1 #保留快照的数量
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

给两个脚本赋予执行权限

chmod +x *.sh

6.测试运行快照脚本

./snapshot_creat.sh

查看创建日志

cat schedule_snap.log

EXSI主机查看创建快照情况(有两条记录是因为我运行了两次脚本,待会用于测试删除脚本是否可以删除)


运行删除快照脚本

./snapshot_del.sh

7.设置脚本开机自动执行计划

复制当前路径

添加crond内容

vi /etc/rc.local.d/local.sh

添加以下信息,脚本路径替换为实际的路径

kill $(cat /var/run/crond.pid)
# 凌晨2点创建快照
/bin/echo "0    2   *   *   *   sh /vmfs/volumes/5b006ef2-79848440-3c9c-0894ef0f727c/crontabs/snapshot_creat.sh" >> /var/spool/cron/crontabs/root
# 凌晨3点删除快照
/bin/echo "0    3   *   *   *   sh /vmfs/volumes/5b006ef2-79848440-3c9c-0894ef0f727c/crontabs/snapshot_del.sh" >> /var/spool/cron/crontabs/root
crond
exit 0

运行脚本保存配置

/sbin/auto-backup.sh

8.重启EXSI主机

想测试重启后脚本有没有执行的话可以改一下cron,每5分钟创建1次快照

/bin/echo "*/5    *  *   *   *   sh /vmfs/volumes/5b006ef2-79848440-3c9c-0894ef0f727c/crontabs/snapshot_creat.sh" >> /var/spool/cron/crontabs/root
posted @ 2024-05-27 13:22  Docker丶  阅读(1751)  评论(0)    收藏  举报