雲虛擬化實現技術簡介


什么是雲技術

雲技術(Cloud technology)基於雲計算商業模式應用的網絡技術、信息技術、整合技術、管理平台技術、應用技術等的總稱,可以組成資源池,按需所用,靈活便利。

------百度百科

 

這里面最關鍵的點是資源池(通過虛擬化技術實現),按需提供(隱含動態擴容,客戶會因為業務擴展而擴展容量)。

什么是虛擬化

虛擬化是一個廣義的術語,在計算機方面通常是指計算元件在虛擬的基礎上而不是真實的基礎上運行。虛擬化技術可以擴大硬件的容量,簡化軟件的重新配置過程。

------百度百科

                                       

簡略來說就是通過虛擬化技術來實現硬件資源的虛擬化(池化)管理。

那么,我們的硬件資源包含哪些資源呢?如下圖,可以看到有服務器,存儲和網絡資源。

那我們就需要對於服務器,存儲和網絡資源進行虛擬化。下圖可以看到虛擬化的技術也分成這3類,通過xen/vmware實現虛擬服務器,通過IBM的XIV或NAS實現存儲的虛擬化。通過單根I/O 虛擬化技術等實現網絡虛擬化。

 

資源類型展開

物理服務器資源

物理服務器包含本地硬盤,CPU,RAM,網卡資源。通過vmware/xen/kvm在本地啟動多個虛擬機而實現資源的細分粒度化。

 

存儲資源

專用的存儲設備,物理服務器本地硬盤。

存儲虛擬化可在三個層次上實現,分別是:基於主機的虛擬化、基於存儲設備的虛擬化、基於網絡的虛擬化。

 

網絡資源              

網絡資源包含HUB,路由器,交換機,防火牆,網卡設備等。

 

虛擬化實現技術講解

計算虛擬化

服務器虛擬化也是目前談得最多的所謂計算虛擬化。如下我以KVM作為例子來進行講解。

KVM通過虛擬機實現網絡,存儲,內存,CPU的虛擬化。

從用戶角度來說,其就像擁有一台物理服務器。

通過啟動時指定CPU,和RAM實現CPU,內存的虛擬化。通過掛載磁盤(也可以掛載遠程磁盤),實現磁盤虛擬化。通過虛擬網卡,linux bridge的方式實現網絡虛擬化。

 

問題:

1)  CPU需要進行擴容怎么辦?擴容是否有上限?

這個問題,困擾了很久。因為本地物理機可能已經預先把所有的CPU cores分配給了幾台虛擬機,如果要擴容,難道要占用其它的虛擬機的CPU資源?

是的,vCPU是可以被KVM進行調度的,KVM可以根據資源調度把vCPU調度到其它GuestOS.

那如果擴容的vCPU超出了本地物理機的CPU cores的上限怎么辦?

這可以采用虛擬機熱遷移的方式,實現本地虛擬機快速恢復到其它硬件平台上。如此實現擴容。

 

2)  RAM需要擴容怎么辦?

內存的虛擬化是通過內存映射實現的。可以通過軟件實現。而實際上因為軟件的效率較低,很多硬件產商也支持了硬件輔助虛擬化。

 

 

Guest機器所用的內存,可以大於物理機的內存(專業術語叫:內存超配)。可以通過內存氣泡技術,來進行內存回收,把內存釋放后給內存使用率高的機器使用。

 

3)  磁盤需要擴容怎么辦?

如果是本地磁盤,可以增加新的磁盤設備掛載。或者增加磁盤到LVM。

 

4)  需要增加一個網卡設備怎么辦?

網卡設備的虛擬化,有很多種實現技術。你需要明白的就是虛擬網卡並不需要與實際物理網卡設備相一致,它是可以遠多於物理網卡個數的。如此,增加一個虛擬網卡設備也就是很容易的事情了。

 

 

存儲虛擬化實現技術講解

需要注意的是與上面所述的KVM的虛擬化存儲分開來。KVM存儲虛擬化指的是通過KVM來管理存儲設備。而這里的存儲虛擬化指的是如何實現存儲的虛擬池化。

 

特別需要指出的是,網絡存儲設備通常來說時延都比本地磁盤大得多。

而數據庫軟件對於磁盤IO的性能要求特別的高。所以,這就是為何雲RDS,一般都是使用本地磁盤(當然,一般雲產商都提供了幾種不同性能的磁盤供選擇)。

存儲虛擬化的原理

 

裸設備+邏輯卷虛擬化結構

 

 

網絡虛擬化實現技術講解

在我們的印象中,網絡就是由各種網絡設備(如交換機、路由器)相連組成的一個網狀結構,世界上的任何兩個人都可以通過網絡建立起連接。

網絡虛擬化和計算、存儲的虛擬化類似,總結起來也是“一個虛擬多個,多個虛擬一個”。網絡虛擬化包括了網卡的虛擬化、鏈路層虛擬化、網絡層虛擬化。通過SR-IOV技術可以實現一個物理網卡虛擬多個網卡,還可以通過tap/veth等純軟件的方式實現網卡虛擬化。鏈路層的虛擬化主要通過虛擬交換機,實現網絡包的VLAN設置、隧道建立等。網絡層虛擬化包括VPN、overlay網絡等,創建一套隔離的三層網絡。

 

傳統網絡架構#

在傳統網絡環境中,一台物理主機包含一個或多個網卡(NIC),要實現與其他物理主機之間的通信,需要通過自身的 NIC 連接到外部的網絡設施,如交換機上,如下圖所示。

 

 

這種架構下,為了對應用進行隔離,往往是將一個應用部署在一台物理設備上,這樣會存在兩個問題

1)是某些應用大部分情況可能處於空閑狀態,

2)是當應用增多的時候,只能通過增加物理設備來解決擴展性問題。不管怎么樣,這種架構都會對物理資源造成極大的浪費。

虛擬化網絡架構#

為了解決這個問題,可以借助虛擬化技術對一台物理資源進行抽象,將一張物理網卡虛擬成多張虛擬網卡(vNIC),通過虛擬機來隔離不同的應用。

這樣對於上面的問題

針對問題 1),可以利用虛擬化層 Hypervisor 的調度技術,將資源從空閑的應用上調度到繁忙的應用上,達到資源的合理利用;

針對問題 2),可以根據物理設備的資源使用情況進行橫向擴容,除非設備資源已經用盡,否則沒有必要新增設備。這種架構如下所示。

 

其中虛擬機與虛擬機之間的通信,由虛擬交換機完成,虛擬網卡和虛擬交換機之間的鏈路也是虛擬的鏈路,整個主機內部構成了一個虛擬的網絡,如果虛擬機之間涉及到三層的網絡包轉發,則又由另外一個角色——虛擬路由器來完成。

一般,這一整套虛擬網絡的模塊都可以獨立出去,由第三方來完成,如其中比較出名的一個解決方案就是 Open vSwitch(OVS)。

OVS 的優勢在於它基於 SDN 的設計原則,方便虛擬機集群的控制與管理,另外就是它分布式的特性,可以「透明」地實現跨主機之間的虛擬機通信,如下是跨主機啟用 OVS 通信的圖示。

 

總結下來,網絡虛擬化主要解決的是虛擬機構成的網絡通信問題,完成的是各種網絡設備的虛擬化,如網卡、交換設備、路由設備等。

總結

其實關於雲上的虛擬化技術,當然也包含整套雲的實現技術本身就是一個相當復雜的工程。這也是為何市面上只存在屈指可數的少數幾家雲產商。

其實,我也根本沒有弄清楚很多具體細節。我的目的只是在頭腦中建立關於底層實現的一些概念,如此我使用雲產品的時候就會更清晰,更輕車熟路了。

 

文中定然會存在一些錯誤,以及沒有講解清楚的地方。因為根據我目前的理解程度,只能講解到這個層次。

也許隨着不斷的深入了解,過段時間我會產生更多不同的理解。

 

最后人的時間與精力是有限的。需要根據目前工作的重心進行適當調配。

 

參考資料

https://blog.csdn.net/qq_26562641/article/details/53256337

https://www.cnblogs.com/heimafeitian/p/9653232.html

https://zhuanlan.zhihu.com/p/377931138

https://my.oschina.net/u/3626804/blog/1822937

https://www.sohu.com/a/137672824_198222

https://blog.csdn.net/weixin_42813814/article/details/81738203

https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E8%AE%BE%E5%A4%87/7667828?fr=aladdin

https://www.cnblogs.com/kcxg/p/10653333.html

https://www.cnblogs.com/polly-ling/articles/7155087.html

https://www.cnblogs.com/sammyliu/p/4543597.html

https://www.cnblogs.com/myxxjie/p/11013155.html

https://max.book118.com/html/2019/0920/8074064037002051.shtm

https://blog.csdn.net/lic95/article/details/50293167

https://www.cnblogs.com/bakari/p/8037105.html

https://virtual.51cto.com/art/201902/591963.htm?pc

https://www.cnblogs.com/bakari/p/7966707.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM