在Windows 8桌面上運行windowsHyper-V
一些Windows 8版本包含了一個類似Windows Server 2012和Windows Server 2012 R2中windowsHyper-V角色的windowsHyper-V版本。我的建議是最好避免在桌面上使用windowsHyper-V,除非你有足夠讓人信服的理由。
每家組織都有不同的windowsHyper-V需求,在一些情況下,在桌面上使用windowsHyper-V是合理的。例如,一些組織可能會要求用戶從windowsHyper-V虛擬機(VM)中瀏覽網頁,因為網路上滿是病毒網站。
如果不小心訪問到惡意網站,可能會導致安裝惡意軟體,損壞作業系統,竊取數據或帶來各種其他的傷害。在VM上運行Internet Explorer瀏覽器可以安全地將其遠離主作業系統。這可以防止敏感數據通過瀏覽器泄露。
還有其他組織也允許開發人員通過桌面使用VM。這樣可以獲得隔離的開發或測試環境,遠離主桌面作業系統。
也有組織使用windowsHyper-V運行備用作業系統。例如組織的任務關鍵型應用程式只運行在Windows XP上。這時用戶只需要在VM中的Windows XP上運行該套用,而不需要再所有台式機上都運行Windows XP。
windowsHyper-V帶來更多功能
最新版的windowsHyper-V增強了對Liunx虛擬機的支持,windowsHyper-V增加了很多高級功能,例如動態記憶體和虛擬機實時備份。
在過去一段時間裡,微軟在windowsHyper-V角色提供的功能上取得了很大的改變,比如,動態記憶體、虛擬機實時備份、雲備份、線上調整VHDX大小以及第2代虛擬機,但是,這些一般在windowsHyper-V生產環境中會運行一些不同的作業系統,包括Linux發行版。在最初的windowsHyper-V版本中,通過添加安裝一個Linux集成服務(LIS)的組件,windowsHyper-V可以支持運行Linux的虛擬機一些基本的功能。最近,微軟正和供應商合作添加新功能,並在新的Linux版本中移除需要安裝的Linux集成服務。
windowsHyper-V動態記憶體
這是Linux虛擬機期待已久的功能。從Windows Server 2012 R2開始,現在運行在Windows Server 2012 R2 windowsHyper-V上的Linux虛擬機已經完全支持記憶體的熱添加和刪除。雖然你可以讓在Windows Server 2012 windowsHyper-V主機上運行的Linux虛擬機使用動態記憶體,但是,官方的說法是不支持的。每當windowsHyper-V需要為Linux虛擬機分配記憶體時,windowsHyper-V會用到動態記憶體功能中的熱添加功能,實際上是通過windowsHyper-V主機來執行的。如果windowsHyper-V想從Linux虛擬機中收回一些記憶體,windowsHyper-V會使用LIS的膨脹驅動程式。更為值得注意的是windowsHyper-V動態記憶體功能只支持64位的Linux發行版。某些Linux的發行版可能需要你手動啟用此功能的支持。例如,CentOS 和Red Hat Linux發行版需要你在/etc/udev/rules.d路徑下創建一個"udev"規則來啟用動態記憶體熱添加功能。
windowsHyper-V虛擬機實時備份
在早期的windowsHyper-V版本中,你必須暫停Liunx虛擬機才能創建備份。如果你的Linux虛擬機運行在Windows Server 2012 R2 的windowsHyper-V主機上,這些windowsHyper-V虛擬機現在酒可以在不停機的情況下,使用兼容的windowsHyper-V備份工具備份,比如Windows Server Backup。更為重要的是要知道,Windows虛擬機是利用Volume Shadow Copy Service,或VSS,來實現實時備份的,windowsHyper-V支持兩種備份類型:檔案系統備份和應用程式一致備份。對於Linux虛擬機,微軟推出了檔案系統快照,只能執行基於檔案系統的備份。另外有報導稱,如果Linux虛擬機有附加的iSCSI設備或直通設備,windowsHyper-V實時備份可能會失敗。
windowsHyper-V支持第2代虛擬機
之前Linux發行版windowsHyper-V是不支持2代虛擬機安裝的。從Windows Server 2012 R2開始,新的Linux發行版windowsHyper-V,比如CentOS 和 Red Hat Enterprise 7.0,以及SUSE SLES 12 和Ubuntu 14.10,是可以支持2代虛擬機安裝的。此外值得注意的是,2代虛擬機默認已開啟安全啟動。由於Linux虛擬機不支持安全啟動,你可能需要從Linux虛擬機的屬性頁禁用它或者通過windowsHyper-V主機上PowerShell命令禁用它。
windowsHyper-V線上備份
線上備份是對運行在Windows Server 2012 R2 windowsHyper-V主機上的Linux虛擬機支持的另一個增強功能。你現在可以使用Windows Azure Online Backup程式和System Center Data Protection Manager來線上備份Linux虛擬機到Microsoft Azure上。
windowsHyper-V線上調整VHDX大小
你現在可以在不停機的情況下,調整附加到Linux虛擬機windowsHyper-V上的固定VHDX的大小。這個功能是許多擁有Linux虛擬機windowsHyper-V的組織一直在等待的功能,因為線上調整VHDX大小的功能消除了需要經過複雜變更的過程,並在windowsHyper-V不停機的情況下,提高關鍵Linux虛擬機windowsHyper-V的存儲工作負載。值得一提的是,並不是所有Linux發行版都支持線上調整VHDX大小的功能。
windowsHyper-V從主機到虛擬機複製檔案
Windows Server 2012 R2 的windowsHyper-V引進了一個Guest Services的集成服務組件。一旦啟用Guest Services,windowsHyper-V將允許你將檔案複製到Linux虛擬機。Linux集成服務提供一個hv_fcopy的守護進程。目前windowsHyper-V此功能只支持CentOS 和 Red Hat 6.6 and 7.0, SUSE SLES 12, an以及Ubuntu 14.10 和 14.04。
儘管微軟的主要焦點是針對Windows虛擬機開發新的windowsHyper-V特性,但是現在很多功能都可用在Linux發行版windowsHyper-V上,以及可能對希望將他們的Linux工作負載整合到windowsHyper-V虛擬化平台上的組織帶來巨大的價值。
將虛擬機遷移到新windowsHyper-V
將你的虛擬機遷移到最新版本的windowsHyper-V上,可以讓你更好地利用新windowsHyper-V的功能和特性。
在考慮從Windows Server 2012 R2 windowsHyper-V遷移到下一個windowsHyper-V版本(可能是Windows Server 10 Hyper-V)時,需要考慮如何將現有的虛擬機遷移到新版本。windowsHyper-V一個版本將包括一個滾動更新功能,將允許管理員在windowsHyper-V集群不下線的情況下,一次性更新一個集群節點,即使如此,管理員也必須要考慮如何將虛擬機遷移到新版本的windowsHyper-V上。
不管是否正在實施一個windowsHyper-V集群部署,它都有可能從一個舊版本windowsHyper-V伺服器上的虛擬機實時遷移到下一代windowsHyper-V器上。最重要的是,實時遷移不一定是一個唯一的選項。管理員可以在虛擬機實時遷移時選擇上一代windowsHyper-V伺服器,只要它們不更新虛擬機版本。更新了虛擬機版本後,虛擬機只能與最新版本windowsHyper-V兼容。
與舊版本的windowsHyper-V一樣,主機必須開啟傳送和接收實時遷移虛擬機。
讓我們舉例說明,看它是如何工作的。我已經使用了Get-VM PowerShell 命令檢索了一個運行在Windows Server 2012 R2 的windowsHyper-V伺服器上虛擬機版本號。
即使是從舊版本的windowsHyper-V伺服器上將虛擬機實時遷移到下一代windowsHyper-V伺服器。實時遷移過程其實和Windows Server 2012 R2 的windowsHyper-V一樣。
下圖是舊版本的虛擬機實時遷移到"Windows Server 10" 的windowsHyper-V伺服器後的截圖。更重要的是,你可以看到虛擬機儘管運行在新版本的虛擬化管理程式上,但是windowsHyper-V保留了原來的虛擬機版本號。
由於虛擬機還是windowsHyper-V原來的版本號,那么它實時遷移到以前的windowsHyper-V伺服器上不會有任何問題。如果虛擬機版本升級到6後將不能實時遷移到以前的windowsHyper-V伺服器上。
這將引申出一個重要的問題。剛才我說過新版本的windowsHyper-V將提供一個滾動更新功能,也就是說它允許集群節點一個接一個的更新。如果一個虛擬機運行在一個既有新的也有舊的windowsHyper-V版本的集群中,那么在所有的群集節點更新到新版本之前,你將不能更新windowsHyper-V虛擬機的版本。
當然,提升windowsHyper-V虛擬機的版本能否帶來好處是個新問題,特別是虛擬機版本升級後不能降級。升級到版本6可以啟用windowsHyper-V新的功能和新的配置檔案格式。所以,假如虛擬機運行在以前版本的windowsHyper-V上,windowsHyper-V的版本還是版本5。但是新的特性和功能只支持已升級的虛擬機。
將windowsHyper-V虛擬機升級到版本6非常簡單,只需要在PowerShell上輸入下面的命令就可以。
Update-VMConfigurationVersion <VM name>
輸入此命令後,您將收到一條警告訊息,警告你你將不能將虛擬機遷移或將其導入正在運行舊版本的 windowsHyper-V主機上。如下圖所示:
正如你看到的,遷移一個虛擬機到"Windows Server 10" 的windowsHyper-V器上非常簡單。只要不更新虛擬機版本,虛擬機就可以實時遷移到舊版本的windowsHyper-V器上。
將虛擬機全遷移到windowsHyper-V
將你的虛擬機遷移到最新版本的windowsHyper-V上,可以讓你更好地利用新的功能和特性。
在考慮從windowsHyper-V遷移到下一個Hyper-V版本時,需要考慮如何將現有的虛擬機遷移到新版本。windowsHyper-V一個版本將包括一個滾動更新功能,將允許管理員在windowsHyper-V集群不下線的情況下,一次性更新一個集群節點,即使如此,管理員也必須要考慮如何將虛擬機遷移到新版本的windowsHyper-V上。
不管是否正在實施一個windowsHyper-V集群部署,它都有可能從一個舊版本windowsHyper-V伺服器上的虛擬機實時遷移到下一代windowsHyper-V器上。最重要的是,實時遷移windowsHyper-V不一定是一個唯一的選項。管理員可以在虛擬機實時遷移時選擇上一代windowsHyper-V伺服器,只要它們不更新windowsHyper-V虛擬機版本。更新了虛擬機版本後,虛擬機只能與最新版本windowsHyper-VV兼容。
與舊版本的windowsHyper-V一樣,主機必須開啟傳送和接收實時遷移虛擬機。
即使是從舊版本的windowsHyper-V伺服器上將虛擬機實時遷移到下一代windowsHyper-V伺服器。實時遷移過程其實和windowsHyper-V一樣。
下圖是舊版本的虛擬機實時遷移到"Windows Server 10" windowsHyper-V伺服器後的截圖。更重要的是,你可以看到虛擬機儘管運行在新版本的windowsHyper-V虛擬化管理程式上,但是windowsHyper-V保留了原來的虛擬機版本號。
由於虛擬機還是它原來的版本號,那么它實時遷移到以前的windowsHyper-V伺服器上不會有任何問題。如果虛擬機版本升級到6後將不能實時遷移到以前的windowsHyper-V伺服器上。
這將引申出一個重要的問題。剛才我說過新版本的windowsHyper-V將提供一個滾動更新功能,也就是說它允許集群節點一個接一個的更新。如果一個虛擬機運行在一個既有新的也有舊的windowsHyper-VV版本的集群中,那么在所有的群集節點更新到新版本之前,你將不能更新windowsHyper-V虛擬機的版本。
當然,提升虛擬機的版本能否帶來好處是個新問題,特別是windowsHyper-V虛擬機版本升級後不能降級。升級到版本6可以啟用windowsHyper-V新的功能和新的配置檔案格式。所以,假如虛擬機運行在以前版本的windowsHyper-V上,它們的版本還是版本5。但是新的特性和功能只支持已升級的虛擬機。
將虛擬機升級到版本6非常簡單,只需要在PowerShell上輸入下面的命令就可以。
輸入命令後,您將收到一條警告訊息,警告你你將不能將虛擬機遷移或將其導入正在運行舊版本的 windowsHyper-V 主機上。
正如你看到的,遷移一個虛擬機到"Windows Server 10" windowsHyper-V伺服器上非常簡單。只要不更新虛擬機版本,虛擬機就可以實時遷移到舊版本的windowsHyper-V伺服器上。
運行windowsHyper-V
在通用的windowsHyper-V主機之上運行windowsHyper-V時,可以使用諸多特性。但通過另一種方法可以使用windowsHyper-V更多的功能。
在Windows Server 2012 R2上運行windowsHyper-V,你可以使用更多的虛擬化特性。這些特性來自於運行在windowsHyper-V之上的windowsHyper-VManager,但通過SCVMM 2012 R2管理產品使用這些特性能夠提供更高的靈活性與可用性。以下是通過SCVMM 2012 R2使用windowsHyper-V時能夠使用的新特性,而且用戶體驗相當棒。
windowsHyper-V 2012 R2支持虛擬機線上克隆。在windowsHyper-V 2012 R2上運行的虛擬機不需要停機就可以被克隆。儘管你可以通過windowsHyper-V Manager使用線上克隆功能,但SCVMM 2012 R2提供了更大的靈活性,允許你克隆運行在遠端windowsHyper-V主機之上的虛擬機或者已經準備好並存儲在SCVMM類庫中的虛擬機。
Windows Server 2012 R2現在支持創建站點間的網路網關,在windowsHyper-V網路虛擬化環境中有時被稱為HNV或NVGRE網關。儘管不使用SCVMM也可以增加NVGRE網關,但卻需要使用很多PowerShell命令而且管理網關很麻煩。
不需要增加你不想要的複雜性,SCVMM R2能夠幫助你快速部署NVGRE網關。增加HNV網關時另一個很重要的因素就是SCVMM 2012 R2支持增加第三方網關。你需要做的只是通過SCVMM 2012 R2增加網路服務並在windowsHyper-V主機上部署網關。
Hyper-V 2012 R2的windowsHyper-V共享特性支持客戶機集群。SCVMM 2012 R2更近一步,使在服務模板中集成windowsHyper-V共享特性成為了可能,反之,這使得在虛擬主機上快速部署支持集群功能的虛擬機成為了現實。
windowsHyper-V虛擬硬碟格式
windowsHyper-V有很多檔案與運行虛擬機相關,windowsHyper-V包括XML檔案、虛擬硬碟檔案以及快照檔案。XML檔案包括虛擬機配置信息,windowsHyper-V虛擬硬碟檔案包括客戶作業系統及套用數據。windowsHyper-V支持兩種類型的虛擬硬碟檔案:VHD和VHDX。VHD檔案格式自windowsHyper-V第一版就推出了,在Windows Server 2012的windowsHyper-V中增加了對VHDX的支持。當你在Windows Server 2012和windowsHyper-V主機上創建虛擬機時,windowsHyper-V可以在兩類虛擬硬碟種進行選擇:固定和動態。
windowsHyper-V會分配虛擬硬碟檔案的元數據所需要的空間。例如,如果你想創建一個大小為127GB的VHD/VHDX檔案,windowsHyper-V最初只會創建一個4KB的檔案,但windowsHyper-V允許該檔案大小增大到127GB,有時我們將這種配置方式稱之為精簡配置。
windowsHyper-V所支持的虛擬硬碟類型有了初步的了解,但windowsHyper-V問題依舊:哪種windowsHyper-V虛擬硬碟適合生產負載?固定大小的VHD/VHDX的性能往往很好,因為針對運行在windowsHyper-V主機上的每個虛擬機都會有一個單獨的VMWP.exe進程,windowsHyper-V不必擔心在需要時確保能夠增加VHD/VHDX檔案。換句話說,windowsHyper-V虛擬硬碟檔案不會產生太多的I/O操作。
windowsHyper-V在虛擬機內執行大量I/O操作
在windowsHyper-V虛擬機內的套用要對動態VHDX檔案進行持續的讀寫操作,那么建議選擇固定的VHDX,但並非強烈建議你這么做。如果是在SSD存儲上運行動態VHDX檔案,windowsHyper-V可以在生產負載中使用動態VHDX檔案。然而,有時有必要關注套用需求。
windowsHyper-V沒有執行大量I/O操作
windowsHyper-V虛擬機磁碟檔案存儲格式有兩種包括VHD、VHDX。windowsHyper-V還支持將物理磁碟直接分配給虛擬機,這稱之為直通磁碟。windowsHyper-V直通磁碟沒有使用虛擬硬碟檔案,windowsHyper-V而是將本地磁碟或者SAN存儲上的LUN直接映射給windowsHyper-V主機供虛擬機使用。windowsHyper-V管直通磁碟的性能仍舊被認為是最好的,但windowsHyper-V仍舊存在一些限制。首先無法執行快照,第二個限制是使用直通磁碟的虛擬機不能使用“無共享線上遷移”功能。windowsHyper-V儘管使用直通磁碟的虛擬機仍舊支持線上遷移,但必須在windowsHyper-V集群中被配置為存儲磁碟資源。
windowsHyper-V管理網路最佳實踐
windowsHyper-V管理網路配置取決於主機伺服器安裝的網路適配器數量以及使用這些網路適配器的方式。windowsHyper-V能夠運行在僅安裝了一塊網卡的伺服器上,但可以這么做卻並不意味著應該這么做。我通常建議在安裝了儘可能多的物理網路適配器的伺服器上部署hypervisor。當然網路適配器的數量並不能決定一切,如何使用這些網路適配器同樣很重要。
在windowsHyper-V環境中最少使用三塊網路適配器,但多多益善。windowsHyper-V第一塊網卡應該用於配置管理網路,用於傳輸管理及監控流量。
windowsHyper-V生產伺服器至少應該配置三塊網路適配器,windowsHyper-V第一塊網卡套用用於傳輸集群及管理流量。windowsHyper-V第二塊網路適配器應該用於傳輸用戶流量,windowsHyper-V第三塊網路適配器應該用於傳輸存儲流量。顯然這種配置方式並非總是很有效。比如伺服器可能會使用DAS或者FC存儲。即使是這樣,windowsHyper-V伺服器配置三塊網路適配器仍舊是一個比較可行的指導原則。
windowsHyper-V生產伺服器應該配置三塊物理網路適配器之外,用戶應該為伺服器配置儘可能多的物理網路適配器。但什麼時候其他網路適配器能夠派上用場呢?
windowsHyper-V配置的物理網路適配器超過三塊,那么我建議對剩下的網路適配器進行綁定。windowsHyper-V網卡綁定是物理網路適配器的一個集合,可以當做一塊網卡來使用。Windows Server 2012可以在軟體層面定義網卡綁定,好處在於網卡綁定對硬體沒有特殊要求
windowsHyper-V管理網路在邏輯上應該與其他網路隔離,僅傳輸管理、監控以及集群流量。windowsHyper-V避免直接在主機伺服器上安裝套用以及配置防火牆規則阻擋不必要的網路流量有助於實現網路隔離。