來源: 微說互聯網
我們知道雲端運算平台上面的雲主機,實際上都是虛擬機,但我們感覺不出來,用起來和一台真實的伺服器沒什麼區別,這都要歸功於虛擬化技術(Virtualization)。可以說虛擬化技術,是實現雲端運算基礎架構層面(IaaS)的核心技術。那麼這種虛擬化技術究竟是怎麼回事?
雲端運算所使用的虛擬化技術,其實並不是一項新技術。1998 年成立的 VMWare(威睿)公司,就是做虛擬機軟體的,後來被數據儲存技術公司 EMC(易安信)收購了,再後來 EMC 又被 Dell 收購了。
我們先不談 VMware 公司的歷史,重點說一下他們的虛擬機軟體:VMware Workstation。這個軟體允許多個 x86 虛擬機,同時被創建和運行。每個虛擬機實例,可以運行其自己的客戶機操作系統(Guest OS),如Windows、Linux、BSD 等。說白了就是,VMware Workstation 允許一台真實的電腦,同時運行好幾個操作系統。
從底層操作系統來看,每個虛擬機都是一個用戶進程;從虛擬機中的的 Guest OS 來看,自己擁有整個電腦。
虛擬機的工作原理
虛擬機軟體解決了一個關鍵的技術問題:就是如何讓 Guest OS 認為自己正運行在一個真實的電腦上。
VMware的架構圖 |
管理多個虛擬機的軟體叫做 VMM(Virtual Machine Monitor),或者叫 hypervisor。VMM 做了三件事來欺騙 Guest OS:分別是虛擬 CPU、虛擬記憶體、虛擬 I/O。
虛擬CPU:為每個虛擬機的 CPU,準備了一個虛擬寄存器的數據結構,跟蹤著 CPU 所有寄存器中的值。CPU 的全部狀態其實就是所有寄存器的值,只要在 Guest OS 看來寄存器的值沒問題,Guest OS 就可以正常執行。
Guest OS 作為一個用戶進程,實際上運行在 CPU 的 ring3 模式(最低權限),但 VMM 讓它以為自己運行在 CPU 的 ring0模式(特權模式)。如果 Guest OS 訪問 ring3 模式的寄存器, VMM 是不會管的。但如果 Guest OS 試圖訪問一些 ring3 模式的寄存器,VMM 就直接修改虛擬寄存器的值,讓 Guest OS 認為自己真的操作了這些特權模式下,才能訪問的寄存器。
虛擬內存:VMM 實現了從虛擬記憶體,到虛擬機物理內存,再到實體記憶體的三級地址轉換,解決了 Guest OS 訪問記憶體的問題,在 Guest OS 看來,地址還是從虛擬記憶體,映射到實體記憶體。
虛擬I/O:如果 VMM 發現 Guest OS,要對某個 I/O 設備進行操作,那麼就用軟體模擬這個過程,比如要對硬碟進行讀寫,VMM 就把這個操作改成對文件的讀寫。
總的來說,Guest OS 的運行在 VMM 的嚴密監控下,在權限允許的範圍內,Guest OS 幹啥都行,但如果超出了權限,VMM 就要干預。
虛擬化技術與雲計算
目前比較常用的虛擬機技術,有 VMWare、Xen、KVM,雖然虛擬化的思路差不多,但具體所使用的虛擬化技術,還是有所區別的。
VMWare 是商用軟體,需要付費,且不開源。Xen 和 KVM 都是開源的。不過 Xen 的操作複雜,維護成本較高,Linux 官方內核已經去掉了對 Xen 的支持。KVM 是 Linux Kernel 的一部分,因此會隨著 Linux 內核的升級,而不斷優化和改進。在雲端運算領域目前用的虛擬機技術,最多的也是 KVM。
雲計算管理軟體透過libvirt接口管理虛擬機
|
目前比較流行的雲端運算管理軟體是 Openstack,支持各種虛擬機技術。libvirt 是一套免費、開源的支持 Linux 下主流虛擬化工具的 C 函數庫。libvirt 起初是專門為 Xen 設計的一種管理 API,後來被擴展為可支持多個虛擬機監控程序。
雲端運算管理軟體,透過 libvirt 接口就可以控制,各種虛擬化技術創建的虛擬機了。311170515
雲端運算管理軟體,透過 libvirt 接口就可以控制,各種虛擬化技術創建的虛擬機了。311170515
AKD 寰楚專業級全系列監控設備 |
沒有留言:
張貼留言