2012.03.11 16:00

從訂票網站塞爆現象,談雲端擴充服務的好處與做法

ADVERTISEMENT

用虛擬層中介硬體資源

傳統X86將指令的權限分為ring 0 ~ 3共4個層級,而控制硬體的指令就是存取權限最高的ring 0。但礙於ring 0通常只有kernel(核心)及driver(驅動)可以使用,故虛擬機器需透過其他方式才能使用硬體資源。

虛擬層(統稱為hypervisor)就是為了能夠呼叫ring 0層級的指令而產生的軟體,讓虛擬機器可以透過虛擬層使用硬體資源。而使用者開發的應用程式,使用到的指令權限只到ring 3,並不影響資源虛擬化的過程。又依據虛擬化管理方案的不同,大致上可分為全虛擬(full virtualization)及半虛擬(paravirtualization)。全虛擬的解決方案中又以KVM較為著名(),而半虛擬比較有名的則是Xen()。

虛擬化有2種

所謂的全虛擬,即虛擬機器透過hypervisor,以binary translation(二進制碼轉譯)的技術來呼叫ring 0 層級的指令,再將需求送至硬體,並模擬出所有需要的硬體元件。其中包括處理器、記憶體、網路卡及硬碟等設備。而全虛擬的好處就是虛擬機器的獨立性很高,但binary translation技術會讓虛擬機器的運作效能受到限制。

ADVERTISEMENT

▲全虛擬技術會透過binary translation導致效能降低。

半虛擬效能較佳

半虛擬則是為了提升虛擬機器的效能,其解決方案就是讓hypervisor不必透過binary translation,就能夠呼叫ring 0層級指令來使用硬體的資源。但如同前述,ring 0的指令通常只有kernel及driver能夠直接使用,因此半虛擬必需修改虛擬機器的及實體機器的核心,故硬體的相容性相對全虛擬來得差。

ADVERTISEMENT

▲半虛擬則可透過hypervisor呼叫ring 0指令,效能表現較佳。

因為半虛擬是透過hypervisor直接呼叫ring 0的指令,相當於虛擬機器直接使用硬體元件,虛擬機器的硬體元件不全然是hypervisor模擬出來的,而稱此解決方案為半虛擬。

ADVERTISEMENT

非開源系統限制多

若以半虛擬的Xen為例,虛擬機器透過修改過後的作業系統(又稱為DomU),來呼叫hypervisor存取硬體裝置,而hypervisor是透過Xen修改過的主作業系統Dorm直接驅動硬體裝置。如此一來,雖然可以提升效能,但也因為需要修改作業系統的核心,對於未開放原始碼的作業系統來說,會造成很大的限制。

(後面還有:雲端服務在哪裡?)

ADVERTISEMENT

ADVERTISEMENT