Openstack 幹掉 VMWare(2)
現在openstack很多實際生產案例都使用分布式存儲ceph用於各個組件使用,今天主要從存儲這個角度分析一下openstack與vmware的對比。首先簡單說一下openstack和ceph的關系,ceph是OpenStack的主流後端存儲,和OpenStack親如兄弟,為OpenStack提供統一共享存儲服務。接下來簡單介紹ceph分布式存儲,ceph是近來迅速崛起的開源分布式存儲系統,它主要有以下幾個特性:
1.多副本特性,即類似Raid1的冗余特性確保數據安全,可以是1個副本2個副本3個副本多個副本;
2.寫時復制COW特性,即當有數據寫入的時候才占用存儲空間;有了這個特性,空間的使用效率比傳統存儲大大提高;
3.數據條帶化特性,即有IO並發讀寫特性,這樣可以解決一個讀取效率的問題,即磁盤越多,讀寫IO效率越高;
4.thin provisioning特性,即按需分配空間,類似Linux文件系統的sparse稀疏文件;
我盡量以最簡要的語言進行描述,其他很多專業的概念和描述有興趣的話,可以自行參考網上相關資料。以上幾個特性對於傳統存儲可以說是具有革命性的東西,現在從自己的認識加以描述。
當我第一次接觸ceph的時候,有一些疑慮,比如:對於小規模的應用場景ceph是不是顯得大材小用,如果使用多副本,比如一般使用3個副本,那實際容量只有三分之一,那空間浪費很嚴重,怎麽達到冗余和效率的平衡;再比如,如何確保在擁有多個磁盤的單臺物理機故障的情況下保證數據的安全;再比如,ceph的使用和維護會不會很麻煩,硬盤故障更換是不是很麻煩等等。現在經過一定的使用實踐,我的這些疑慮都消失了。
首先,最實際的問題,冗余和空間的使用效率問題,我自己做過測試,在確保數據安全,ceph集群數據池pool采用3副本的情況下,openstack孵化10個20G大小raw格式的虛擬機,實際占用的ceph存儲空間是30多G,按照傳統存儲,如果使用raw格式的鏡像,占用空間是實打實的,10個20G大小的虛擬機,那麽占用的空間就是200G,所以,對於ceph的多副本確保數據安全而“浪費”掉的空間,很容易就被“節約”回來了,所以,ceph的空間使用效率是非常高的。其中它是怎麽實現的,太專業我不想多描述我也有些力不從心,可以參考我的另一篇博客“
再次,數據冗余方面的實踐問題。由於ceph是將一個存儲目標打散分布在多個pg中,多個pg又分布在osd中,一個osd對應一個磁盤,如果擁有多個磁盤的服務器發生故障,導致這臺服務器上所有磁盤及osd都不可用,那麽數據是不是會丟失,經過實際驗證,並不會丟失,ceph通過Crush(Controlled Replication Under Scalable Hashing)算法的多層級的結構,用數據“桶”的概念,在分配pg的時候會避免將2個副本放在同一“桶”內,比如,第一級的桶是osd(磁盤),第二級是host(主機),第三級是chassis(機框),第4級是rack(機架),等等,甚至你可以自己再定義新的“桶”層級,但是一般來說,用這些通用的層級就夠了。
再再次,使用維護是不是會很復雜的問題。通過openstack的kolla進行部署的ceph,是通過docker容器實現的,如果需要新增磁盤osd,剔除故障磁盤osd,都可以非常容易實現,可以參考這兩篇文章:“Openstack 之 kolla 部署ceph”、“Openstack 之 ceph更換故障磁盤” 。
說了這麽些,好像還沒提到vmware什麽事情,現在來說說vmware和使用ceph的openstack在存儲方面的比較。
1.虛擬機冗余功能方面的比較。openstack在生產落地的時候相對於vmware一直有一個軟肋就是虛擬機的冗余特性不能得到很好的解決,自從和ceph結合以後,這個問題得到了解決,而且解決成本幾乎為0。為什麽這麽說,vmware使用虛擬機的storage vmotion特性,需要購買它的企業版以上才有這個特性,另外,要實現所有虛擬機冗余的相關功能,不管是HA也好,vMostion也好,還是FT也好,都有一個前提條件,就是必須要有共享存儲,而配置磁盤陣列作為共享存儲大家都知道是一個不小的投入(自己搭建一個服務器作為共享存儲隨便玩玩的除外)。而openstack使用ceph則不一樣,不需要復雜的配置,不需要集中式的磁盤陣列,因為ceph本身天然就是分布式存儲,天然的就是有冗余的特性,因此openstack使用ceph存儲,可以很容易就能實現虛擬機的熱遷移,即虛擬機不關機的狀態下從一臺物理服務器遷移到另一臺物理服務器,也很容易就能實現虛擬機的遣散(evacuate)功能,即將一臺物理服務器上所有的虛擬機遷移到另一臺服務器。
2.磁盤IO性價比的比較。vmware虛擬機的磁盤IO效率依靠物理硬件本身,比如使用raid0,數據條帶化,可以提高並行讀寫速度,再比如可以通過使用SSD固態硬盤,依靠集中的磁盤陣列的高速存儲等等。而使用分布式存儲ceph的openstack的虛擬機磁盤IO效率憑借分布式存儲固有的分布式特性,磁盤越多,並行IO讀寫效率越高,同樣也可以通過使用SSD固態硬盤實現高速存儲池,滿足不同等級的存儲需求,比如使用一般的磁盤組成的存儲池供對象存儲使用,使用SSD固態硬盤組成的存儲池供nova的image使用。兩者當中的差別是什麽,對,成本,就是成本,ceph可以不需要磁盤陣列,全部使用服務器自己,完成分布式存儲的構建,靈活而且廉價。
3.擴展性的比較。這個方面就更不用說了,vmware直接舉白旗。vmware擴容到後期主要瓶頸就在存儲上面,必須提高集中式的磁盤陣列的容量和性能,擴容到它所用磁盤陣列的極限的時候,只有再增加新的磁盤陣列進行擴容,而大家都懂的,IT基礎設施裏面什麽最貴,對了,磁盤陣列,就是磁盤陣列。而使用了ceph的openstack就不同了,存儲容量需要擴展的時候,直接在物理服務器上加磁盤osd,直接在openstack集群裏面增加存儲節點host,而且越加越high,因為分布式存儲的特性就是越多的osd(對象存儲設備),IO性能越high ,對於ceph來說,可擴展性是它最擅長的事情。
以上都是想到哪兒就寫到哪兒,今天就寫到這裏,後面想到新的東西的時候再寫。
Openstack 幹掉 VMWare(2)