微軟Hyper-V備份方式

現今許多企業內部的虛擬化已算是很普及了,在一般中小企業內使用微軟的平台應該還是大宗,不少的IT也因此會使用搭配Windows Server 2008內建Hyper-V來做企業內部的VM Server。

Hyper-V


VM的好處這邊不多說,只是VM好用歸好用,但多數IT卻會忽略把雞蛋放在同一個籃子裡會造成的後果。一台VM上面掛載4、5個Guest OS應該是司空見慣的事情,然而一旦這台VM出了狀況連帶著影響也是4、5台主機的服務,通常解決這樣的方式不外乎就是做HA、Cluster搭配Storeage的架構服務來解決,但這樣的方式對於一般中小企業來說,可能是一筆很大的開銷(弄完大概也要5、60萬),若建置VM的主機若是常見的品牌 (如IBM、HP、Dell等)似乎也沒這麼容易掛點,要這樣說服老闆拿錢出來建置恐怕也有一定的難度。(所以乾脆不要動,什麼事情都沒有,才是最好的狀態)

但該做的還是得做,走到哪都一樣的就是基本的備份/還原,一般若我們做備份,陽春一點的作法可能就是用內建的Windows Backup來做,敗家一點的就是買備份軟體搭配磁帶或是儲存設備,但主機VM化之後,我們可以很

偷懶的

直接把映像檔給備份起來,若未來該台VM主機掛掉,就可以很直接的把檔案丟到其他主機上給掛載起來,省去不少時間與繁瑣的設定。

要把VM的映像檔備份起來其實不是太大困難,只要有錢買不管用什麼備份軟體一定都可以做到,但執行時可能需要考量幾個問題:

  1. 服務啟動時,能否備份?
  2. 備份完後的檔案格式是該程式的格式還是原本檔案的格式?
  3. 還原系統是否會有不同硬體造成設定要更改的問題?


前面提到很偷懶的解決方式,大概就可以避開上述考慮的問題,只要有夠大的儲存空間跟利用深夜時間即可達到備份方式,而且還不用考慮花錢敗家,以下筆記提供給有需要的人參考。

一、確認Powershell是否能正常執行
首先這個備份方式是透過微軟的Powershell來使用,所以執行前請先確定你的Powershell在執行上是否有問題,若你是第一次執行Powershell的話可能會出現下列這個狀況:

圖片 1


不過這問題也好解決,只要執行這行指令即可
Set-ExecutionPolicy RemoteSigned

圖片 2



二、更改設定檔
有需要的人可以直接下載檔案,直接更改即可,畢竟改人家的東西比自己寫還來得快,檔案位置

在這裡

,下載解開檔案後,一共有五5個檔案,需要更改的只有3個,分別是VmBackup.bat、VmNamesStart.txt、VmNamesStop.txt

VmBackup:此為備份執行檔,若執行沒問題則放入排程內,定時去做備份
VmNamesStart / VmNamesStop:這兩個檔案是用來啟動/停用的主機名單,裡面只需填入Hyper-V的Guest OS的主機名稱即可

image



接著打開VmBackup來看看,可以看到程式執行的流程是這樣的

呼叫Powershell,並查看VmNamesStop的清單去把VM給暫停,接著執行備份,最後在依照VmNamesStart的清單給啟動。

image



然而這樣的備份方式我覺得不是太妥,因為只備份Hyper-V的.VHD檔,設定檔並沒有備份到,所以我依照上述內容改了一下指令,下面可以看到我改用XCOPY的方式,把子資料夾一併備份進來,這樣未來移到其他台主機時,就不用額外設定,只需要用匯入的方式即可。

image



另外要特別注意的是,該資料夾預設是放在C:\Scripts\vmbackup的位置,若要更放在其他位置,需在手動把檔案路徑給更改

image



參考資料:
How to backup Hyper-V Virtual Machines with a batch script