「虛擬化」(virtualization)指的是把計算資源依邏輯上的考量來合併或分割,以獲得在取用上的優勢。這種對資源的『虛擬』觀點能免於受到資源的實體運作方式、地理位置或實際組態的限制。常見的虛擬資源有計算能力和儲存設備。
虛擬化技術的一個新趨勢是利用虛擬引擎的收集累積技術來得到整體網路建設的全貌,另一個近來見報率極高的新流行則是對電腦硬體的虛擬化來同時執行多個作業系統,採用的技術有奈核心或硬體抽象層等幾種,如Xen。
虛擬化的種類
虛擬化是個用途廣泛的詞,在電腦的各方面將資源抽象化的作法都可算是虛擬化。資訊技術業者察覺到虛擬化是個熱門的名詞,而用在在各式各樣的産品上,從虛擬機器到系統管理軟體都有,虛擬化這個詞快要變成毫無意義了。下面列出一些虛擬化常見的應用,主要是分成兩大類:軟體虛擬化和資源虛擬化。
軟體虛擬化
虛擬機器是由主機的軟硬體架構模擬出來的一個環境,讓在這環境中執行的程式甚至作業系統以為它是在硬體上直接執行,比方說在 PowerPC 的麥金塔電腦上架構出一個跑 x86 Windows 的環境、或是在 x86 的 Linux 中跑 Windows 都是。這種模擬通常完備到連硬體驅動程式都能正常運作。
在伺服器的應用上,虛擬機器技術可以用來在同一台硬體上架設提供不同服務的伺服器,彼此除了共享硬體資源外沒有任何關連,可以避免一個服務被入侵造成所有服務停擺的窘境;這種作法稱為伺服器虛擬化,有幾種不同的作法:
Emulation: 模擬完整的硬體,讓作業系統不必修改就能在不同的 CPU 硬體上執行,如 Bochs、PearPC、和 PowerPC 版的 VirtualPC。
Native virtualization: 只模擬部分的硬體,足以讓作業系統不必修改就能執行,但只能跑同 CPU 硬體的作業系統,如 VMware 和 Parallels Desktop。
Paravirtualization: 不模擬完整的硬體,但提供特別的應用程式介面,作業系統需要修改才能執行,如 Xen。
Operating system-level virtualization: 在作業系統層次做虛擬化,讓多個互相隔離的虛擬伺服器在同一台實體伺服器上執行。因為使用相同的作業系統核心,客體作業系統和主體作業系統是相同的,如 Linux-VServer、Virtuozzo、OpenVZ、Solaris Containers、和 FreeBSD Jail。
應用程式虛擬化的技術是指不需經過安裝程序就能在本機執行的桌面或伺服程式(如由瀏覽器下載執行的 java 或其他程式)。虛擬化的程式在一個虛擬環境中執行,裡面可以有 registry、檔案等各式各樣虛擬的資源供程式使用,成為應用程式和作業系統之間的隔離層,以消除和其他程式之間的衝突(如預設字型)以及和作業系統之間的衝突(如系統呼叫)。
資源虛擬化
資源虛擬化指的是把同類的硬體資源,如硬碟、網路頻寬、計算能力等,加以重組以利整體規劃調配的技術。RAID 和 Volume manager 可以把多個實體硬碟視為一個大硬碟來使用,RAIN 和某些網路設備可以把多個網路線的頻寬合併視為一個高頻寬的連線使用,有的電腦叢集也可視為計算資源的虛擬化。
一旦有了足夠的虛擬資源,就可以將之視需要分割,分割的邊界和實體資源的邊界沒有關連,這對資源的調配提供了絕佳的彈性。這種操作在網路儲存設備的領域稱為 "zoning"。
虛擬技術的應用
虛擬技術在很多地方都能找得到應用,這裡只列舉二個例子。
合併伺服器
利用虛擬技術,可以把多個實體伺服器轉換成在較少硬體上執行的虛擬伺服器。這種作法有時稱為 Physical-to-Virtual 或 P2V。
災後回復
虛擬機器可用來當做某實體伺服器的「熱待命」(hot standby),在實體伺服器需要離線時,可以迅速上線來提供服務。
外部連結
What is virtualization? - ZDNet Whiteboard webcast about virtualization.
Weblog post on the how virtualization can be used to implement [[Mandatory Access Control]].
CategorySoftware CategoryConcept