指令碼檔案需要放在/vmfs/volumes目錄,即虛擬機器的存放目錄,vim-cmd vmsvc/getallvms 此命令用來獲取esxi主機的所有vm;放到其他目錄exsi主機重啟後會被清除。
對於有些不需要快照的主機,可以在網頁的vm note資訊新增過濾,例如此處過濾了note資訊包含『nosnap』的虛擬機器;
注意:在網頁新增虛擬機器的note備註資訊時,盡量不要換行或過長。
獲取其他vm的vm id, 用來執行建立快照命令;
快照命名使用日期(date 「+%f」);
獲取的vname用來輸出日誌;
輸出執行日誌,日誌格式如下:
[root@esxi01:~] cat /schedule_snap.log2019-03-02 01:00:33 : vm****** snapshot create success…
2019-03-02 01:01:04 : vm***x snapshot create success…
2019-03-02 01:01:36 : vm***xx snapshot create success…
2019-03-02 01:02:07 : vmx snapshot create success…
2019-03-02 01:02:39 : vmxx snapshot create success…
2019-03-02 01:03:11 : vm***x snapshot create success…
2019-03-02 01:03:42 : vm****** snapshot create success…
2019-03-02 01:04:14 : vm***x snapshot create success…
#!/bin/sh
#auto create esxi snapshots
for i in `vim-cmd vmsvc/getallvms | grep -v nosnap | awk '' | grep -e "[0-9]"`
do vname=$(vim-cmd vmsvc/get.summary $i | grep name | awk '' | 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
fidone
獲取esxi主機的所有vm id;
根據vm id獲取該vm的快照數量;
是否需要刪除/需要刪除多少快照;
變數的數學計算,在不同的shell版本中可能有不同的寫法,注意先測試根據vm id和快照id 執行刪除命令;此處
delete_count= $(($snapshot_count-$day))
而使用中括號[ ]的寫法卻無法計算
此處只保留了最近的一次快照,根據實際使用的感受,快照數量過多確實會一定程度影響虛擬機器的磁碟效能,特別是對於資料庫/檔案服務這些對磁碟io要求較高的場景。
#!/bin/sh
day=1 #保留數量
for i in `vim-cmd vmsvc/getallvms | awk '' | 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: ''`
for n in $old_snapshot_id
dovim-cmd vmsvc/snapshot.remove $i $n > /dev/null
sleep 30s
done
fidone
主機的root crond目錄在/var/spool/cron/crontabs/root ;
此處的任務為每週執行一次;
「5c64e4b5-5ae69e88-dbb3-9cdc71dab878」是儲存卷名
##/etc/rc.local.d/local.sh
#!/bin/sh
/bin/echo "0 1 * * 6 sh /vmfs/volumes/5c64e4b5-5ae69e88-dbb3-9cdc71dab878/crontabs/snapshot_creat.sh" >>/var/spool/cron/crontabs/root
/bin/echo "30 1 * * 6 sh /vmfs/volumes/5c64e4b5-5ae69e88-dbb3-9cdc71dab878/crontabs/snapshot_del.sh" >>/var/spool/cron/crontabs/root
kill $(cat /var/run/crond.pid)
crond
exit 0
pve系統 快照自動備份指令碼
常用命令 qm snapshot 101 zsl options 快照 description string qm rollback 回滾 qm delsnapshot options 刪除快照 參考文件 時間格式化參考 date d 1 days ago y m d h m 一天前 vi beif...
hbase基於快照的資料遷移
hbase基於快照的資料遷移 1.對於開啟安全認證 kerberos 的集群,首先需要關掉安全認證。2.在源集群所有節點 etc hosts檔案中配置目標集群所有節點的host。1.登入ambari檢查hbase site.xml 中的hbase.snapshot.enabled 是否設定為true...
hbase基於快照的資料遷移
hbase基於快照的資料遷移 前期準備 1.對於開啟安全認證 kerberos 的集群,首先需要關掉安全認證。2.在源集群所有節點 etc hosts檔案中配置目標集群所有節點的host。源集群操作 開啟hbase快照 1.登入ambari檢查hbase site.xml中的hbase.snapsh...