跳到主內容

ghettoVCB 備份/還原 ESXI Guest OS

  文章內容說明

運行環境


  • 系統環境: VMware ESXI 6.7

ghettoVCB 備份


  • 設定備份設定檔 vi /vmfs/volumes/OMV-NFS/VMware/ghettoVCB.conf
VM_BACKUP_VOLUME=/vmfs/volumes/OMV-NFS/VMware    #備份到本機的另一個儲存區
DISK_BACKUP_FORMAT=thin     #建議保留預設值,採用精簡佈建
VM_BACKUP_ROTATION_COUNT=2    #保留幾份 Guest OS 備份檔案
ENABLE_COMPRESSION=0    #備份時是否要壓縮 1啟動 , 0關閉
##設定自動掛載其他設備的地方##
ENABLE_NON_PERSISTENT_NFS=0    #是否啟用自動掛載及卸載NFS儲存設備機制
UNMOUNT_NFS=0    #執行完就缷載NFS 資料夾 1啟動 , 0關閉
NFS_SERVER=192.168.1.1    #儲存設備
NFS_MOUNT=/nas_share    #儲存設備(NAS) 分享的資料夾
NFS_VERSION=nfs    #NFS版本,nfs / nfs4
NFS_LOCAL_NAME=nfs_dir    #掛載到 /vmfs/volumes/ 下的名稱
NFS_VM_BACKUP_DIR=guest_os_backup     #esxi guest os 備份檔放到 guest_os_backup 裡
SNAPSHOT_TIMEOUT=15
##設定備份完成通知管理者##
EMAIL_LOG=0    #是否開啟 E-Mail 寄送 LOG。 1啟動 , 0關閉,如要寄送LOG必須再設定打開 SMTP 25PORT 及 FIREWALL
EMAIL_SERVER=msr.hinet.net
EMAIL_SERVER_PORT=25     
EMAIL_DELAY_INTERVAL=1     #是否延遲寄信
[email protected]
[email protected]
EMAIL_FROM=root@esxi

說明:以上設定完之後存檔,因為在 VMWare ESXI 上已經有掛載 NAS NFS 服務,所以不用在再自動去掛載。

  • 如果是單一台 Guest 要備份手動的指令
/opt/ghettovcb/bin/ghettoVCB.sh -g /vmfs/volumes/OMV-NFS/VMware/ghettoVCB.conf -m web_12 -l /vmfs/volumes/OMV-NFS/VMware/log/vmbackup_$(date +%F_%H-%M).log
  • 如果是有多個 Guest 要備份的話要建立一個清單,但是要用一行一行的方式 vi /vmfs/volumes/OMV-NFS/VMware/vmlist
CentOS7-Web
web_12
  • 清單備份指令
/opt/ghettovcb/bin/ghettoVCB.sh -g /vmfs/volumes/OMV-NFS/VMware/ghettoVCB.conf -f /vmfs/volumes/OMV-NFS/VMware/vmlist -l /vmfs/volumes/OMV-NFS/VMware/log/vmbackup_$(date +%F_%H-%M).log
  • 建立排程,那因 ESXI 如果有重啟服務的話會將已修改過設定檔會清除,那我們需要手動重新設定排程 vi /var/spool/cron/crontabs/root
30 1 * * * /opt/ghettovcb/bin/ghettoVCB.sh -g /vmfs/volumes/OMV-NFS/VMware/ghettoVCB.conf -f /vmfs/volumes/OMV-NFS/VMware/vmlist -l /vmfs/volumes/OMV-NFS/VMware/log/vmbackup_$(date +%F_%H-%M).log > /var/log/cronbak 2>&1

# 強制寫入
wq!
  • 複製設定檔到 NAS 上(因 BUBU 剛好公司有一台重開機結果設定檔已被還原所以建議一定要備份出來。)
cp /opt/ghettovcb/ghettoVCB.conf /vmfs/volumes/OMV-NFS/VMware/ghettoVCB.conf
cp /opt/ghettovcb/vmlist /vmfs/volumes/OMV-NFS/VMware/vmlist
  • 複製排程出來
cp /var/spool/cron/crontabs/root /vmfs/volumes/OMV-NFS/VMware/backuproot
  • 建立新的腳本還原之前設定檔的排程 vi /vmfs/volumes/OMV-NFS/VMware/backuproot.sh
#!/bin/sh
# 備份設定檔
mv /opt/ghettovcb/ghettoVCB.conf /opt/ghettovcb/ghettoVCB.conf.bak
# 還原備份設定檔
cp /vmfs/volumes/OMV-NFS/VMware/ghettoVCB.conf /opt/ghettovcb/ghettoVCB.conf
# 還原備份清單
cp /vmfs/volumes/OMV-NFS/VMware/vmlist /opt/ghettovcb/vmlist
#add backup crond shell
/bin/kill $(cat /var/run/crond.pid)
cp /vmfs/volumes/OMV-NFS/VMware/backuproot /var/spool/cron/crontabs/root
/usr/lib/vmware/busybox/bin/busybox crond
  • 將剛剛設定檔 backuproot.sh 腳本加入開機設定檔 vi /etc/rc.local.d/local.sh 新增如下
#backup crond
/vmfs/volumes/OMV-NFS/VMware/backuproot.sh

ghettoVCB 還原


  • 先建立要還原的清單這個清單放的位置就看個人就好了 vi /vmfs/volumes/OMV-NFS/VMware/re-vmlist
  • 選項說明,在執行的時候記注行別不能有空一行,也要注意空格
# DISK_FORMATS
# 1 = zeroedthick  (一次給足全部的硬碟大小,需要時才初使化未使用的空間)
# 2 = 2gbsparse  (將硬碟分割成多個 2G 的硬碟)
# 3 = thin  (隨著使用量而增加硬碟大小,達到設定上限時就不會在增加)
# 4 = eagerzeroedthick  (一次給足全部的硬碟大小(刪除所有的資料),已初始化可直接使用)
#   "還原來源 目錄                                        ; 還原的目的 store   ; 磁碟存放方式"
"/vmfs/volumes/OMV-NFS/VMware/CentOS7-2021-10-31_18-58-43;/vmfs/volumes/HDD2T;3"
  • Dryrun(模擬執行)
/opt/ghettovcb/bin/ghettoVCB-restore.sh -c /vmfs/volumes/OMV-NFS/VMware/re-vmlist -d 1
  • Debug(模擬執行)
/opt/ghettovcb/bin/ghettoVCB-restore.sh -c /vmfs/volumes/OMV-NFS/VMware/re-vmlist -d 2
  • 正式還原,可以利用 -l 參務將還原的過程都記錄下來
/opt/ghettovcb/bin/ghettoVCB-restore.sh -c /vmfs/volumes/OMV-NFS/VMware/re-vmlist -l /vmfs/volumes/OMV-NFS/VMware/vmlog/123.
log
異機還原

如果您還原後系統出現此訊息是因為版本差的關係,所以要進到該設備修改該客機的設定檔 .vmx

esxi-01.png

  • 進到該客機的設定檔修改 virtualHW.version 這一段看該 ESXI 版本是多少。

esxi-04.png

  • 修改完之後再去 ESXI 介面將該客機從目錄清單先移除

esxi-02.png

  • 再進到儲存設備那尋找剛剛已移除客機名稱點選該目錄再 .vmx 右鍵選擇新增到目錄清單上就可以正常開機。

esxi-03.png

補充說明


備註





參考相關網頁