2011年11月25日 星期五

Windows 下使用 MKSBackup 結合 ghettoVCB.sh 做線上排程自動備份不停機

之前我提過的 兩篇關於 ESXi VMs 備份的文章 中的 MKSBackup,今日也試驗成功,可以在 Windows 下做線上排程自動備份不停機。

這個方式只要打開 ESXi Server 的 SSH port 22 的功能,完全不用自己COPY任何東西到 ESXi Server,省去之前的 pietty & WinSCP 的操作,不要修改 ghettoVCB.sh 中預設的資料夾路徑。

MKSBackup 的下載及安裝請參考 MKSBackup overview ,ghettoVCB.sh 配合 MKSBackup 請參考 Backup VMware ESX(i) using ghettoVCB ,下面僅就簡易設定及排程設定部份說明。

1. mksbackup.ini 設定範例,原本安裝好的 ini 過於繁雜,所以我只改成下面的狀態,不使用 email 發送資料。vm_list 後的 VMs 大小寫有別,要與 ESXi Server 中的名稱一致。



2. Windows 的排程設定範例,這個就不用多說了吧! VMWARE1 是每週一至五備份,VMWARE2 則是設定每週五備份。







3. 排程執行中的畫面。



這裡可以看出正在執行不停機備份的部份。



 

 

32 則留言:

  1. 請問一下這個的備份位置是在 ghettoVCB.conf 裡的 VM_BACKUP_VOLUME=/vmfs/volumes/NAS01/backup
    這邊去設定的嗎?
    文章中…你提到不要修改 ghettoVCB.sh 中預設的資料夾路徑
    是說,如果是使用這個方法,ghettoVCB.sh 都不用做任何的修改嘍?

    另外,你一次備份四個 vm…是備在本機的另外目錄上,還是其他空間啊?這樣的四個 vm 同時備份整個環境的 loading 是能承受的嗎?

    感覺這個方法更方便了…謝謝你的分享

    回覆刪除
  2. 1. 基本上就是修改之前提過的 ghettoVCB.sh 與 ghettoVCB.conf 中相關的3行即可
    2. 因為我在操作 ghettoVCB.sh 為了方便分別 LOGs, vm_list, TEMP 等相關的內容,曾經修改了在 ESXi Server 下的 ghettoVCB.sh 的內容,而MKSBackup 可以沿用一樣的 ghettoVCB.sh,只要修改 1. 中的3行就好,我之前MKSBackup 一直失敗就是我沿用 ESXi Server 下的 .sh,路徑有誤
    3. 雖然一次備份4個 vm,可是同一時間只會備份一個 vm,所以 loading 沒有問題,又加上是非上班時間備份,OK的啦;即使是使用中備份,因為我是兩台不同的NAS,一個讀,一個寫,影響不大

    回覆刪除
  3. 雖然一次備份4個 vm,可是同一時間只會備份一個 vm

    請問一下這句話是說,就算你的 vm_list 底下有 4 個 vm
    他是會先備份完第一個後,才會進行第二個嗎?

    VDR好像就會同時間備份

    回覆刪除
  4. 是的,同一個時間用 ghettoVCB 只會備份一個 VM,VDR2會同時備份。我會比較喜歡用 ghettoVCB 的原因是備份出來的東西,可以直接就做加入 Server 的方式加入,VDR2 則是要用 VDR2 的 restore 方式,而且 VDR2 的檔案要備份也麻煩。

    回覆刪除
  5. C:\Magik\MKSBackup\mksbackup.exe -q -l "C:\Magik\mksbackup.log" -c "C:\Magik\mksbackup.ini" backup BACKUP_VM

    請問指令中,最後的 backup BACKUP_VM ,BACKUP_VM 是不是要對應到你第一張圖中的 mksbackup.ini 裡的 [VMWARE1] [VMWARE2]嗎?

    回覆刪除
  6. 嗯! 是的! 因為我是不同時程要備份不同的 VMs,所以那個 BACKUP_VM 就是 mksbackup.ini 定義的 VMWARE1 or VMWARE2,這個名稱可以自定啦。

    回覆刪除
  7. 那再請教
    圖一中的 global_conf=ghettoVCB.conf 是否可以針對每個備份檔讀取不同的 conf 檔

    例如:圖中 [VMWare 1] 設定 global_conf=ghettoVCB1.conf
    [VMWare 2] 設定 global_conf=ghettoVCB2.conf

    因為備份位置是設定在 ghettoVCB.conf 裡
    為了讓備份的 VM 存在不同的儲存空間,是否是這樣來設定...

    回覆刪除
  8. 基本上是如此,當然也可以用不同的 ghettoVCB.sh,因為裡面就有路徑的設定,我是用不同的 shell script;而這個 global_conf 是 MKSBackup 的參數,並不是 ghettoVCB 原有的設定,所以這部份我無法確定,等晚一些我再試試看!

    回覆刪除
  9. OK! 剛剛實驗過了,的確會依照 global_conf 的設定去執行不同的conf 檔案。所以您要備份到不同的位置,可以用這種方式。不過要記得要把所有的 conf 檔都放置到與 ghettoVCB.sh 同樣的資料夾 vmware 下,因為 MKSBackup 是把整個 vmware 的資料夾複製到 ESXi Server 的 /tmp 下的。

    回覆刪除
  10. 突然想到一個問題,就是備份路不是寫在VM_BACKUP_VOLUME=/vmfs/volumes/xxx/xxxx 底下
    我的問題是,ghettoVCB.sh 及 ghettoVCB.conf 兩個檔案底下都有
    如果我要備份到不同路徑,是2個都要改?

    回覆刪除
  11. http://blog.slps.tp.edu.tw/00086/?p=366
    你在這篇有提到,ghettoVCB.sh 及 ghettoVCB.conf 這兩個檔的修改的三行要一致.
    所以,他執行 ghettoVCB.sh 時,他會以 global_conf=ghettoVCB2.conf 裡所設定的路徑為主嗎?

    回覆刪除
  12. 如果是用 MKSBackup 會以 mksbackup.ini 中的 global_conf 的設定為主,不用改 ghettoVCB.sh 的備份路徑,我在測試的時候故意設定了一個不存在的目錄,最後還是會依照 mksbackup.ini 中的設定。

    回覆刪除
  13. 如果是用 MKSBackup 的話,原來的 ghettoVCB.sh 的路徑不必改,MKSBackup 會依照 mksbackup.ini 中的 global_conf 的設定帶入備份路徑。

    回覆刪除
  14. 您好:
    感謝你分享這個備份方式,目前也成功了
    但是我的vm中,有一台一直備不出來(總共備了8個VM)
    在備份的目錄底下,有一個 STATUS.error 的檔案
    裡面只寫 ERROR: Unable to backup blog due to error in VMDK backup

    除了這個 log 外,我還能到那邊去看 log 的備份紀錄…

    回覆刪除
  15. 因為 ghettoVCB 採用建立 VM Snapshot 的方式,然後備份 Snapshot,有可能是那個 VM 第一次建立 Snapshot 後備份失敗(?),沒有刪除 Snapshot,之後當 ghettoVCB 要建立 Snapshot 時就會一直失敗,所以無法備份! 查一下那個 VM 下的檔案中是否有類似 snapshot 的檔名,用 Snapshot Manager 去移除之後再備份看看吧!

    看 log 紀錄檔如果沒有改任何 path 的話,應該是在 /tmp 下。

    回覆刪除
  16. 找到原因了
    The destination file system does not support large files (12)

    我開的這個 vm 檔案空間大於我本機上的硬碟空間…
    雖然這個 vm 是用 thin 的方式開的,也沒用那麼多空間…但是好像還是不能備份...

    回覆刪除
  17. 喔! 了解! 那就是 Storage 剩下的空間不夠用,即使 VM 壓縮備份也放不下,改個空間吧!
    不過用 thin 的方式執行 VM,速度上就是感覺慢,所以後來只要硬碟空間夠大,不用 thin 的方式,尤其是有跑資料庫的時候!

    回覆刪除
  18. http://4sysops.com/archives/vmware-backups-troubleshoot-the-consolidate-helper-0-backup-error/

    我的vm出現了這樣的錯誤訊息,請問一下,是因為這個備份方式造成的嗎?
    snapshot檔案會越來越多,而且刪不掉...
    不知道該如何解決…謝謝

    回覆刪除
  19. 這個比較像是備份後沒有刪除 snapshot 的問題,我記得我在測試 MKSBackup時,備份OK後,程式會自動刪除備份時建立的 Snapshop 檔案,在 ESXi 內或是 Windows 下都沒問題,除非一開始就有問題,所以後來備份時都會不正常,如果刪不掉,先把那個 VMs 先關機,然後用 Snapshop management 刪除看看! 到目前為止,用了幾個月都還沒這種問題,不過我是直接在 ESXi Server 下執行!

    回覆刪除
  20. 關機後,還是沒辦法把snapshot的檔案刪除…
    關機刪,雖然不會出現lock的訊息,但是檔案還是都在

    只好匯出ova,然後在匯入…就解決這個問題了

    回覆刪除
  21. 嗯! 因為沒有碰過這樣的問題,所以無法回答完整! 解決就好,匯出 OVA 再匯入的確可行! 還是把備份程式直接放入 ESXi 下執行比較不容易出錯啦!

    回覆刪除
  22. 請問這再 vmware 5.0 的版本還能使用嗎?
    之前備份,目錄底下都會產生一個 Status-ok 的檔案,但 5.0 卻沒有

    回覆刪除
  23. 可以的! 因為有其他學校的老師就是在 Windows 下使用,不過我個人比較偏好直接在 ESXi 下使用啦! 而我這篇就是在 ESXi 5 下實作的!

    回覆刪除
  24. 我並不是完全備不出來,重要的檔案 vmx vmdk 都有產生
    但就是最後的status.ok檔案沒辦法產生
    也會導致排程一直顯示執行中,也沒辦備下一個 VM
    不知道你是否有遇過這樣的情況..

    程式的檔案在4.1的版本是ok的..

    回覆刪除
  25. 我發現我的指令會卡在 removing snapshot from dns1...
    就不會在往下了

    回覆刪除
  26. 我發現,我必須手動去把 snapshot 給移除後,程式才有辦法繼續往下,產生status.ok的檔案?
    是我 esxi 必須開啟什麼功能嗎?

    回覆刪除
  27. 因為我不是在 Windows 下以 MKSBackup 方式去執行 ghettoVCB.sh,基本上在 ESXi 5 Server 下執行 ghettoVCB.sh 沒有發生過這樣的狀況! 還有 ghettoVCB.sh 有過最後的更新版,應該是去年7月吧。

    回覆刪除
  28. 之前有網友好像有過類似的情況,也是 snapshot 無法自動刪除,最後是以 ovf 方式匯出,然後刪除該 VM,最後再重新匯入的方式就解決這個問題了! 您可以試試看!

    回覆刪除
  29. 請問那邊可以下載到新版的 ghettovcb.sh 檔啊?
    我是到下面這個連結下載的
    http://www.magikmon.com/mksbackup/download.en.html

    你的版本也是 ghettovcb.sh 第2行是 - Created Date: 11/17/2008 嗎?

    回覆刪除
  30. 我的 ghettoVCB.sh 是在 這裡 下載 .zip 檔的! 看裡面的 pack date 是 2011/11/28。裡面還有 restore 的程序! 不過第二行的日期是如你所POST的! 您可以試試看我回覆的其他網友的做法看看是否可行?!

    回覆刪除
  31. 找到問題了,原來的版本是 ghettoVCB.sh version is: 2011_06_28_1
    而你的連結是 ghettoVCB.sh version is: 2011_11_19_1
    換了這個新的 ghettoVCB.sh 就正常了…看來應該是版本的 bug

    但是 log 會出現底下這行字
    This version of ghettoVCB.sh (2011_11_19_1) script has not been tested with MKSBackup, be warned ! Check the download page for more.

    MKSBackup 也還沒有更新檔,網頁上認可的版本是 2011_06_28_1
    雖然有出現這個警告,但還是可以正常的備份

    回覆刪除
  32. 哈! 解決問題就好了! 恭喜!

    回覆刪除