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

ADVERTISEMENT

用虛擬層中介硬體資源

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

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

虛擬化有2種

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

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

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

半虛擬效能較佳

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

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

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

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

非開源系統限制多

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

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

使用 Facebook 留言

Fantasi
3.  Fantasi (發表於 2012年3月12日 14:57)
不太能夠理解的是,虛擬化吃的還是實體主機的資源,當一台實體主機無法負荷的操作,如何能夠期待一台實體主機虛擬成兩台主機之後能夠負擔?
更何況虛擬之後多少會有點效能落差?
Zack
4.  Zack (發表於 2012年3月12日 18:37)
原文講的應該是短期租借虛擬主機比起自行建構實體主機的成本更低?

※ 引述《Fantasi》的留言:
> 不太能夠理解的是,虛擬化吃的還是實體主機的資源,當一台實體主機無法負荷的操作,如何能夠期待一台實體主機虛擬成兩台主機之後能夠負擔?
> 更何況虛擬之後多少會有點效能落差?
762a6f081644554454425fc59627e090?size=48&default=wavatar
1人給推

5.  我本善良 (發表於 2012年3月14日 09:53)
AP 可這樣玩

db 可不是說加就加的。

且 訂票網站塞爆 通常不是 ap 的問題而是db 的問題。

希望作者能有更詳細的說明

發表回應

謹慎發言,尊重彼此。按此展開留言規則