VMware 自动快照脚本
2017-01-07 22:38:35
开启虚拟机的SSH之后,登录ESXI主机输入如下命令
#!/bin/sh
vim-cmd vmsvc/snapshot.create 4 “$(date +%Y%m%d%H%M)” #创建以日期命令的快照文件
sleep 300
vim-cmd vmsvc/snapshot.create 5 “$(date +%Y%m%d%H%M)”
DAY=3 #保留数量
for i in `vim-cmd vmsvc/getallvms | awk ‘{print $1}’ | grep -e “[0-9]”`
do
SNAPSHOT_COUNT=`vim-cmdvmsvc/snapshot.get $i | egrep – ‘–\|-CHILD|^\|-ROOT’ | wc -l`
if[ $SNAPSHOT_COUNT -ge $DAY ]; then
letNUM= S N A P S H O T _ C O U N T − SNAPSHOT\_COUNT- SNAPSHOT_COUNT−DAY
OLD_SNAPSHOT_ID=`vim-cmdvmsvc/snapshot.get i ∣ g r e p I d ∣ h e a d − i | grep Id | head - i∣grepId∣head−NUM | awk -F: ‘{print $2}’`
forn in $OLD_SNAPSHOT_ID
do
vim-cmdvmsvc/snapshot.remove $i $n > /dev/null #删除大于3天的快照
done
fi
done
关于EXSI的快照要说明的一点
快照不是备份,更不能当备份使用。如果快照过多将大量消耗机器的I/O资源
如果一份数据做了三份快照这个数据的利用数学表达式是这样的
原始数据+快照1+快照2+快照3=现在的数据
当我们要查找数据中的某个文件时,VM会先从快照3里查看有没有这个文件,如果没有就会查找快照2,还是没有就查找快照1依然没有就会查找原始数据,在这个过程中会浪费大量的I/O资源。但是快照又是最好的恢复工具,当放生数据丢失,误删除,病毒破坏等问题事,还原快照瞬间恢复。
所以快照必须得有,但是又不宜过多。
脚本运行之后的效果
改进脚本
#!/bin/sh
DAY=15 #保留数量每周1和3备份一次m
for i in `vim-cmd vmsvc/getallvms | awk ‘{print $1}’ | grep -e “[0-9]”`
do
vim-cmd vmsvc/snapshot.create i " i " i"(date +%Y%m%d%H%M)" #创建以日期命令的快照文件
SNAPSHOT_COUNT=`vim-cmd vmsvc/snapshot.get $i | egrep – ‘–\|-CHILD|^\|-ROOT’ | wc -l`
if [ $SNAPSHOT_COUNT -ge $DAY ]; then
let NUM= S N A P S H O T _ C O U N T − SNAPSHOT\_COUNT- SNAPSHOT_COUNT−DAY
OLD_SNAPSHOT_ID=`vim-cmd vmsvc/snapshot.get i ∣ g r e p I d ∣ h e a d − i | grep Id | head - i∣grepId∣head−NUM | awk -F: ‘{print $2}’`
for n in $OLD_SNAPSHOT_ID
do
vim-cmd vmsvc/snapshot.remove $i $n > /dev/null
done
fi
done
开机加载
/bin/echo ‘0 3 * * 1,3 /vmfs/volumes/54c7d083-18810fb1-2387-549f3504a12e/crontab/del_shot.sh’ >> /var/spool/cron/crontabs/root
#脚本文件要放到/vmfs/volumes/***(存储目录)里,否则主机重启后脚本会删除
评论(0)