資源描述:
《分布式存儲基礎(chǔ)、Ceph、cinder及華為軟件定義的存儲方案.docx》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在應用文檔-天天文庫。
1、塊存儲與分布式存儲塊存儲,簡單來說就是提供了塊設(shè)備存儲的接口。通過向內(nèi)核注冊塊設(shè)備信息,在Linux中通過lsblk可以得到當前主機上塊設(shè)備信息列表。本文包括了單機塊存儲介紹、分布式存儲技術(shù)Ceph介紹,云中的塊存儲Cinder,以及華為軟件定義的存儲解決方案。單機塊存儲一個硬盤是一個塊設(shè)備,內(nèi)核檢測到硬盤然后在/dev/下會看到/dev/sda/。因為需要利用一個硬盤來得到不同的分區(qū)來做不同的事,通過fdisk工具得到/dev/sda1,/dev/sda2等,這種方式通過直接寫入分區(qū)表來規(guī)定和切分硬盤,是最死板的
2、分區(qū)方式。分布式塊存儲在面對極具彈性的存儲需求和性能要求下,單機或者獨立的SAN越來越不能滿足企業(yè)的需要。如同數(shù)據(jù)庫系統(tǒng)一樣,塊存儲在scaleup的瓶頸下也面臨著scaleout的需要。分布式塊存儲系統(tǒng)具有以下特性:分布式塊存儲可以為任何物理機或者虛擬機提供持久化的塊存儲設(shè)備;分布式塊存儲系統(tǒng)管理塊設(shè)備的創(chuàng)建、刪除和attach/detach;分布式塊存儲支持強大的快照功能,快照可以用來恢復或者創(chuàng)建新的塊設(shè)備;分布式存儲系統(tǒng)能夠提供不同IO性能要求的塊設(shè)備?,F(xiàn)下主流的分布式塊存儲有Ceph、AMSESB、阿里云磁
3、盤與sheepdog等。1Ceph1.1Ceph概述Ceph目前是OpenStack支持的開源塊存儲實現(xiàn)系統(tǒng)(即Cinder項目backenddriver之一)。Ceph是一種統(tǒng)一的、分布式的存儲系統(tǒng)?!敖y(tǒng)一的”意味著Ceph可以一套存儲系統(tǒng)同時提供對象存儲、塊存儲和文件系統(tǒng)存儲三種功能,以便在滿足不同應用需求的前提下簡化部署和運維?!胺植际健痹贑eph系統(tǒng)中則意味著真正的無中心結(jié)構(gòu)和沒有理論上限的系統(tǒng)規(guī)??蓴U展性。Ceph具有很好的性能、可靠性和可擴展性。其核心設(shè)計思想,概括為八個字—“無需查表,算算就好”。1.
4、1Ceph系統(tǒng)的層次結(jié)構(gòu)自下向上,可以將Ceph系統(tǒng)分為四個層次:基礎(chǔ)存儲系統(tǒng)RADOS(Reliable,Autonomic,DistributedObjectStore,即可靠的、自動化的、分布式的對象存儲);基礎(chǔ)庫LIBRADOS;高層應用接口:包括了三個部分:RADOSGW(RADOSGateway)、RBD(ReliableBlockDevice)和CephFS(CephFileSystem)。RADOS由兩個組件組成:一種是數(shù)量很多、負責完成數(shù)據(jù)存儲和維護功能的OSD(ObjectStorageDevi
5、ce)。另一種則是若干個負責完成系統(tǒng)狀態(tài)檢測和維護的Monitor。OSD和monitor之間相互傳輸節(jié)點狀態(tài)信息,共同得出系統(tǒng)的總體工作狀態(tài),并形成一個全局系統(tǒng)狀態(tài)記錄數(shù)據(jù)結(jié)構(gòu),即所謂的clustermap。這個數(shù)據(jù)結(jié)構(gòu)與RADOS提供的特定算法相配合,便實現(xiàn)Ceph“無需查表,算算就好”的核心機制以及若干優(yōu)秀特性。OSD可以被抽象為兩個組成部分,即系統(tǒng)部分和守護進程(OSDdeamon)部分。OSD的系統(tǒng)部分本質(zhì)上就是一臺安裝了操作系統(tǒng)和文件系統(tǒng)的計算機,其硬件部分至少包括一個單核的處理器、一定數(shù)量的內(nèi)存、一塊
6、硬盤以及一張網(wǎng)卡。在上述系統(tǒng)平臺上,每個OSD擁有一個自己的OSDdeamon。這個deamon負責完成OSD的所有邏輯功能,包括與monitor和其他OSD(事實上是其他OSD的deamon)通信以維護更新系統(tǒng)狀態(tài),與其他OSD共同完成數(shù)據(jù)的存儲和維護,與client通信完成各種數(shù)據(jù)對象操作等等。1.1Ceph中的數(shù)據(jù)尋址用戶存儲數(shù)據(jù)時的數(shù)據(jù)路由過程如下圖所示:首先明確幾個概念:File——用戶需要存儲或者訪問的文件。對于一個基于Ceph開發(fā)的對象存儲應用而言,這個file也就對應于應用中的“對象”,也就是用戶直
7、接操作的“對象”。Ojbect——RADOS所看到的“對象”。Object與上面提到的file的區(qū)別是,object的最大size由RADOS限定(通常為2MB或4MB),以便實現(xiàn)底層存儲的組織管理。因此,當上層應用向RADOS存入size很大的file時,需要將file切分成統(tǒng)一大小的一系列object(最后一個的大小可以不同)進行存儲。PG(PlacementGroup)——顧名思義,PG的用途是對object的存儲進行組織和位置映射。具體而言,一個PG負責組織若干個object(可以為數(shù)千個甚至更多),但一個
8、object只能被映射到一個PG中,即,PG和object之間是“一對多”映射關(guān)系。同時,一個PG會被映射到n個OSD上,而每個OSD上都會承載大量的PG,即,PG和OSD之間是“多對多”映射關(guān)系。在實踐當中,n至少為2,如果用于生產(chǎn)環(huán)境,則至少為3。一個OSD上的PG則可達到數(shù)百個。事實上,PG數(shù)量的設(shè)置牽扯到數(shù)據(jù)分布的均勻性問題。OSD——即object