桌上型電腦虛擬化:照料虛擬環境

Wes Miller

虛擬化已從過去難解的怪象,演變成如今眾人賴以生存的一項可行技術。或許您是將它應用於品質保證測試、開發、Web 設計,甚或培訓。或許您是部署虛擬基礎結構引領趨勢的先驅,甚或是採用 Amazon.com、Rackspace Inc. 或其他雲端廠商的「雲端」虛擬化的大眾之一。

無論您運用虛擬化的方式為何,用過一段時間,肯定不難發現它本身的挑戰,就像維護實體硬體也有自身的難題一樣。許多問題各有異同。

處理 Hypervisor

您可能對於已流傳一陣子的「Hypervisor」一字早有耳聞。它已成為虛擬化的酷炫用詞,不過,Hypervisor 並不是最近才出現的。使用它的歷史跟虛擬機器 (VM) 一樣長久。事實上,IBM 在 1970 年代就創造了 Hypervisor 一詞。

Hypervisor 是一種軟體,代表使用一組虛擬化硬體在系統上「以虛擬方式」執行的來賓。它會將來賓作業系統的實體硬體抽象化。過去幾年來大肆推行在 x86 平台上執行的「Type 1 Hypervisor」(包括 Microsoft Hyper-V 和 VMware ESX Server 在內),常讓人對 Hypervisor 混淆。而多數人使用的 Hypervisor — 尤其是用於用戶端系統 — 則稱做為「Type 2 Hypervisor」。兩者的差別在哪?

  1. Type 1 Hypervisor 是直接在主機硬體上執行,並不需要「主機作業系統」。Microsoft Hyper-V 和 VMware ESX Server 都是 Type 1 Hypervisor 常見的例子。
  2. Type 2 Hypervisor 則需要主機作業系統才能運作。一般而言,Type 2 Hypervisor 在它的主機作業系統上主要是執行為使用者模式應用程式。Microsoft Virtual PC 和 VMware Workstation 都是 Type 2 Hypervisor 常見的例子。

您通常是將 Type 1 Hypervisor 用於「不間斷」的工作負載,像是虛擬化 SQL 或檔案伺服器。它在最低限度下,使用的資源比 Type 2 少。不過視主機而定,它可能需要使用者登入才能啟動,而這對關鍵性系統來說,並不是理想的選項。另一方面,Type 2 Hypervisor 則比較適用「依需要指定」的 VM。這類角色包括用於測試、應用程式相容性或安全存取的 VM。

虛擬化提供哪方面的節約?

答案顯然是虛擬化可以省下硬體支出,但是事情沒那麼簡單。當然啦,如果您在可裝載機架的 1U 外型規格內有兩個伺服器系統,然後把這兩個相同的工作負載載入單一 1U 系統上,是省下了最初的硬體成本 — 但是這是有陷阱的。拿在兩部不同 1U 伺服器上順利操作的同樣兩個伺服器系統來說,各自配備雙核心 CPU、2GB 的 RAM,以及 160GB SATA 硬碟。

現在,要是把兩者放到一部具有相同硬體設定的伺服器上時,勢必得將資源平分,是嗎?對於 Type 2 Hypervisor 您通常需要更多資源。

然後在考慮如何將工作負載從實體整併到虛擬時,把必要的 CPU、RAM 和 HDD 成本列入考量。虛擬化彙總通常稱為「以垂直方式而非水平方式堆疊系統」,因為您是移除 OEM n 個實體系統的依存性。您對單一系統的要求反而可能比虛擬化之前還要高。如此產生的系統管理反彈是許多一頭栽進虛擬化的組織沒有考慮到的。

虛擬化的成本為何?

令人滿意的虛擬化軟體曾經耗資不斐。市場炒熱過了一段時間後,您現在可以相當低廉的價格購得許多類型的虛擬化軟體。不過,大部分重要的企業功能仍舊相當昂貴,包括主機作業系統或 Hypervisor。

看您打算在 VM 上執行的工作負載而定,可能需要調查一下容錯移轉。來賓偶爾會損毀,而主機硬體也可能失敗。虛擬化並不能讓硬體更可靠,它不過是改變機率罷了。對於關鍵性系統,您仍然需要想出策略來備份來賓作業系統,無論是備份 VM 容器本身 (絕對建議這麼做) 或是內含的檔案系統都一樣。

即便您只是為了在 Type 2 Hypervisor 上進行測試或開發而將一堆來賓作業系統虛擬化,還是需要配置足夠的 RAM 才能一次執行一個或多個來賓 (另外還要加上主機作業系統)。虛擬化管理最常忽略的問題是磁碟空間的耗用量。

我使用虛擬化做為安全性測試平台已有一段時間。最令人興奮的莫過於在 VM 上執行潛在的漏洞,看它成功入侵,然後使用 Hypervisor 的復原或快照集功能回復到先前的版本,全都只是為了重新再測試一次。將這些復原變更彼此上下堆疊的真正妙處是磁碟空間可能很快就會失控。最後可能光是來賓作業系統本身就遠超過了實際的硬碟大小。

我經常用到的其中一台 VM 有 50GB 的硬碟映像 — 我是等到試圖要移動它時才發現情況有多失控 (它有六個 VMware 快照集),硬碟大小整整超過了 125GB。

 以下是將虛擬化的衝擊/成本降至最低的一些最佳作法:

  • 如果您在具有「復原」功能的 Type 2 Hypervisor 上使用 Windows 用戶端作業系統,無論如何請停用 Windows 系統還原。否則,您每進行一次系統變更,磁碟都會跟著增長。
  • 如果您執行步驟 1,當想要建立復原點時,請務必分清界限。
  • 進行安全性/漏洞測試時,不要依賴 Windows 將您回復到先前的時間點。請使用 Hypervisor 的復原功能,因為不像還原點,它一般並不能被污染。
  • 以必要的最低限度資源量來執行來賓作業系統。
  • 確保您已配置足夠的 RAM,這樣用戶端作業系統才不會不時在磁碟互換 RAM。如此可能會拖慢您的主機所有來賓的速度。
  • 從來賓內部進行磁碟重組,然後再從來賓外部進行磁碟重組 (請參閱稍後有關磁碟分組的章節)。有規律地進行這兩項作業。

VM 暴增

如您所見,管理 VM 可能很快就會出問題。能夠輕鬆複製 VM 可能是很不錯的優點,但是在管理和保障來賓安全,追蹤 Windows 的作業系統授權 (Windows Vista 以前的版本,新的金鑰管理在此其實可能反而有益),以及確定交易秘密未遭洩漏等方面也可能製造龐大的問題。心懷不軌的員工要利用 USB 快閃磁碟或 USB 硬碟將 VM 外帶,遠比試圖取得整個桌上型電腦系統要簡單太多了。

VM 暴增比較屬於是高技術群 (了解虛擬化的內部結構) 的問題。一般來說,它也普遍存在於用戶端來賓,而非虛擬化伺服器來賓。

系統管理

所有公司已開始將焦點放在協助重掌虛擬化系統的控制權。Microsoft 和 VMware 都刻意減少對虛擬化本身價值的關注,而偏重系統管理。這很重要,因為您並不是要擺脫系統,而只是將它們虛擬化。

許多系統管理產品在 VM 上的表現良好 — 但有些較新的功能則能夠更有智慧地管理虛擬化系統,包括喚醒和更新來賓,因為不喚醒便無法更新。在零時差入侵的時代,這極為重要。您可不希望不常使用的 VM 演變成公司網路上的殭屍網路的當地代表。

您的系統管理方法必須將主機和來賓列入考量,確保它們經過適當更新,並且知道彼此的職能。您可不想有個設計不良的修補程式管理解決方案來更新您的 Hypervisor,在大白天把它停機進行重新開機,還一併拖垮四部關鍵性來賓伺服器。

您也需要像過去一樣採用相同的方法處理這些系統的修復。系統虛擬化並不表示您就不會因登錄損毀或整台 VM 損毀而遺失系統,這種情況照樣可能發生。以對待實體系統同樣的態度來備份它。

另外一項考量是您的 Hypervisor 是否有復原功能。考慮修補程式管理時也要考慮這一點。因為很容易發生來賓在星期二修補日後於星期三更新,又被回復到星期一的復原點,因為遭到理論上「免疫」的零時差威脅的攻擊。這是個嚴重的問題,因為復原技術的運作方式是從 Hypervisor 回復到整個磁碟稍早的呈現點,表示您將遺失所有 Windows 和應用程式修補程式,也將遺失所有防毒簽名。

安全性軟體

除了復原功能之外,您必須像對待實體機器一樣提供虛擬化來賓相同的安全性保護,而且遠不只這些。談到輸入威脅,VM 跟實體機器一樣脆弱,毫無分別。

重大的差異在於非關鍵 VM (並非時時處於開啟狀態的機器) 通常會延遲修補和 AV 更新。因此,這些機器可能變成零時差入侵更明顯且無法追蹤的標靶。基於這些理由,您更要採用成熟的系統管理解決方案將這列入考量,並且修補虛擬系統。

輸出威脅則是另外一回事。VM 可能是盜取智慧財產權的入口。了解這一點相當重要,因為在未受控制的主機上執行的 VM 可能為您的資料製造漏洞。首先,如果虛擬環境輕易就能夠複製,問題就來了 — 尤其若是您處理的是任何控制資料存取權的循規需求 (我早在 2008 年就撰文討論過,https://technet.microsoft.com/magazine/2008.06.desktopfiles)。

其次,您可能記得我在 RMS 和 IRM 相關文章中有提到 (https://technet.microsoft.com/magazine/2008.11.desktopfiles),這些控制項仰賴作業系統來預防螢幕擷取、列印等作業。不過,這些控制項並不會延伸到 Hypervisor — 表示如果在來賓作業系統上顯示 RMS 保護的內容,主機作業系統仍舊可以列印個別螢幕擷取畫面或建立該畫面的視訊擷取。

雖然這在技術上並不是類比,卻跟「類比漏洞」沒有太大的差別。我不清楚有什麼辦法可以保護 DRM 控制的內容免遭這種方式的入侵。實際上,即使您有辦法保護,問題又回到要如何防範有相機或錄影機可以執行相同「入侵」動作的使用者。

磁碟重組

磁碟重組在 VM 上是一項獨特的挑戰,原因有幾種:

  1. 您一般會有兩種層級的分散程度 — 在虛擬化磁碟容器本身內部 (每台來賓本身所見的分散程度) — 即我所謂的「主要分散程度」,以及包含虛擬化磁碟 (遍及主機作業系統的磁碟) 的實際檔案的分散程度,或稱「次要分散程度」。
  2. 具有所需最小大小並且「按需要」增長的磁碟的虛擬化產品可能會導致次要分散程度。
  3. 復原功能不但可能很快就導致磁碟膨脹,也可能引起嚴重的次要分散程度 — 因為它會耗用額外的主機作業系統磁碟空間,而每台來賓會開始爭用可用的磁區。
  4. 大多數隨需要增長的磁碟,並沒有能力在需要減低時縮小。如果您配置 40GB 而最初只使用 10GB,但增長到需要 35GB,則磁碟將不會自己復原 — 表示您會有個很可能有次要分散程度的大型檔案。

龐大的虛擬磁碟大小,它們變化之快速 (無論是縮小或增大),以及它們易受到兩種分散程度的影響的事實,都表示您對待虛擬磁碟甚至應該比實體系統更加嚴謹。

下面是保護檔案的方法之一:

  1. 盡可能少用任何復原技術,因為它會導致整體磁碟檔案過度增長,而且無法輕易在來賓中進行磁碟重組,不過主機可以重組構成虛擬磁碟的檔案。
  2. 首先在來賓上使用良好的磁碟重組產品,並且定期執行。
  3. 如果您採用按需要擴充磁碟的技術:
    a. 依照下面使用 Sysinternals sdelete.exe 公用程式:sdelete –c drive_letter 其中 drive_letter 是您要填零的磁碟區。例如,**sdelete –c C:**將在磁碟重組後填零所有未使用的磁碟空間。
    b. 使用任何虛擬磁碟縮小技術 (如果廠商有提供的話) 將虛擬磁碟容器的大小減至其最小大小
  4. 對包含 VM 的主機作業系統的磁碟區進行磁碟重組。

許多人都漠視磁碟重組。從我在 2007 年的磁碟重組相關文章 (technet.microsoft.com/magazinebeta/2007.11.desktopfiles) 所收到的大量讀者郵件,證明了這個主題往往被誤解,但卻不應該忽略 — 即使是虛擬化系統也一樣。

隨著虛擬化的重要性和使用繼續激增,很容易就被淹沒在「彙總」的訊息下而對於成本代價,以及它原有而無意的複雜性一無所知。本文應該可以幫助您探索在移轉到虛擬化或與之同處時需要考慮的一些額外成本。

Wes Miller 在位於德州奧斯汀的 CoreTrace (CoreTrace.com) 擔任產品管理主管。他之前任職於 Winternals Software,並且曾在 Microsoft 擔任專案經理一職。您可以透過電子郵件與 Miller 連絡:technet@getwired.com

相關內容