1. 程式人生 > >初識OpenStack(1)

初識OpenStack(1)

項目 說我 box 運維 配置 種類 iaas hyper 兩個

初識OpenStack(1)

首先

先來說說我與openstack的淵源吧。那是在上個月中旬。學張的一個朋友給我打電話說讓一起來搞一個雲平臺,當時也不知道是什麽。就非常高興的答應下來了,到了周末,就過去聊關於平臺如何搭建的事情了,卻發現無從著手。也就是這一次,才第一次聽說了openstack這個名詞,於是就在網上買了《OpenStack設計與實現》這本書。開始簡單的了解關於這個項目,在上周三,還去參加了一下關於OpenStack的分享會。這次才算對雲計算,以及‘雲’方面的知識才有所了解,也同一時候,有很多其它的信心去參與到openstack的二次開發之中。

雲計算是什麽?

大家預計作為業內人士。相信對雲計算應該都聽說過吧。可是對於雲計算能給出詳解的人並不多吧。在這之前,我也是的,整天都被那些名詞所環繞。也在生活中使用著各種雲。包括但不限於騰訊雲,百度雲等服務,可是卻真正不知到他是什麽。
雲計算僅僅要分文三種服務模式。分別為SaaS,PaaS,IaaS三個部分

技術分享圖片

SaaS平臺邏輯架構

技術分享圖片

SaaS – Software-as-a-Service,通過這樣的模式,用於僅僅須要直接在這個平臺是面使用已有的應用,比方騰訊藍鯨平臺上面的一些應用。在SaaS平臺架構上面,用戶全然不須要考慮關於硬件及操作系統,網絡,執行環境等方面的問題,用戶僅僅須要關註在軟件使用本身而不須要考慮其它的事情,適用於0基礎用戶。

PaaS平臺邏輯架構

技術分享圖片

PaaS – Platform-as-a-Service。提供了一個開發環境,開發人員能夠在上面開發自己的應用,比方騰訊藍鯨平臺上面的開發人員中心,你能夠在上面開發自己的運維工具,可是全然不須要考慮關於硬件,操作系統,開發測試環境等問題,PaaS已經所有為你搭建好了,你僅僅須要選擇你須要的環境,而不須要自己去部署。開發人員僅僅須要關心軟件本身的開發細節就好了。這一平臺適用於應用開發人員。

IaaS平臺邏輯架構

技術分享圖片

IssS – Infrastructure-as-a-Service。用戶從供應商裏拿到的是其所須要的硬件之上的操作系統,在用戶看來,其拿到的和物理機沒有不論什麽差別。具備了物理機所具備的一切功能,而在供應商看來。其僅僅是在其server上面給用戶提供了一個虛擬機而已。此類供應商全球範圍內最有名的就是亞馬遜的AWS,國內最大的應該就是阿裏雲了,接下來就是騰訊雲。

IaaS提供給用戶的僅僅是類似物理機的一個server。以及連解這個server的接口,用戶須要自己搭建自己須要的環境。安裝自己須要的應用軟件或者服務,這就須要有一定的系統管理知識的人員來配置。這個平臺主要適用於系統管理員。

雲計算的基礎—虛擬化

經過上面的解說。雲計算供應商要想給用戶提供服務,就須要給每一個用戶獨立的操作空間。存儲空間或者是獨立的計算機系統。可是顯然給每一個用戶一個實際的物理機是不現實的。所以就須要供應商在其配置高,存儲空間大,帶寬高的server上面來虛擬出來多個虛擬操作系統來供用戶使用。而關於虛擬化主要包括以下兩個部分:一型虛擬化。二型虛擬化。

一型虛擬化

技術分享圖片

從圖中能夠看出,一型虛擬化直接是在硬件之上進行的虛擬化,實現這類方式的軟件統稱為Hypervisor,多個虛擬機能夠直接在Hypervisor之上執行,事實上現方式就是特殊定制的Linu系統。這類軟件的代表有Xen和VMWare的ESXi。

二型虛擬化

技術分享圖片
二型虛擬化就是在硬件之上有一個操作系統,用來管理底層的硬件,網絡等,這類操作系統一般都是Linux系統,在系統之上再進行虛擬化,由操作系統對這些虛擬的操作系統進行管理。

KVM,VirtualBox,VMWare Workstation都屬於這類。

其它

眼下的虛擬化主要就是上面兩種類型。而在這兩類虛擬方式上面又包括以下幾類對硬件的虛擬,並且如今很多的PC機上面都包括了這幾類虛擬化技術。

CPU虛擬化

技術分享圖片

CPU虛擬化,簡單來講就是將一個CPU串行虛擬成多個CPU並行,同意在同一個平臺上面執行多個虛擬的操作系統。各個操作系統之間相互獨立的執行。且在一個虛擬操作系統上面能夠同一時候執行多個應用程序。多個應用程序在自己的空間內獨立執行。互不幹擾,從而大大提升計算機的效率。可是虛擬化技術與多任務和超線程技術是全然不同的,雖然表現出來的結果非常類似。更詳細內容參見CPU虛擬化

內存虛擬化

技術分享圖片
假設操作系統之上沒有執行虛擬機。那麽宿主機僅僅須要實現從機器內存到虛擬內存之間一級映射關系就能夠了,可是在宿主機上面再執行客戶機的話。就須要宿主機再做一級從物理內存到虛擬內存之間的二級映射。


詳細實現參見內存虛擬化

存儲虛擬化

技術分享圖片
存儲虛擬化(Storage Virtualization)最通俗的理解就是對存儲硬件資源進行抽象化表現。

通過將一個(或多個)目標(Target)服務或功能與其它附加的功能集成,統一提供實用的全面功能服務。

虛擬化的存儲資源就像是一個巨大的“存儲池”,用戶不會看到詳細的磁盤、磁帶。也不必關心自己的數據經過哪一條路徑通往哪一個詳細的存儲設備。詳見存儲虛擬化定義和存儲虛擬化實現

網絡虛擬化

技術分享圖片
網絡虛擬化技術指的是將宿主機的一個單獨網絡通過虛擬化技術。虛擬成多個獨立的網絡給虛擬機來使用。在每一個虛擬機看來,他自己使用的都是單獨的。而非與其它客戶機進行共享的網絡。詳見網絡虛擬化技術

KVM

技術分享圖片
KVM 全稱是 Kernel-Based Virtual Machine。也就是說KVM 是基於 Linux 內核實現的。kvm基本結構如上圖。kvm已經是內核模塊,被看作是一個標準的linux 字符集設備(/dev/kvm)。Qemu通過libkvm應用程序接口,用fd通過ioctl向設備驅動來發送創建,執行虛擬機命令,設備驅動kvm就會來解析命令。

初識OpenStack(1)