2010年5月31日 星期一

第六回 VMWARE 的 VCB 搭配備份軟體使用,以 TSM 為例

VMWare 搭配 VCB 再搭配 TSM 有幾種做法,一種是從 TSM Client 6.1 的設定裏面設定,看書上寫的好像要設定什麼 Proxy Node ,有點不太懂,所以我就沒有使用這個方法。

另外的話就是使用 VMWare 提供的 TSM Integragtion 的工具,我後來就是使用這個方法,因為看起來好像比較簡單一點,接下來就來說說大概的說法,首先去 VMWare 官方下載 VMware Consolidated Backup 這包工具,其實他是由 WSH 組成的,意思就是 VMWare 己經寫好一套方法,讓你可以用很簡單的指令去 Mount 來自 ESX 上面的 Filesystem ,無論是透過 LAN 或 SAN 。

http://www.vmware.com/support/vi3/doc/releasenotes_vcb103.html

記得除了這個工具,原有的 VCB Backup (又稱 VCB Proxy)的工具原本就必須要安裝,安裝方式和路徑就不再提了。

安裝完成後在 c:\Program Files\VMware\VMware Consolidated Backup Framework\config \ 下可以找到 config.js 這個設定檔,裏面重要的參數有

BACKUPROOT="E:\\mnt1";備份之 VMDK 檔放置路徑

HOST="VC Server IP address";備份之 ESX 主機或 VC 主機之TCP/IP 位置

USERNAME="tsmuser";備份之 ESX 主機或 VC 主機之使用者名稱

*PASSWORD="passw0rd";上列使用者之密碼,如使用Register 的方式註冊,不需提供此參數,但在 Register 裏面密碼仍然是明碼顯示

TRANSPORT_MODE="san";傳輸模式,預設為 SAN,我試過在 Gigabit Ethernet 的環境和 SAN 的速度差異應該近十倍,非常建議使用 SAN 的模式,前提是你的 VMESX 的 Guest Host 的 Lun 要在 SAN Disk 上面,但有用 VMWare ESX 的人應該都會有好幾台 ESX 做 VMotion ,這應該不是什麼問題。

VM_LOOKUP_METHOD="name";VM找尋方式,預設為 ipaddr ,目前設定為 name


首先你需要在 VC 上面建立一個 User ,必須有 VCB Backup 的權限,將使用者名稱及密碼設定在上述參數中。

設定完成後就可以透過 pre-command vcb 及 vmname 去備份你的 VM ,這隻程式會透過呼叫 VC 去觸發你的 ESX 完成 Snapshoot 的動作,然後用 vcbmount 把 VM 的 Image Copy 到你所設定的目錄上,再由 TSM 將該目錄完整的備份下來即可。

為此我寫了一個 Windows 的批次檔,目標是完成,檢查 e:\vmesx2.lst 裏面提供的 VM 清單,並觸發 vcbmounter 去備份清單中每個 VM Guest 的 Image 內容。另外在前面加了一段會將前一次備份的內容先行移轉到 e:\mnt2 去,如此確保在這台 VCB Server 上面會有最新的兩次備份內容(一份在 e:\mnt1,一份會在 e:\mnt2),批次檔內容如下:

@echo off
REM TSM 環境變數設置
set DSM_CONFIG=C:\Program Files\Tivoli\TSM\baclient\dsm.opt
set DSM_DIR=C:\Program Files\Tivoli\TSM\baclient
set DSM_LOG=C:\Program Files\Tivoli\TSM\baclient

REM 備份前置部驟,刪除硬碟中前兩次備份資料,另將上次備份資料轉移至 e:\mnt2
for /f "delims==" %%i In (e:\vmesx2.lst) do rmdir e:\mnt2\%%i /s/q
for /f "delims==" %%i In (e:\vmesx2.lst) do move e:\mnt1\%%i e:\mnt2\%%i

REM 執行 VCB 程序,開始備份 e:\vmesx2.lst 中所列出之 Guest Host 之 VMDK 檔至 e:\mnt1
for /f "delims==" %%i In (e:\vmesx2.lst) do call pre-command vcb %%i

REM 執行 TSM備份 程序,開始備份 e:\vmesx2.lst 中所列出之 Guest Host 於 e:\mnt1 中對應之目錄
for /f "delims==" %%i In (e:\vmesx2.lst) do dsmc incr e:\mnt1\%%i -subdir=yes

REM 檢查 TSM備份結果,導出至 e:\tsmlog\vcb_backup_esx02.log
for /f "delims==" %%i In (e:\vmesx2.lst) do dsmc q backup e:\mnt1\%%i\* >> e:\tsmlog\vcb_backup_esx02.log


vmesx2.lst之內容如下:
XXX01-FullVM
XYZ01-FullVM
ABC01-FullVM


使用 VMware Consolidated Backup Framework 的規則就是你要備份 Snap Shoot 的VMDK Image 時,給的 VM Name 必須要加上 -FullVM 的關鍵字,他就會自動轉換為對應的 VcbMounter 指令。

原本我這個 Job 是 Work 的,但在客戶端,我遇到問題了。

因為客戶隨時會把 VM 移來移去,或者換名字換 IP ,甚至原本己在 SAN Disk 裏面的 VMDK 檔在客戶移動後變成在 Local Disk ,造成了幾個問題如下:

1.可能是客戶換網段,換名字,造成 VMTOOLS 好像有點問題,使用 VCBVMNAME 都 Scan 不到該 VM ,這時可能要移除 VMTOOLS ,再重新安裝,讓VCBVNMAME 至少要看的到這個 VM 才能進行備份,記住,從 VC 上看的到該 VM 仍然是不足夠的。

2.因為客戶會將 VMDK 從 SAN 的 Disk 移到 Local 的 Disk,造成我原本己設定成 SAN Disk 備份的屬性己可備份結果又變成不能備,針對這點用 pre-command 就無法隨時變來變去了,我寫 Windows Batch 的技巧還沒這麼出神入化,最後我決定告訴客戶,在你這個隨時會變化的環境,可能必須要自己手動備份才有辦法。

唉....花了大把心力幫客戶完成的方案結果無法使用,不過還是公佈個大概給大家瞧瞧。其實這個作法應該是用別的備份軟體也能做,不限於 TSM 吧。反正就是先把 VMDK 檔備份下來,再由 TSM 備走而己。

沒有留言:

張貼留言