由于直接部署在裸機上,虛擬機管理程序需要自帶硬件驅動,虛擬機的所有操作都需要通過虛擬機管理程序。還有一種虛擬化虛擬機管理程序,KVM是最流行的一種(安裝在個人電腦上的virtualbox和工作站也是)。它們依賴于主機操作系統(tǒng)。這樣做的好處是他們可以充分利用主機的各種資源管理和驅動,但是效率會打折扣。下圖是使用IO時KVM的流程圖。
當然,從完全虛擬化、半虛擬化和硬件輔助虛擬化的角度來看,數(shù)據中心現(xiàn)在基本上是硬件輔助虛擬化。完全虛擬化完全依靠軟件模擬,半虛擬化需要修改操作,讓他們知道自己在虛擬環(huán)境中運行。硬件輔助為每個Guest OS提供一組寄存器,Guest OS可以直接在特權級運行,從而提高效率。
雖然VMware的ESXI仍然是數(shù)據中心的主要虛擬化軟件,但KVM正在慢慢趕上OpenStack,KVM是開源的。下面簡單介紹一下KVM。KVM是基于內核的,從內核2.6開始帶。它可以在x86和power等主流架構上運行。KVM主要是CPU和內存的虛擬化,其他設備的虛擬化和虛擬機的管理都需要QEMU。一個虛擬機本質上就是一個進程,運行在qemu-KVM進程地址空,KVM (kernel 空)和QEMU (user 空)相結合,為用戶提供一個完整的虛擬化環(huán)境。
2.網絡虛擬化
網絡虛擬化是一種重要的網絡技術,它可以在物理網絡上虛擬多個隔離的虛擬網絡,而不依賴于底層的物理連接,并且可以動態(tài)改變網絡拓撲結構,提供多租戶隔離,從而使不同的用戶可以使用獨立的網絡資源片,從而提高網絡資源的利用率,實現(xiàn)靈活的網絡。目前最火的是軟件定義網絡(SDN)。SDN的出現(xiàn)使得網絡虛擬化的實現(xiàn)更加靈活高效,同時網絡虛擬化也成為SDN應用中的一個重量級應用。其核心技術OpenFlow將網絡設備的控制平面和數(shù)據平面分開,從而實現(xiàn)對網絡流量的靈活控制,使網絡作為一個管道更加智能化。
通過SDN實現(xiàn)網絡虛擬化包括物理網絡管理、網絡資源虛擬化和網絡隔離三個部分。這三部分往往由專門的中間層軟件來完成,我們稱之為網絡虛擬化平臺。虛擬化平臺需要完成物理網絡管理和抽象虛擬化,并提供給不同的租戶。此外,虛擬化平臺還應該實現(xiàn)不同租戶之間的相互隔離,以確保不同租戶之間互不影響。虛擬化平臺的存在使得租戶無法感知網絡虛擬化的存在,即虛擬化平臺可以實現(xiàn)用戶透明的網絡虛擬化。
(1)虛擬化平臺
虛擬化平臺是數(shù)據網絡拓撲和租戶控制器之間的中間層。面向數(shù)據平面,虛擬化平面是控制器;對于租戶控制器,虛擬化平臺就是數(shù)據平面。因此,虛擬化平臺本質上有兩個屬性:數(shù)據平面和控制平面。在虛擬化的核心層,虛擬化平臺需要完成從物理網絡資源到虛擬資源的虛擬化映射過程。面對租戶控制器,虛擬化平臺充當數(shù)據平面,并將模擬的虛擬網絡呈現(xiàn)給租戶控制器。從租戶控制器往下看,只能看到自己的虛擬網絡,不知道真實的物理網絡。從數(shù)據角度看,虛擬化平臺就是控制器,交換機并不知道虛擬平面的存在。因此,虛擬化平臺的存在實現(xiàn)了租戶和底層網絡的透明虛擬化,管理所有物理網絡拓撲,為租戶提供隔離的虛擬網絡。
網絡虛擬化平臺示意圖
虛擬化平臺不僅可以實現(xiàn)物理拓撲到虛擬拓撲的“一對一”映射,還可以實現(xiàn)物理拓撲的“多對一”映射。由于租戶網絡不能壟斷物理平面的交換機,所以虛擬網絡本質上實現(xiàn)了“一虛多”和“多虛一”的虛擬化。這里的“一個虛擬多臺”是指單個物理交換機可以虛擬映射到多個虛擬租戶網絡中的邏輯交換機,從而由不同的租戶共享;“多個虛擬交換機”是指將多個物理交換機和鏈路資源虛擬化為一個大型邏輯交換機。也就是說,租戶眼中的交換機可以通過多個物理交換機進行物理連接。
將單個虛擬節(jié)點映射到多個物理節(jié)點
(2)網絡資源虛擬化
為了實現(xiàn)網絡虛擬化,虛擬化平臺需要對物理網絡資源進行抽象虛擬化,包括拓撲虛擬化、節(jié)點資源虛擬化和鏈路資源虛擬化。
拓撲虛擬化
拓撲虛擬化是網絡虛擬化平臺最基本的功能。虛擬平臺需要完成從虛擬節(jié)點和虛擬鏈路到租戶虛擬網絡中物理節(jié)點和鏈路的映射。這包括“一對一”和“一對多”映射。在“一對一”映射中,虛擬節(jié)點將映射到物理節(jié)點,虛擬鏈路也是如此。在“一對多”映射中,一個虛擬節(jié)點可以映射成多個連接在一起的物理節(jié)點;邏輯鏈路也可以映射到鏈接在一起的多個鏈路。對于物理節(jié)點,一個物理節(jié)點可以被多個邏輯節(jié)點映射。
節(jié)點資源虛擬化
節(jié)點資源的虛擬化包括節(jié)點Flow表、CPU等資源的抽象虛擬化。流表資源本身就是交換節(jié)點的稀缺資源。如果可以虛擬化,然后由虛擬化平臺分配給不同的租戶,那么不同的租戶可以分配和限制節(jié)點資源的使用。拓撲抽象只是完成了從虛擬節(jié)點到物理節(jié)點的映射,并沒有指定不同用戶/租戶對物理節(jié)點資源的分配。如果要對網絡進行更細粒度的虛擬化,就需要對節(jié)點資源進行虛擬化。
鏈接資源虛擬化
和節(jié)點資源一樣,鏈路資源也是網絡中重要的資源,但是拓撲抽象并沒有規(guī)定一些用戶可以使用多少鏈路資源。因此,為了實現(xiàn)鏈路資源的合理分配,有必要對鏈路資源進行虛擬化??梢猿橄筇摂M化的鏈路資源包括租戶可用的帶寬、端口的隊列資源等。
(3)網絡隔離
網絡資源虛擬化只是完成了從物理資源到虛擬資源的抽象過程。為了實現(xiàn)完整的網絡虛擬化,需要為不同的租戶提供隔離的網絡資源。網絡隔離需要隔離SDN的控制平面和數(shù)據平面,以保證不同租戶控制器之間的互補干擾和不同虛擬網絡之間的隔離。另外,為了滿足用戶在地址空之間的定制需求,虛擬化平臺還需要對網絡地址進行虛擬化。
控制平面隔離
控制器的性能對SDN的整體性能影響很大,所以虛擬化平臺需要保證租戶的控制器在運行時不受其他租戶控制器的影響,從而保證租戶可以使用虛擬化平臺的資源。虛擬化平臺連接到租戶控制器時,需要保證進程能夠獲得一定的資源,比如CPU資源。虛擬化平臺本身可以輕松地將租戶的控制器相互隔離。
數(shù)據平面隔離
數(shù)據平面的資源包括節(jié)點的CPU和流表、鏈路帶寬、端口的隊列資源等。為了保證每個租戶的正常使用,需要相應隔離數(shù)據平面的資源,以保證租戶的資源不被其他租戶占用。如果資源沒有在數(shù)據平面上隔離,那么數(shù)據平面上租戶的數(shù)據之間就會產生競爭,不能保證租戶對網絡資源的需求,所以需要在數(shù)據平面上隔離資源。
地址隔離
為了使租戶能夠在自己的虛擬租戶網絡中任意使用地址,虛擬化平臺需要完成地址隔離。地址隔離主要通過地址映射來實現(xiàn)。租戶可以隨意定制地址空,這些地址是面向租戶的虛擬化平臺虛擬地址。虛擬化平臺在轉發(fā)租戶控制器南行協(xié)議報文時,需要將虛擬地址翻譯成整個網絡唯一的物理地址。租戶服務器的地址在發(fā)送到接入交換機時會被修改為物理地址,然后數(shù)據包的轉發(fā)會基于修改后的物理地址。當數(shù)據到達租戶目的地址的主機出口時,控制器需要將該地址轉換為原租戶設置的地址,從而完成地址的虛擬映射。地址的虛擬映射使租戶可以使用完整的地址空和任意的FlowSpace (flow 空:由流表匹配項組成的多維空),而物理層實現(xiàn)地址隔離,使不同租戶使用特定的物理地址和數(shù)據不會相互干擾。
3.存儲虛擬化
存儲虛擬化是一種貫穿整個信息技術環(huán)境的技術,用于簡化原本可能相對復雜的底層基礎架構。存儲虛擬化的思想是將資源的邏輯映像從物理存儲中分離出來,從而為系統(tǒng)和管理員提供簡化和無縫的資源虛擬視圖。存儲虛擬化在云計算之前已經發(fā)展了很長時間,與云計算沒有特別的關系。云計算存儲通常指亞馬遜的S3存儲或EBS存儲,它將一個統(tǒng)一的資源庫劃分為多個用戶。
對用戶來說,虛擬化存儲資源就像一個巨大的“存儲池”。用戶看不到特定的磁盤和磁帶,也不必關心他們的數(shù)據通向哪個特定的存儲設備。
從管理角度來看,虛擬存儲池采用集中式管理,根據具體需求動態(tài)分配存儲資源給各種應用。值得指出的是,通過使用虛擬化技術,磁帶庫可以由磁盤陣列模擬,為應用程序提供與磁盤一樣快但與磁帶庫一樣大的存儲資源。這就是VTL,虛擬磁帶庫(VTL),它如今被廣泛使用,在當今的企業(yè)存儲系統(tǒng)中扮演著越來越重要的角色。
主流存儲虛擬化有以下三種技術。在云計算場景中,通常會根據實際場景選擇合適的技術。
療養(yǎng)院
先說高端存儲。現(xiàn)在高端存儲應該是以EMC、IBM、HDS為主。近年來,外部存儲隨著廉價磁盤不斷提高容量和性能,推動了存儲區(qū)域網絡和主機光纖通道接口的不斷成熟,在數(shù)據中心,尤其是金融領域變得非常普遍。
存儲區(qū)域網絡提供塊存儲。例如,一個磁盤陣列中有10個測試數(shù)據磁盤,然后10個數(shù)據磁盤可以按磁盤陣列或邏輯卷(LVM)劃分。但是,這10個數(shù)據磁盤不同于以前的物理磁盤。邏輯盤可以具有提供100克的第一物理盤和提供300克的第二物理盤。對于操作系統(tǒng)來說,無法感知是物理磁盤還是邏輯磁盤,這就是存儲資源池的概念。RAID或LVM不僅可以提供數(shù)據保護,還可以重新劃分磁盤大小,提高讀寫速率。
但是SAN也不是沒有缺點,價格也比較貴。光纖端口和光纖交換機價格高,所以有IPSAN存儲,存儲協(xié)議由IP協(xié)議承載;無法提供數(shù)據共享,一個磁盤只能掛在一臺主機上,所以有NAS存儲。
噪聲控制協(xié)會
NAS是文件存儲。與塊存儲相比,文件存儲具有最大的數(shù)據共享優(yōu)勢。它基于標準的網絡協(xié)議,存儲區(qū)域網絡有自己的一套存儲協(xié)議。常見的NAS包括NFS、FTP、HTTP文件服務器等。由于這類設備通常有IP,一般客戶端可以作為數(shù)據網關服務器直接訪問。網絡連接存儲建立在傳統(tǒng)網絡上,因此可以遠距離傳輸。NAS易于安裝和維護,但速度通常比SAN慢很多。
分布式存儲
隨著x86性能的提高,用x86芯片搭建的小型存儲系統(tǒng)開始在中端存儲領域嶄露頭角。利用X86本地磁盤構建大型存儲集群。分布式存儲通??梢蕴峁K存儲和文件存儲。沒有必要引入與OpenStack緊密集成的分布式存儲ceph。下圖是ceph官網的整體模塊圖,提供了CEPH FS文件存儲系統(tǒng)和POSIX接口,對象存儲和最常用的快速存儲。
其基石是以下RADOS,然后是系統(tǒng)組件,包括:
ceph osds:ceph的OSD(對象存儲設備)守護進程。主要功能包括:數(shù)據存儲、復制數(shù)據處理、數(shù)據恢復、數(shù)據補償、平衡數(shù)據分布。并提供一些與數(shù)據相關的監(jiān)控信息給cephmonitor,讓cephmonitor可以檢查其他OSD的心跳狀態(tài)。CEPH存儲集群需要至少兩個CEPH操作系統(tǒng)才能有效存儲兩個數(shù)據。請注意,這里的兩個ceph OSD指的是運行在兩個物理服務器上的守護進程,而不是一個物理服務器上的兩個ceph OSD。
監(jiān)視器:CEPH的Moniter守護進程,其主要功能是維護集群狀態(tài)表組,該組包含多個表,包括Moniter:CEPH、OSD映射、PG(放置組)映射和CRUSH映射。
mdss:ceph的MDS(元數(shù)據服務器)守護進程,主要保存ceph文件系統(tǒng)的元數(shù)據。請注意,CEPH的數(shù)據塊設備和CEPH對象存儲都不需要CEPH MDS守護程序。Cephemds為基于POSIX文件系統(tǒng)的用戶提供了一些基本命令,比如ls、find等。,可以大大降低CPEH存儲集群的壓力。
另一個開源對象存儲是openstack的Swift。Swift的初衷是低成本存儲超大容量的數(shù)據。swift使用容器來管理對象,允許用戶存儲、檢索和刪除對象及其元數(shù)據,所有這些都是通過用戶友好的RESTful界面完成的。