在咱們進行實時遷移設置前,首先要進行配置約束委派,由於Hyper-V實時轉移提供了兩種驗證通訊協議,預設爲CredSSP,另外一種是Kerberos委派。不過相對比較安全的Kerberos委派能夠阻絕任何不明啓用的服務器使用委派,因此建議使用。若是使用Kerberos委派來驗證明時遷移,那就必需要先設定限制委派,而後才能夠繼續其他的步驟,並且還要必須使用Domain Administrators羣組成員的帳戶在Active Directory的Computers設置限制委派。若是使用CredSSP,那就不須要進行設定委派。shell
步驟1 打開「Active Directory 用戶和計算機」管理單元。從服務器管理器 (SM) 中執行該操做,打開「Active Directory 用戶和計算機」管理單元。從導航面板中選擇域,而後雙擊「Computers」文件夾。在「Computers」文件夾中,右擊源服務器的計算機帳戶,而後在彈出的快捷菜單中選擇「屬性」命令。安全
步驟2 在接下來彈出的「屬性」對話框中,單擊「委派」選項卡。在「委派」選項卡下選擇「信任僅委派到特定服務的計算機」。在該選項下面,選擇「僅限使用 Kerberos」。單擊「添加。服務器
步驟3 在接下來彈出的「添加服務」對話框中,單擊「用戶或計算機」按鈕。網絡
步驟4 在「選擇用戶或計算機」對話框中的「輸入對象名稱來選擇」文本框中鍵入目標服務器的名稱,單擊「檢查名稱」按鈕以驗證你輸入的名稱是否正確,若無誤,則單擊「肯定」按鈕。架構
步驟5 在「添加服務」對話框,在可用服務列表中執行如下步驟,而後單擊「肯定」。要移動虛擬機存儲器,請選擇 cifs。若是要同時遷移存儲器與虛擬機,並且僅遷移虛擬機的存儲器,則須要執行此步驟。若是將該服務器配置爲使用Hyper-V的SMB存儲器,則應首先選中該選項。要遷移虛擬機,選擇「Microsoft 虛擬系統遷移服務。併發
步驟6 在「屬性」對話框的「委派」選項卡上,肯定上一步選定的服務列在目標計算機能夠爲其提供委派證書的服務中,而後單擊「肯定」按鈕。ide
委派要在域中的每臺Hyper-V主機中都要添加相應的委派,否在會在遷移過程當中報錯。如在Hyper-V02中,就須要信任Hyper-V01中的Kerberos協議,並指定相應的服務類型。操做步驟與以前的相同。若是隻設定一方,那就只能將虛擬機遷移過去,但卻沒法遷移過來。性能
下面咱們用Powershell的方式進行委派,可是Powershell方式的委派很是麻煩,幸運的是在TeachNet Blogs中有提供了一個Set-KCD.ps1腳本文件,該腳本簡化了煩瑣的委派步驟,其地址爲:http://blogs.technet.com/b/matthts/archive/2012/06/10/configuring-kerberos-constrained-delegation-for-hyper-v-management.aspx測試
從Blogs上咱們能夠下載到Set-KCD腳本文件,下載以後解壓後會有兩個文件,一個是Set-KCD.ps1和Set-KCD.Zip。在解壓Set-KCD.Zip後,會發現裏面還有個Set-KCD.ps1,第二個Set-KCD.ps1文件大約9.2KB,第一個Set-KCD.ps1大小則爲3KB,其實兩種Set-KCD.ps1都能實現一樣的效果,差異就是文件較大的Set-KCD.ps1文件包含服務類型的名稱。3d
首先我先看大小爲3KB的Set-KCD.ps1文件,其代碼如圖所示。
接下來咱們看大小爲9.2KB的Set-KCD.ps1文件,因爲代碼過長,這裏只給出了部分代碼,可自行下載後查看,其代碼如圖所示。
瞭解了Set-KCD腳本文件,在準備執行Set-KCD.ps1腳本文件以前,還須要進行一步操做,不然會在執行的過程當中會出下沒法加載文件的狀況。
遇到這種事情是因爲Set-KCD不是Windows Powershell內建的指令,因此必需要解除限制,設定爲無限制才能執行。設置完成後,咱們還能夠恢復Windows Powershell內建的指令限制。首先使用Powershell命令Set-ExecutionPolicy Undefined,目的是下降Windows Powershell安全性,當執行完成後,可使用Powershell命令Set-ExecutionPolicy RemoteSigned恢復其安全性。
下面咱們就來設置mabofeng.com域中的Hyper-V01信任委派Hyper-V02的服務類型CIFS。將9.2KB大小的Set-KCD.ps1文件拷貝到C盤下,使用的Powershell命令爲
.\SetKCD.ps1 –TrustedComputer Hyper-V01 –TrustingComputer Hyper-V02 –ServiceType CIFS –Add
若是要將3KB大小的Set-KCD.ps1文件拷貝到C盤下,使用的Powershell命令爲:
.\SetKCD.ps1 –AdDN 「cn=Hyper-V01,cn=computers,dc=mabofeng,dc=com」 –HostFQDN Hyper-V02.mabofeng.com –Service CIFS –Add
接下來設置mabofeng.com域中的Hyper-V01信任委派Hyper-V02的服務類型Microsoft Virtual System Migration Service。將9.2KB大小的Set-KCD.ps1文件複製到C盤下,使用的Powershell命令爲:
.\SetKCD.ps1 –TrustedComputer Hyper-V01 –TrustingComputer Hyper-V02 –ServiceType 「Microsoft Virtual System Migration Service」 –Add
若是要將3KB大小的Set-KCD.ps1文件複製到C盤下,使用的Powershell命令爲:
.\SetKCD.ps1 –AdDN 「cn=Hyper-V01.cn=computers,dc=mabofeng,dc=com」 –HostFQDN Hyper-V02.mabofeng.com –Service 「Microsoft Virtual System Migration Service」 –Add
複製完成後,進行設置信任委派,咱們可使用以下命令:
Get-AdObject 「cn=Hyper-V01,cn=computers,dc=mabofeng,dc=com」 –Properties msDSAllowedToDelegateTo
在域控中設定完成委派後,接下來就是設定轉移的來源和目的地Hyper-V主機了。設定來源和目的地服務器目的是,讓它們能夠傳送和接收實時遷移。當設置服務器的時候,有兩種方案可供選擇:在任何可用網絡容許實時遷移的流量或只在指定網絡上容許實時遷移的流量。最安全作法就是指定專用的網絡負責實時遷移的網絡流量。要在非羣集Hyper-V主機上開啓實時遷移,只要在Hyper-V主機的Hyper-V設置中進行設置便可。
在Hyper-V實時遷移設置中,首先勾選「啓用傳入和傳出的實時遷移」,並選擇身份驗證協議。身份驗證協議分爲兩種:一種是使用憑據安全支持提供程序(CredSSP),這種身份驗證協議必須登陸到服務器才能執行實時遷移,因此不是最佳的選擇;而另外一種方式是採用Kerberos,這種方式更爲安全,在域控中咱們已經設置了採用Kerberos委派,並設定了cifs和Microsoft 虛擬系統遷移服務。在「指定所容許的並行實時遷移數量」中輸入容許的數量。
接下就是設置傳入實時遷移的網絡狀況,這裏也有兩種選擇:一是使用任何可用的網絡進行實時遷移,這種方式能夠利用全部Hyper-V主機之間的網絡,可是因爲發生實時遷移後,對網絡的壓力較大,給其它網絡中的業務形成壓力;二是使用指定的IP地址進行實時遷移,這也是咱們要選擇的方式。單擊圖6-16中的「添加」便可設置IP地址,單擊「編輯」便可修改實時遷移IP地址。
若是是Microsoft Hyper-V Server 2012,沒法經過GUI界面設置實時遷移,那麼咱們也能夠經過Powershell的方式設置Hyper-V的實時遷移,主要的命令包括:
啓動傳入和傳出的實時遷移,命令以下:
Enable-VMMigration
停用傳入和傳出的實時遷移,命令以下:
Disable-VMMigration
查看傳入和傳出的實時遷移狀態(見圖6-17),命令以下:
Get-VMHost
使用憑據安全支持提供程序(CredSSP),命令以下:
Set-VMHost –UseAnyNetworkForMigration $ture
指定使用IP地址爲192.168.1.201進行實施遷移,命令以下:
Add-VMMigrationNetwork 192.168.1.201/32
指定使用IP段均可以進行實施遷移,命令以下:
Add-VMMigrationNetwork 192.168.0.0/32
查看傳入和傳出的實時遷移IP地址,命令以下:
Get-VMMigrationNetwork
將192.168.1.201的前後順序調到3,命令以下:
Set- VMMigrationNetwork 192.168.1.201/32 –NewPriority 3
在Hyper-V設置中,還須要進行設置的就是存儲遷移的併發遷移量,設置容許存儲遷移的併發數量。
除了在Hyper-V主機上要設置實時遷移之外,要注意在虛擬機的設置中,必定要勾選「將虛擬機遷移到具備不一樣處理器版本的物理計算機」選項,若是不勾選這個選項,在遷移到不一樣版本的CPU時候,會出現錯誤,致使遷移失敗。
實時遷移具備不少種類:
具備共享存儲的實時遷移,就是虛擬機運行在具備共享存儲的磁盤中,兩臺Hyper-V並不是是羣集關係,能夠將虛擬機實時遷移到另一臺主機上,在遷移過程當中可保證虛擬機不關機、不重啓,服務器不中斷,確保業務的正常運行。
另一種遷移是運行在一臺Hyper-V主機中,改變虛擬機的存放位置,將虛擬機的存放位置從一個磁盤遷移到另外一個磁盤,一樣的,在遷移過程當中虛擬機不關機、不重啓,服務器不中斷,保證業務的正常運行。
最後一種就是當虛擬機運行在單臺Hyper-V主機時,將單臺Hyper-V主機中的虛擬機遷移到另一臺Hyper-V主機,而且這兩臺Hyper-V主機並無共享存儲,也就是說,要同時遷移虛擬機和虛擬機存放的磁盤位置。
不管是哪一種遷移,將虛擬機遷移到另一臺主機上時候,轉移虛擬機基本上包括了轉移虛擬機的快照、當前配置、智能分頁和虛擬硬盤,若是是遷移虛擬存儲文件,還能夠指定將虛擬機磁盤存放到不一樣的目錄上。但這裏要注意的就是,當遷移虛擬機到另一臺主機上時,若是虛擬機使用的是DHCP,那麼在遷移完成後,IP地址可能會發生變動,因此最好將虛擬機的IP地址設置成爲固定的形式。在兩臺Hyper-V主機上進行遷移時,若是兩臺主機的虛擬交換機名稱不一樣,則也可能發生遷移失敗。
下面咱們就來介紹如何進行具備共享存儲的實時遷移,。相對於其它遷移方式,這種遷移速度是最快的,若是虛擬機存放在共享存儲中,而共享存儲是採用SMB3.0就能夠順利的遷移,若是是早期的Hyper-V版本,則沒法使用具備共享存儲進行實時遷移。這裏還要注意,共享存儲必須具備Hyper-V的Administrator的權限,並設置授予徹底控制。不然在遷移虛擬時候會發生錯誤。
步驟1 在Hyper-V管理器中,右擊選擇要遷移的虛擬機,在以後彈出的快捷菜單中選擇「移動」命令。
步驟2 在遷移「新建虛擬機」嚮導中,點選「移動虛擬機」選項,而後單擊「下一步」按鈕。因爲採用的是共享存儲,因此就不必移動虛擬機的存儲了。
步驟3 在指定目標的計算機界面上,輸入指定目標計算機的名稱,或者經過單擊「瀏覽」按鈕在域中查找到要遷移的目地虛擬主機,以後單擊「下一步」按鈕。
步驟4 在選擇移動虛擬機後,能夠在「選擇移動選項」界面中選擇如何使用虛擬機遷移項目,這裏包括以下選項:
「將虛擬機的數據移動到一個位置」選項,此選項將遷移虛擬機到所指定的一個位置,這裏的意思是遷移快照、智能分頁、虛擬機配置文件和虛擬機的虛擬硬盤,將這些文件指定一個位置。
「經過選擇項目移動位置來遷移虛擬機的數據」選項,這裏的意思是將遷移快照、智能分頁、虛擬機配置文件和虛擬機的虛擬硬盤分別指定存放的位置。這種選項和上一個選項能夠手動或者自動選擇虛擬機的存放位置,若是無需移動虛擬機虛擬硬盤,則指定路徑時,將虛擬機的虛擬硬盤指定到源地址便可。
「僅移動虛擬機」選項,將虛擬機的文件除了虛擬機的虛擬硬盤以外的文件進行遷移,遷移後的虛擬機存放在系統默認的地方。
這裏咱們選擇「僅移動虛擬機」選項。
經過Powershell也能進行虛擬機的遷移,使用命令Move-VM。首先咱們先查看在Powershell中的遷移虛擬機的命令語法。
命令Move-VM的語法中包括了:
-SmartPagingFile: 智能分頁處理。
-AnapshotFile :快照文件。
-VirtualMachine: 虛擬機配置文件。
-VHDs :虛擬機的虛擬硬盤。
經過Powershell命令能夠將新建虛擬機從Hyper-V01主機上遷移到Hyper-V02主機上,使用的命令爲:
Move-VM 「新建虛擬機」 Hyper-V02
能夠將新建虛擬機從Hyper-V01主機上遷移到Hyper-V02主機上,並指定虛擬機的虛擬硬盤路徑在C:\TestVM,其命令爲:
PS C:\>Move-VM 「新建虛擬機」 Hyper-V02 –IncludeStorage –DestinationStoragePath C:\TestVM
能夠將新建虛擬機從Hyper-V01主機上遷移到Hyper-V02主機上。並指定智能分頁處理、快照文件、虛擬機配置文件和虛擬機的虛擬硬盤路徑,使用的命令爲:
PS C:\>Move-VM 「新建虛擬機」 Hyper-V02 –VirtualMachinePath D:\TestVM\Config –SnapshotFilePath D:\ 新建虛擬機\Snapshots –SmartPagingFilePath D:\ 新建虛擬機\SmartPaging –IncludeStorage –VHDs @(@{「SourceFilePath」 =「C:\ 新建虛擬機\Disk1.VHDX」; 「DestinationFilePath」 = 「D:\ 新建虛擬機\Disks\Disk1.VHDX」}, @{「SourceFilePath」 = 「C:\ 新建虛擬機\Disk2.VHDX」; 「DestinationFilePath」 = 「D:\ 新建虛擬機\Disks\Disk2.VHDX」})
存儲實時遷移是將虛擬機的存放位置從一個地方遷移到另外一個地方,好比能夠將虛擬機的存放位置從C盤遷移到D盤,或者將虛擬機硬盤遷移到共享存儲上面,也能夠將虛擬機在共享存儲中的不一樣LUN之間相互遷移,在遷移過程當中,虛擬機不會出現中斷。可是因爲存儲實時遷移包括了遷移虛擬機的快照、智能分頁、虛擬機配置和虛擬機的虛擬硬盤,因此遷移過程是比較慢的,具體速度取決於咱們存儲網絡和磁盤速率。固然,在虛擬機關機的狀況下,速度要比開機時候遷移的要快。
步驟1 在Hyper-V管理器中,右擊選擇要遷移的虛擬機,在以後彈出的快捷菜單中選擇「移動」命令。在遷移「新建虛擬機」嚮導中,選擇「遷移虛擬機的存儲」選項,因爲是在同一臺主機上,就不必移動虛擬機了。
步驟2 在選擇移動虛擬機存儲後,能夠在「選擇移動選項」中選擇如何使用虛擬機存儲遷移項目,這裏包括的具體選項有:
「將虛擬機的數據移動到一個位置」選項,此選項將遷移虛擬機到所指定的一個位置,這裏的意思是遷移快照、智能分頁、虛擬機配置文件和虛擬機的虛擬硬盤,將這些文件指定一個位置。
「將虛擬機的數據移動到其餘位置」選項,即經過選擇項目移動位置來遷移虛擬機的數據,這裏的意思是將遷移快照、智能分頁、虛擬機配置文件和虛擬機的虛擬硬盤分別指定存放的位置。這個選項和上一個選項能夠手動或者自動選擇虛擬機的存放位置。
「僅移動虛擬機的虛擬硬盤」選項,對虛擬機的虛擬硬盤文件進行遷移,遷移後的虛擬機存放在系統默認的地方。
這裏咱們選擇「僅移動虛擬機的虛擬硬盤。
步驟3 在選擇要移動的項目中會列出虛擬機中的全部虛擬硬盤,能夠將虛擬機中的虛擬硬盤所有勾選上而後能夠進行遷移,也能夠遷移其中的一些虛擬硬盤,可是不建議將一個虛擬機的硬盤遷移到不一樣的目錄中。這裏的新建虛擬機只有1塊硬盤,咱們就選擇遷移此虛擬硬盤。
步驟4 爲虛擬機中的虛擬硬盤選擇遷移的目標路徑,從圖6-30中能夠看出,新建虛擬機的當前位置在C盤下面,在「新位置」中單擊「瀏覽」按鈕選擇路徑或者直接輸入路徑,如果輸入路徑的地址下沒有輸入的文件夾,則會自動建立文件夾。
步驟5在摘要中查看要遷移虛擬機的路徑,確認無誤後單擊「完成」按鈕就開始遷移,整個遷移虛擬機的過程虛擬機不會出現中斷。
經過Powershell也能進行虛擬機存儲的遷移,使用的命令是Move-VMStorage。首先咱們先查看在Powershell中的遷移虛擬機的命令語法。
命令Move-VM的語法中包括了:
-SmartPagingFile :智能分頁處理。
-AnapshotFile :快照文件。
-VirtualMachine: 虛擬機配置文件。
-VHDs :虛擬機的虛擬硬盤。
能夠將新建虛擬機存儲位置從默認路徑遷移到D:\新建虛擬機,使用的命令以下:
PS C:\> Move-VMStorage 「新建虛擬機」 –DestinationStoragePath D:\新建虛擬機
將新建虛擬機的智能分頁處理、快照文件、虛擬機配置文件和虛擬機的虛擬硬盤遷移到指定的路徑,使用的命令以下:
PS C:\>Move-VMStorage 「新建虛擬機」 –VirtualMachinePath D:\新建虛擬機\Config –SnapshotFilePath D:\新建虛擬機\Snapshots –SmartPagingFilePath D:\新建虛擬機\SmartPaging –VHDs @(@{「SourceFilePath」 = 「C:\新建虛擬機\Disk1.VHDX」; 「DestinationFilePath」 = 「D:\新建虛擬機\Disks\Disk1.VHDX」}, @{「SourceFilePath」 = 「C:\新建虛擬機\Disk2.VHDX」; 「DestinationFilePath」 = 「D:\新建虛擬機\Disks\Disk2.VHDX」})
Windows Server 2012中的Hyper-V在虛擬機的遷移中,支持了具備非共享存儲的實時遷移,這樣能夠大大加強了Hyper-V虛擬機的靈活性,在一些沒有共享存儲和羣集的環境中,基於非共享存儲的實時遷移起到了重要的做用。
非共享存儲的實時遷移具有如下四個特性:
即便在遷移工程中遇到故障或問題,致使遷移失敗,也能保證有一臺可用虛擬機。
可跨羣集遷移虛擬機,例如咱們能夠從非羣集的計算機遷移到羣集計算機。
支持不一樣存儲類型的遷移虛擬機,無需受存儲類型約束,無論環境是 JBOD 仍是直通存儲,又或者是 iSCSI 存儲,都能實現實時遷移。
可使用 Powershell 發起實施遷移的操做,那麼就可以實現自動化的操做。
綜上所述,非共享存儲的實時遷移爲咱們提供了低成本、高效率、靈活便捷的遷移方案,這一遷移方式可以被用到多種應用環境下,例如:
開發或 IT 人員可以將測試好的虛機在不停機的前提下直接遷移到生產環境。
在多主機環境下,若是須要進行主機維護,能夠在不依賴共享存儲的前提下,快速、靈活的在主機之間移動虛機。
故障檢修和硬件升級,中小企業可能只有一臺服務器並經過虛擬化方式運行着業務服務器,當遇到硬件故障或須要更新服務器時,IT顧問能夠快速在筆記本上創建臨時的基於 Windows Server 2012 的 Hyper-V 主機,將其加入到現有域中完成業務虛擬機的遷移,在完成原服務器的更換後,再遷移回去。
非共享存儲的實時遷移在遷移過程當中虛擬機不會出現中斷的現象。
而遷移的過程當中,有的Hyper-V主機沒有共享存儲,因此在遷移時,須要遷移虛擬機的全部配置,包括虛擬機的虛擬硬盤、配置文件、虛擬機快照和Hyper-V智能分頁文件,遷移過去的虛擬機文件和數據存儲可位於一個或者多個位置。因爲沒有共享存儲,該實時遷移方案不提供高可用性。
能夠經過Powershell發起實施遷移的操做,能夠採用Move-VMStorage或者是Move-VM命令,只要指定相應的虛擬機遷移目標存儲路徑,虛擬機就會遷移過去,這與以前遷移使用的命令相同。Windows Server 2012 無需共享存儲的實時遷移總體來說很是易用,無需過多的設置便可完成,仔細操做下來也就是幾個簡單的步驟,這徹底依靠強大的基礎架構做爲支撐,因此在遷移以前的Hyper-V主機中,都必須加入域環境。