虛拟化技術在當今是一個火熱的技術,伴随着雲技術,企業網絡的成長越來越火,以前雖然在使用虛拟機,但僅僅是當做一個新興的工具在使用,對其的意義和應用還沒有真正的認識,對此的技術的了解我也才剛剛開始,借助網絡這個工具逐漸了解虛拟化到底是一個什麼東西。
虛拟化是一個廣義的術語,在計算機方面通常是指計算元件在虛拟的基礎上而不是真實的基礎上運作。虛拟化技術可以擴大硬體的容量,簡化軟體的重新配置過程。CPU的虛拟化技術可以單CPU模拟多CPU并行,允許一個平台同時運作多個作業系統,并且應用程式都可以在互相獨立的空間内運作而互不影響,進而顯著提高計算機的工作效率。
虛拟化技術與多任務以及超線程技術是完全不同的。多任務是指在一個作業系統中多個程式同時并行運作,而在虛拟化技術中,則可以同時運作多個作業系統,而且每一個作業系統中都有多個程式運作,每一個作業系統都運作在一個虛拟的CPU或者是虛拟主機上;而超線程技術隻是單CPU模拟雙CPU來平衡程式運作性能,這兩個模拟出來的CPU是不能分離的,隻能協同工作。
虛拟化技術也與目前VMware Workstation等同樣能達到虛拟效果的軟體不同,是一個巨大的技術進步,具體表現在減少軟體虛拟機相關開銷和支援更廣泛的作業系統方面。虛拟化技術是一套解決方案。完整的情況需要CPU、主機闆晶片組、BIOS和軟體的支援,例如VMM軟體或者某些作業系統本身。即使隻是CPU支援虛拟化技術,在配合VMM的軟體情況下,也會比完全不支援虛拟化技術的系統有更好的性能。
完全虛拟化
最流行的虛拟化方法使用名為hypervisor的一種軟體,在虛拟伺服器和底層硬體之間建立一個抽象層。VMware和微軟的Virtual PC是代表該方法的兩個商用産品,而基于核心的虛拟機(KVM)是面向Linux系統的開源産品。
hypervisor可以捕獲CPU指令,為指令通路硬體控制器和外設充當中介。因而,完全虛拟化技術幾乎能讓任何一款作業系統不用改動就能安裝到虛拟伺服器上,而它們不知道自己運作在虛拟化環境下。主要缺點是,hypervisor給處理器帶來開銷。在完全虛拟化的環境下,hypervisor運作在裸硬體上,充當主機作業系統;而由hypervisor管理的虛拟伺服器運作用戶端作業系統(guest OS)。
準虛拟化
完全虛拟化是處理器密集型技術,因為它要求hypervisor管理各個虛拟伺服器,并讓它們彼此獨立。減輕這種負擔的一種方法就是,改動客戶作業系統,讓它以為自己運作在虛拟環境下,能夠與hypervisor協同工作。這種方法就叫準虛拟化(para-virtualization)。
Xen是開源準虛拟化技術的一個例子。作業系統作為虛拟伺服器在Xen hypervisor上運作之前,它必須在核心層面進行某些改變。是以,Xen适用于BSD、Linux、Solaris及其他開源作業系統,但不适合對像Windows這些專有的作業系統進行虛拟化處理,因為它們無法改動。
準虛拟化技術的優點是性能高。經過準虛拟化處理的伺服器可與hypervisor協同工作,其響應能力幾乎不亞于未經過虛拟化處理的伺服器。準虛拟化與完全虛拟化相比優點明顯,以至于微軟和VMware都在開發這項技術,以完善各自的産品。
作業系統層虛拟化
實作虛拟化還有一個方法,那就是在作業系統層面增添虛拟伺服器功能。Solaris Container就是這方面的一個例子,Virtuozzo/OpenVZ是面向Linux的軟體方案。
就作業系統層的虛拟化而言,沒有獨立的hypervisor層。相反,主機作業系統本身就負責在多個虛拟伺服器之間配置設定硬體資源,并且讓這些伺服器彼此獨立。一個明顯的差別是,如果使用作業系統層虛拟化,所有虛拟伺服器必須運作同一作業系統(不過每個執行個體有各自的應用程式和使用者賬戶)。
雖然作業系統層虛拟化的靈活性比較差,但本機速度性能比較高。此外,由于架構在所有虛拟伺服器上使用單一、标準的作業系統,管理起來比異構環境要容易。
純軟體虛拟化解決方案存在很多限制。“客戶”作業系統很多情況下是通過VMM(Virtual Machine Monitor,虛拟機螢幕)來與硬體進行通信,由VMM來決定其對系統上所有虛拟機的通路。(注意,大多數處理器和記憶體通路獨立于VMM,隻在發生特定事件時才會涉及VMM,如頁面錯誤)。在純軟體虛拟化解決方案中,VMM在軟體套件中的位置是傳統意義上作業系統所處的位置,而作業系統的位置是傳統意義上應用程式所處的位置。這一額外的通信層需要進行二進制轉換,以通過提供到實體資源(如處理器、記憶體、存儲、顯示卡和網卡等)的接口,模拟硬體環境。這種轉換必然會增加系統的複雜性。此外,客戶作業系統的支援受到虛拟機環境的能力限制,這會阻礙特定技術的部署,如64位客戶作業系統。在純軟體解決方案中,軟體堆棧增加的複雜性意味着,這些環境難于管理,因而會加大確定系統可靠性和安全性的困難。
而CPU的虛拟化技術是一種硬體方案,支援虛拟技術的CPU帶有特别優化過的指令集來控制虛拟過程,通過這些指令集,VMM會很容易提高性能,相比軟體的虛拟實作方式會很大程度上提高性能。虛拟化技術可提供基于晶片的功能,借助相容VMM軟體能夠改進純軟體解決方案。由于虛拟化硬體可提供全新的架構,支援作業系統直接在上面運作,進而無需進行二進制轉換,減少了相關的性能開銷,極大簡化了VMM設計,進而使VMM能夠按通用标準進行編寫,性能更加強大。另外,在純軟體 VMM中,目前缺少對64位客戶作業系統的支援,而随着64位處理器的不斷普及,這一嚴重缺點也日益突出。而CPU的虛拟化技術除支援廣泛的傳統作業系統之外,還支援64位客戶作業系統。
虛拟機遷移
虛拟機遷移技術為伺服器虛拟化提供了便捷的方法。目前流行的虛拟化工具如 VMware,Xen,HyperV,KVM 都提供了各自的遷移元件。遷移伺服器可以為使用者節省管理資金、維護費用和更新費用。以前的 x86 伺服器,體積比較“龐大”;而現在的伺服器,體積已經比以前小了許多,遷移技術使得使用者可以用一台伺服器來同時替代以前的許多台伺服器,這樣就節省了使用者大量的機房空間。另外,虛拟機中的伺服器有着統一的“虛拟硬體資源”,不像以前的伺服器有着許多不同的硬體資源(如主機闆晶片組不同,網卡不同,硬碟,RAID 卡,顯示卡不同)。遷移後的伺服器,不僅可以在一個統一的界面中進行管理,而且通過某些虛拟機軟體,如 VMware 提供的高可用性工具,在這些伺服器因為各種故障停機時,可以自動切換到網絡中另外相同的虛拟伺服器中,進而達到不中斷業務的目的。總之,遷移的優勢在于簡化系統維護管理,提高系統負載均衡,增強系統錯誤容忍度和優化系統電源管理。
V2P(虛拟機到實體機的遷移 Virtual-to-Physica )
V2P 指把一個作業系統、應用程式和資料從一個虛拟機中遷移到實體機的主硬碟上,是 P2V 的逆操作。它可以同時遷移虛拟機系統到一台或多台實體機上。盡管虛拟化的基本需求是整合實體機到虛拟機中,但這并不是虛拟化的唯一的應用。比如有時虛拟機上的應用程式的問題需要在實體機上驗證,以排除虛拟環境帶來的影響。另外,配置新的工作站是件令 IT 管理者頭痛的事情,但虛拟化的應用可以幫助他解決這個難題。先配置好虛拟機,然後運用硬碟克隆工具複制資料至工作站硬體,比如賽門鐵克的 Save & Restore (Ghost)。不過這種克隆方法有兩個局限:一個鏡像隻能運用在同種硬體配置的機器上;要想儲存配置的修改,隻能重做新的鏡像。
V2V (虛拟機到虛拟機的遷移Virtual-to-Virtual )
V2V 遷移是在虛拟機之間移動作業系統和資料,照顧主機級别的差異和處理不同的虛拟硬體。虛拟機從一個實體機上的 VMM 遷移到另一個實體機的 VMM,這兩個 VMM 的類型可以相同,也可以不同。如 VMware 遷移到 KVM, KVM 遷移到 KVM。可以通過多種方式将虛拟機從一個 VM Host 系統移動到另一個 VM Host 系統。
P2V (實體機到虛拟機的遷移Physical-to-Virtua )
P2V 指遷移實體伺服器上的作業系統及其上的應用軟體和資料到 VMM(Virtual Machine Monitor)管理的虛拟伺服器中。這種遷移方式,主要是使用各種工具軟體,把實體伺服器上的系統狀态和資料“鏡像”到 VMM 提供的虛拟機中,并且在虛拟機中“替換”實體伺服器的存儲硬體與網卡驅動程式。隻要在虛拟伺服器中安裝好相應的驅動程式并且設定與原來伺服器相同的位址(如 TCP/IP 位址等),在重新開機虛拟機伺服器後,虛拟伺服器即可以替代實體伺服器進行工作。