vSphere VMware ESXi 虛擬主機 ESX 虛擬化 VM 備份

設定排程自動備份 無痛快速還原VM虛擬主機

2013-03-29
接續上一期的文章,本文將說明如何設定ESXi虛擬化平台的排程功能,在指定的離峰時間內自動執行ghettoVCB.sh備份腳本,以達成全自動化的VM虛擬主機備份作業。
在網管人雜誌85期「輕鬆線上備份運作中的VM虛擬主機」一文中已經實作並說明透過William Lam所撰寫的ghettoVCB.sh備份腳本,以類似早期VMware VCB機制的方式,將運作於ESX(i)虛擬化平台上的VM虛擬主機進行完整備份作業,並且線上運作的服務在備份期間也不會中斷。

而本期文章將介紹如何設定ESXi虛擬化平台上的排程功能,使得能夠在指定的離峰時間自動執行ghettoVCB.sh備份腳本,來全自動化VM虛擬主機備份作業。

此外,當VM虛擬主機發生災難事件導致停止服務時,必須在最短的時間內進行災難回復作業,讓VM虛擬主機能夠更快地重新上線服務。

實作環境

排程自動化備份VM

先前的實作是以SSH Client遠端連線的方式,手動連線至ESXi虛擬化平台上,然後再切換路徑至ghettoVCB.sh 備份腳本的儲存路徑,來手動執行備份作業。

通常備份作業對於ESXi虛擬化平台的硬體資源(CPU/Memory/Disk IO)來說多多少少都有所損耗。此外,如果備份後的檔案是要存放於NFS或iSCSI Storage時,還需要透過網路卡來傳輸備份資料,因此也會影響到實體交換器的效能,以及增加網路上的封包數量和碰撞頻率。

基於以上的考量,備份作業一般應該安排在ESXi虛擬化平台負載較低的離峰時間,例如每天的凌晨時分或是週末假日時間才對,但難道還要系統管理人員在這種時間才手動SSH遠端登入後執行備份作業嗎?當然不是!

不過,因為ESXi虛擬化平台並沒有COS(Service Console),因此在排程的設定與Linux based上的Crontab有些許不同,並且ESXi虛擬化平台上的排程執行服務雖然為「crond」,但在ESXi虛擬化平台的執行序Process中是看不到它的。

因為從ESXi 5.0版本開始,crond已經整合到busybox之中,成為一個「連結檔案」並且指向至busybox檔案(/bin/crond -> /usr/lib/vmware/busybox/bin/busybox)。

請修改管理者帳號root的排程檔案「/var/spool/cron/crontabs/root」內容來達成排程設定,排程中共有「分」、「時」、「日」、「月」、「週」五個時間欄位,並接上要執行的指令,下列為時間欄位的意義說明:

  • 分(Minute):代表每小時中第幾分鐘要執行指令,可用數值為0059。
  • 時(Hour):代表每天中第幾小時要執行指令,可用數值為0023。
  • 日(Day):表示每月中第幾天要執行指令,可用數值為1031。
  • 月(Month):代表每年中第幾個月要執行指令,可用數值為1021。
  • 週(Week):代表每週中星期幾要執行指令,可用數值為007(0、7都表示為星期日)。
先將備份腳本執行檔ghettoVCB.sh,以及備份設定檔mybackup.conf複製存放於「/tmp」資料夾下(路徑較短考量),接著修改排程設定檔「/var/spool/cron/crontabs/root」內容指定為「每天凌晨4點」時(圖1)。


▲圖1 查看備份設定檔內容及設定排程檔案。

隨後,執行備份腳本以執行VM虛擬主機的備份作業,並且將備份過程寫入至「/tmp/mybackup.log」日誌檔案中。

讀者可能會覺得奇怪,為何排程設定明明為「0 20 * * *」,照道理來說應該是每天「晚上8點」才對,怎麼會是每天的凌晨4點?

真正的原因是,雖然在vSphere Client管理介面內可以指定ESXi Host主機時間,但事實上採用SSH Client工具遠端登入ESXi虛擬化平台後,使用指令「date」查看系統時間時,會發現ESXi Host時區為「UTC」,也就是格林威治標準時區,而非台灣時區的「UTC + 8」,如圖2所示。


▲圖2 vSphere Client所看到的系統時間與SSH登入查看的系統時間並不在同一個時區。


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!