王建宇
[摘 要]在目前開源世界的存儲項目中,不同的項目都有側重點,然而,存儲接口需求、擴展、運維和成本是企業級存儲產品的四大關注點。Ceph是一種支持對象存儲、塊存儲、文件存儲的獨特統一的系統,具有高可用、易管理、免費等特點。本文介紹了當下流行的Ceph分布式存儲架構,描述了Ceph的基本結構每個組件的作用及如何創建和優化Ceph集群,并就Ceph作為OpenStack的后端存儲、高效集成,及CRUSH算法進行了分析。
[關鍵詞]OpenStack;Nova;Cinder;Ceph;RADOS
doi:10.3969/j.issn.1673 - 0194.2016.04.121
[中圖分類號]TP333 [文獻標識碼]A [文章編號]1673-0194(2016)04-0-01
1 OpenStack的后端存儲
OpenStack是目前最流行的開源云平臺技術,是云計算公司賴以實現IaaS服務形式的重要解決方案。OpenStack所包含的組件相對較多,各個組件間存在依賴關系,如每個組件都會依賴Keystone,Nova還依賴于Glance、Neutron和Cinder;此外多個組件,如Neutron、Cinder和Glance還存在多種存儲后端。
2 Ceph的基本原理和架構
Ceph是一個開源、統一、分布式的存儲系統,是一套適于大規模的、宏大的分布式存儲解決方案,同時提供文件、塊與對象服務的系統,適于大PB級別的應用。Ceph的主要目標是設計成基于POSIX的沒有單點故障的分布式文件系統,使數據能容錯和無縫的復制。
(1)Ceph Client是Ceph文件系統的用戶,透明地為用戶提供訪問接口。
Ceph客戶端包括下面幾項服務接口:
Block Devices:Ceph RADOS Block Device(RBD)服務提供可調整大小、thin-provisioned并支持快照和克隆的塊設備。Object Storage:Ceph Object Storage服務提供了與亞馬遜S3和openstack Swift兼容的RESTful API接口。
(2)元數據服務器MDS的工作就是緩存和同步分布式元數據,管理文件系統的名稱空間。雖然元數據和數據兩者都存儲在對象存儲集群,但兩者分別管理,支持可擴展性。事實上,元數據在一個元數據服務器集群上被進一步拆分,元數據服務器能夠自適應地復制和分配名稱空間,避免出現熱點。
(3)OSD:將數據和元數據作為對象存儲。每一個disk、SSD或RAID group或其他一個物理存儲設備都成為一個OSD,主要負責存儲和查找對象,并且負責向該對象的復制節點分發和恢復。OSD是訪問文件系統并向其中寫入數據的后臺進程,它提供了通過集群網絡訪問文件系統的能力。
(4)Monitor:執行監視功能,維護集群的成員和狀態,提供強一致性的決策。但是故障管理的一些要素是在對象存儲本身中執行的。當對象存儲設備發生故障或者新設備添加時,監視器就檢測和維護一個有效的集群映射。這個功能按一種分布的方式執行,這種方式中映射升級可以和當前的流量通信。
3 Ceph與Swift的比較
Ceph和Swift是開源分布式存儲系統中的兩個優秀代表,Swift最早起源于2008年,設計目標十分純粹,就是一個優秀的、可以和Amazon S3相媲美的對象存儲系統。從技術上講,Swift的特點主要體現在設計目標明確,就是要做一個純粹的對象存儲系統,因此不會考慮Ceph所強調的統一存儲特性。同時,為了便于和其他項目、應用集成,Swift選擇了Python語言進行開發。
在實際使用中,畢竟還是需要進行方案選擇,如果你只需要用塊存儲,那當然是Ceph,如果只需要用對象存儲,那當然是Swift。各自有擅長的地方,不過現在Ceph也支持對象存儲,那么,即要用對象存儲又要用塊存儲的場合,是用Swift還是Ceph呢?筆者一般是這樣推薦的:
(1)如果節點數量很大,推薦用Ceph單獨做塊,用Swift做對象存儲,因為在節點數量較大時,Ceph的維護成本比Swift要高,大多數場景實際應用的時候會發現,大部分數據都可以放到對象存儲上。
(2)如果節點數量少,那就用Ceph統一搞定,因為一般認為生產環境中最小的分布式存儲應當有5個節點,所以,如果節點數量少于10個或者剛到10個,那構建兩個分布式存儲顯然是不理想的(考慮到空間劃分問題)。
(3)如果團隊里有技術高手能較好解決Ceph大規模部署問題,最好用Ceph。
4 OpenStack與Ceph的整合
對于一個IaaS系統,涉及存儲的部分主要是塊存儲服務模塊、對象存儲服務模塊、鏡像管理模塊和計算服務模塊。具體針對OpenStack而言,則分別對應為其中的Cinder、Swift、Glance和Nova等4個項目。
在計算服務部分,目前正在推動將Ceph FS作為Nova計算節點的本地文件系統。使用CephFS作為OpenStack中的共享實例存儲可以在OpenStack中使用Ceph塊設備鏡像,Ceph塊設備鏡像被當作集群對象。還可以使用OpenStack Glance來存儲鏡像在Ceph塊設備中。OpenStack的Nova、Glance、Cinder之間沒有數據傳輸,快速創建虛擬機,只需要管理一個統一存儲。
5 結 語
總體而言,Ceph是面向大型存儲應用的,用以解決企業各種應用類型的復雜情況,需要專業的技術服務團隊作技術支撐。中小企業沒有這么多數據要存儲也沒有足夠的錢請專業技術服務團隊運維,那么中小企業也可以使用NFS、ISCSI用于存儲虛擬機鏡像或作為虛擬機的附加卷來配合OpenStack使用。
主要參考文獻
[1]李剛建.基于虛擬化技術的云計算平臺架構研究[J].吉林建筑工程學院學報,2011(1).
[2]閃四清.ERP系統原理和實施[M].第2版.北京:清華大學出
版社,2013.