2016年12月16日 星期五

ghettoVCB 備份 ESXI Guest OS

還原:ghettoVCB 還原 ESXI Guest OS

ghettoVCB 備份篇:
1.打開 ESXI 伺服器的 SSH Service


2.必須先修改 ESXI 伺服器可安裝非原廠的額外套件
esxcli software acceptance set --level=CommunitySupported
如不修改,安裝 ghettoVCB 時將無法成功安裝

3.下載 ghettoVCB 套件

4.將 ghettoVCB 上傳到 ESXI 伺服器:
如用 vSphere Client 上傳,在儲存區 datastore1 按【右鍵】、【瀏覽資料存放區】
按上傳檔案即可將 ghettoVCB 上傳到伺服器(存放路徑,預設是在: /vmfs/volumes/datastore1)。

5.SSH 工具連線進入 ESXI 伺服器
安裝 ghettoVCB 時,必須輸入完整的檔案路徑,否則安裝時會出現:

esxcli software vib install -v /vmfs/volumes/datastore1/vghetto-ghettoVCB.vib -f
安裝成功的訊息:

6.確認程式正確安裝
在 /opt/ghettovcb/bin/ 下會有兩個檔案:
ghettoVCB-restore.sh
ghettoVCB.sh

7.新增一個 ghettoVCB.conf
ESXI Guest OS 備份到另一個儲存區:
VM_BACKUP_VOLUME=/vmfs/volumes/DataAndBackup/GuestOSBackup    #備份到本機的另一個儲存區
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=1    #是否開啟 E-Mail 寄送 LOG。 1啟動 , 0關閉,如要寄送LOG必須再設定打開 SMTP 25PORT 及 FIREWALL
EMAIL_SERVER=msr.hinet.net
EMAIL_SERVER_PORT=25     
EMAIL_DELAY_INTERVAL=1     #是否延遲寄信
EMAIL_TO=example@gmail.com
EMAIL_ERRORS_TO=example@gmail.com
EMAIL_FROM=esxi@gmail.com

8.執行備份
測試備份時出現說我的ESXI版本符合,但我的是 ESXI 6.5.0 版啊!!!!!!!

只好自己動手修改 ghettoVCB.sh 了!

chmod 755 ghettoVCB.sh
chmod +t ghettoVCB.sh
vi ghettoVCB.sh

在紅框處新增 6.5.0 存檔(作者已修改可以支援 6.5.0 版本)
修改後,記得改回原來的檔案權限
chmod 555 ghettoVCB.sh

備份到 NAS NFS 還要修改 ghettoVCB.sh 約在第 769 行,新增支援 6.5.0 版本才能正常備份到 NAS NFS。


ESXI Guest OS 備份到 NFS:
esxi mount 指令先掛載備份的 NAS NFS 資料夾:
手動測試備份到 NAS NFS 資料夾時,需要先把 NAS Share 出來的資料夾掛載到 ESXI 的 /vmfs/volumes 下,所以要先執行:
esxcfg-nas -a -o 192.168.1.1 -s /nas_share nfs_dir    #把 NAS 的 nas_share 資料夾掛載到 ESXI 主機的 /vmfs/volumes/nfs_dir

缷載  NAS、NFS 目錄(有時無法正常缷載,如果有 vSphere Client 建議用它缷載比較OK):
esxcfg-nas -d nfs_dir

修改 ghettoVCB.conf 設定檔為使用 NFS 備份設定:
vi /opt/ghettoVCB/ghettoVCB.conf
內容:
#VM_BACKUP_VOLUME=/vmfs/volumes/DataAndBackup/GuestOSBackup    #備份到本機的另一個儲存區
DISK_BACKUP_FORMAT=thin     #建議保留預設值,採用精簡佈建
VM_BACKUP_ROTATION_COUNT=2    #保留幾份 Guest OS 備份檔案
ENABLE_COMPRESSION=0    #備份時是否要壓縮 1啟動 , 0關閉
ENABLE_NON_PERSISTENT_NFS=1    #是否啟用自動掛載及卸載NFS儲存設備機制
UNMOUNT_NFS=1    #執行完就缷載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=1    #是否開啟 E-Mail 寄送 LOG。 1啟動 , 0關閉,如要寄送LOG必須再設定打開 SMTP 25PORT 及 FIREWALL
EMAIL_SERVER=msr.hinet.net
EMAIL_SERVER_PORT=25     
EMAIL_DELAY_INTERVAL=1     #是否延遲寄信
EMAIL_TO=example@gmail.com
EMAIL_ERRORS_TO=example@gmail.com

EMAIL_FROM=root@esxi


9.測試備份 Guest OS:
在 ESXI 主機上輸入: vim-cmd vmsvc 可得看到所有可用的指令
在 ESXI 主機上輸入: vim-cmd vmsvc/getallvms 看到所有的 Guest OS

/opt/ghettovcb/bin/ghettoVCB.sh -g /opt/ghettovcb/ghettoVCB.conf -m VM_NAME      #備份單一個 ESXI Guest OS, VM_NAME指的是在 vSphere Client 看到的 Guest OS 名稱

備份特定 Guest OS :
/opt/ghettovcb/bin/ghettoVCB.sh -g /opt/ghettovcb/ghettoVCB.conf -f /opt/ghettovcb/vmlist -l /tmp/vmbackup_$(date +%F_%H-%M).log      #備份特定 ESXI Guest OS,每個 Guest OS 名稱一行

備份全部 Guest OS :
/opt/ghettovcb/bin/ghettoVCB.sh -g /opt/ghettovcb/ghettoVCB.conf -a -l /tmp/vmbackup_$(date +%F_%H-%M).log     #備份全部 ESXI Guest OS

10.排程備份
修改 root 的排程檔:
vi /var/spool/cron/crontabs/root

新增排程:
30 1 * * * /opt/ghettovcb/bin/ghettoVCB.sh -g /opt/ghettovcb/ghettoVCB.conf -a -l /tmp/vmbackup_$(date +%F_%H-%M).log > /dev/null
或者:
30 1 * * sun,mon,tue,wed,thu,fri,sat /opt/ghettovcb/bin/ghettoVCB.sh -g /opt/ghettovcb/ghettoVCB.conf -f /opt/ghettovcb/vmlist -l /tmp/vmbackup_$(date +%F_%H-%M).log > /dev/null
或者:
30 1 * * 2,4,6 /opt/ghettovcb/bin/ghettoVCB.sh -g /opt/ghettovcb/ghettoVCB.conf -f /opt/ghettovcb/vmlist -l /tmp/vmbackup_$(date +%F_%H-%M).log > /dev/null

存檔時要強制寫入:
wq!



ESXi 再重新啟動後會清除多數的設定檔,包括 root(crontab)、rc.local、service
所以將已修改後的 root crontab 複製一份到 datastore1 並變更檔名為 crontabsroot :

cp /var/spool/cron/crontabs/root /vmfs/volumes/datastore1/crontabsroot

cat /vmfs/volumes/datastore1/crontabsroot

#min hour day mon dow command
1    1    *   *   *   /sbin/tmpwatch.py
1    *    *   *   *   /sbin/auto-backup.sh
0    *    *   *   *   /usr/lib/vmware/vmksummary/log-heartbeat.py
*/5  *    *   *   *   /bin/hostd-probe.sh ++group=host/vim/vmvisor/hostd-probe/stats/sh
00   1    *   *   *   localcli storage core device purge
#30 1 * * mon,tue,thu,fri /opt/ghettovcb/bin/ghettoVCB.sh -g /opt/ghettovcb/ghettoVCB.conf -f /opt/ghettovcb/vmlist -l /tmp/vmbackup.log > /dev/null
30 1 * * 2,4,6 /opt/ghettovcb/bin/ghettoVCB.sh -g /opt/ghettovcb/ghettoVCB.conf -f /opt/ghettovcb/vmlist -l /tmp/vmbackup.log > /dev/null

建立 crondtab.sh :
vi /vmfs/volumes/datastore1/crondtab.sh

#!/bin/sh
#add backup crond shell
/bin/kill $(cat /var/run/crond.pid)
cp /vmfs/volumes/datastore1/crontabsroot /var/spool/cron/crontabs/root
/usr/lib/vmware/busybox/bin/busybox crond

設定防火牆開放 25 port outbound 以及 建立 firewall.sh :
直接修改 /etc/vmware/firewall/service.xml
或新增一個:

vi /vmfs/volumes/datastore1/smtp.xml

<ConfigRoot>
  <service id='id_number'>
  <id>SMTP client</id>
  <rule id='0000'>
  <direction>outbound</direction>
  <protocol>tcp</protocol>
  <porttype>dst</porttype>
  <port>25</port>
  </rule>
  <enabled>true</enabled>
  <required>true</required>
  </service>
 </ConfigRoot>

PS: id_number 不要和 service.xml 裡的 id number 重覆

手動複製到 /etc/vmware/firewall :

cp /vmfs/volumes/datastore1/smtp.xml /etc/vmware/firewall/
esxcli network firewall refresh

可利用 vSphere Client 確認 SMTP 25 Port 是否已開放:


建立 firewall.sh :
vi firewall.sh

#!/bin/sh
#Open SMTP OutBound 25 port
#Firwall rules
cp /vmfs/volumes/datastore1/smtp.xml /etc/vmware/firewall/
esxcli network firewall refresh

將 crondtab.sh 和 firewall.sh 加入開機設定檔 /etc/rc.local.d/local.sh :
vi /etc/rc.local.d/local.sh
新增:
#backup crond
/vmfs/volumes/datastore1/crondtab.sh

#Open firewall SMTP
/vmfs/volumes/datastore1/firewall.sh


重啟 ESXI 後,發現 ghettoVCB.sh、ghettoVCB-restore.sh 居然還原成未修改前的狀態,以及設定檔、OS 備份列表也清除了(是單一事件嗎???????????????????????)

重設完備份起來,以防下次再發生!!!




參考資料:
 :

沒有留言:

張貼留言

Nutanix平台虛擬機(UBUNTU),利用Veeam備份移轉至VMware平台,安裝套件、系統更新出現錯誤

 mount: /var/lib/grub/esp: special device /dev/disk/by-id/scsi-SNUTANIX_VDISK_NFS_4_0_7672_2d41cbaa_025e_4fac_849c_9e620eff5bff-part1 does n...