分布式存儲基礎(chǔ)、Ceph、cinder及華為軟件定義的存儲方案_第1頁
分布式存儲基礎(chǔ)、Ceph、cinder及華為軟件定義的存儲方案_第2頁
分布式存儲基礎(chǔ)、Ceph、cinder及華為軟件定義的存儲方案_第3頁
分布式存儲基礎(chǔ)、Ceph、cinder及華為軟件定義的存儲方案_第4頁
分布式存儲基礎(chǔ)、Ceph、cinder及華為軟件定義的存儲方案_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、塊存儲與分布式存儲塊存儲,簡單來說就是提供了塊設(shè)備存儲的接口。通過向內(nèi)核注冊塊設(shè)備信息,在Linux中通過lsblk可以得到當(dāng)前主機上塊設(shè)備信息列表。本文包括了單機塊存儲介紹、分布式存儲技術(shù)Ceph介紹,云中的塊存儲Cinder,以及華為軟件定義的存儲解決方案。單機塊存儲一個硬盤是一個塊設(shè)備,內(nèi)核檢測到硬盤然后在/dev/下會看到/dev/sda/。因為需要利用一個硬盤來得到不同的分區(qū)來做不同的事,通過fdisk工具得到/dev/sda1, /dev/sda2等,這種方式通過直接寫入分區(qū)表來規(guī)定和切分硬盤,是最死板的分區(qū)方式。分布式塊存儲在面對極具彈性的存儲需求和性能要求下,單機或者獨立的SA

2、N越來越不能滿足企業(yè)的需要。如同數(shù)據(jù)庫系統(tǒng)一樣,塊存儲在scale up的瓶頸下也面臨著scale out的需要。分布式塊存儲系統(tǒng)具有以下特性: 分布式塊存儲可以為任何物理機或者虛擬機提供持久化的塊存儲設(shè)備; 分布式塊存儲系統(tǒng)管理塊設(shè)備的創(chuàng)建、刪除和attach/detach;分布式塊存儲支持強大的快照功能,快照可以用來恢復(fù)或者創(chuàng)建新的塊設(shè)備;分布式存儲系統(tǒng)能夠提供不同IO性能要求的塊設(shè)備?,F(xiàn)下主流的分布式塊存儲有Ceph、AMS ESB、阿里云磁盤與sheepdog等。1 Ceph1.1 Ceph概述Ceph目前是OpenStack支持的開源塊存儲實現(xiàn)系統(tǒng)(即Cinder項目backend

3、driver之一) 。Ceph是一種統(tǒng)一的、分布式的存儲系統(tǒng)?!敖y(tǒng)一的”意味著Ceph可以一套存儲系統(tǒng)同時提供對象存儲、塊存儲和文件系統(tǒng)存儲三種功能,以便在滿足不同應(yīng)用需求的前提下簡化部署和運維。“分布式”在Ceph系統(tǒng)中則意味著真正的無中心結(jié)構(gòu)和沒有理論上限的系統(tǒng)規(guī)??蓴U展性。Ceph具有很好的性能、可靠性和可擴展性。其核心設(shè)計思想,概括為八個字“無需查表,算算就好”。1.2 Ceph系統(tǒng)的層次結(jié)構(gòu)自下向上,可以將Ceph系統(tǒng)分為四個層次:基礎(chǔ)存儲系統(tǒng)RADOS(Reliable, Autonomic, Distributed Object Store,即可靠的、自動化的、分布式的對象存儲)

4、; 基礎(chǔ)庫LIBRADOS;高層應(yīng)用接口:包括了三個部分:RADOS GW(RADOS Gateway)、 RBD(Reliable Block Device)和Ceph FS(Ceph File System)。RADOS由兩個組件組成:一種是數(shù)量很多、負(fù)責(zé)完成數(shù)據(jù)存儲和維護功能的OSD( Object Storage Device)。另一種則是若干個負(fù)責(zé)完成系統(tǒng)狀態(tài)檢測和維護的Monitor。OSD和monitor之間相互傳輸節(jié)點狀態(tài)信息,共同得出系統(tǒng)的總體工作狀態(tài),并形成一個全局系統(tǒng)狀態(tài)記錄數(shù)據(jù)結(jié)構(gòu),即所謂的cluster map。這個數(shù)據(jù)結(jié)構(gòu)與RADOS提供的特定算法相配合,便實現(xiàn)Ce

5、ph“無需查表,算算就好”的核心機制以及若干優(yōu)秀特性。OSD可以被抽象為兩個組成部分,即系統(tǒng)部分和守護進(jìn)程(OSD deamon)部分。OSD的系統(tǒng)部分本質(zhì)上就是一臺安裝了操作系統(tǒng)和文件系統(tǒng)的計算機,其硬件部分至少包括一個單核的處理器、一定數(shù)量的內(nèi)存、一塊硬盤以及一張網(wǎng)卡。在上述系統(tǒng)平臺上,每個OSD擁有一個自己的OSD deamon。這個deamon負(fù)責(zé)完成OSD的所有邏輯功能,包括與monitor和其他OSD(事實上是其他OSD的deamon)通信以維護更新系統(tǒng)狀態(tài),與其他OSD共同完成數(shù)據(jù)的存儲和維護,與client通信完成各種數(shù)據(jù)對象操作等等。1.3 Ceph中的數(shù)據(jù)尋址用戶存儲數(shù)據(jù)時

6、的數(shù)據(jù)路由過程如下圖所示: 首先明確幾個概念:File 用戶需要存儲或者訪問的文件。對于一個基于Ceph開發(fā)的對象存儲應(yīng)用而言,這個file也就對應(yīng)于應(yīng)用中的“對象”,也就是用戶直接操作的“對象”。OjbectRADOS所看到的“對象”。Object與上面提到的file的區(qū)別是,object的最大size由RADOS限定(通常為2MB或4MB),以便實現(xiàn)底層存儲的組織管理。因此,當(dāng)上層應(yīng)用向RADOS存入size很大的file時,需要將file切分成統(tǒng)一大小的一系列object(最后一個的大小可以不同)進(jìn)行存儲。PG(Placement Group) 顧名思義,PG的用途是對object的存儲

7、進(jìn)行組織和位置映射。具體而言,一個PG負(fù)責(zé)組織若干個object(可以為數(shù)千個甚至更多),但一個object只能被映射到一個PG中,即,PG和object之間是“一對多”映射關(guān)系。同時,一個PG會被映射到n個OSD上,而每個OSD上都會承載大量的PG,即,PG和OSD之間是“多對多”映射關(guān)系。在實踐當(dāng)中,n至少為2,如果用于生產(chǎn)環(huán)境,則至少為3。一個OSD上的PG則可達(dá)到數(shù)百個。事實上,PG數(shù)量的設(shè)置牽扯到數(shù)據(jù)分布的均勻性問題。OSD即object storage device。數(shù)據(jù)路由的過程需要經(jīng)過幾次尋址:l File -> object映射。這次映射的目的是,將用戶要操作的file

8、,映射為RADOS能夠處理的object。其映射十分簡單,本質(zhì)上就是按照object的最大size對file進(jìn)行切分。這種切分的好處有二:一是讓大小不限的file變成最大size一致、可以被RADOS高效管理的object;二是讓對單一file實施的串行處理變?yōu)閷Χ鄠€object實施的并行化處理。l Object -> PG映射。在file被映射為一個或多個object之后,就需要將每個object獨立地映射到一個PG中去。計算公式: hash(oid) & mask -> pgid。根據(jù)RADOS的設(shè)計,給定PG的總數(shù)為m(m應(yīng)該為2的整數(shù)冪),則mask的值為m-1。因

9、此,哈希值計算和按位與操作的整體結(jié)果事實上是從所有m個PG中近似均勻地隨機選擇一個?;谶@一機制,當(dāng)有大量object和大量PG時,RADOS能夠保證object和PG之間的近似均勻映射。l PG -> OSD映射。第三次映射就是將作為object的邏輯組織單元的PG映射到數(shù)據(jù)的實際存儲單元OSD。如圖所示,RADOS采用一個名為CRUSH的算法,將pgid代入其中,然后得到一組共n個OSD。這n個OSD即共同負(fù)責(zé)存儲和維護一個PG中的所有object。前已述及,n的數(shù)值可以根據(jù)實際應(yīng)用中對于可靠性的需求而配置,在生產(chǎn)環(huán)境下通常為3。具體到每個OSD,則由其上運行的OSD deamon負(fù)

10、責(zé)執(zhí)行映射到本地的object在本地文件系統(tǒng)中的存儲、訪問、元數(shù)據(jù)維護等操作。和“object->OSD”映射中采用的哈希算法不同,CRUSH算法的結(jié)果不是絕對不變的,而是受到當(dāng)前系統(tǒng)的狀態(tài)(cluster map)和存儲配置策略的影響。故而當(dāng)系統(tǒng)中的OSD狀態(tài)、數(shù)量發(fā)生變化時,Cluster map發(fā)生變化,映射的結(jié)果也就發(fā)生了變化。1.4 寫數(shù)據(jù)的流程當(dāng)某個client需要向Ceph集群寫入一個file時,首先需要在本地完成尋址流程,將file變?yōu)橐粋€object,然后找出存儲該object的一組三個OSD。找出三個OSD后,client將直接和Primary OSD通信,發(fā)起寫入操

11、作。Primary OSD收到請求后,分別向Secondary OSD和Tertiary OSD發(fā)起寫入操作。當(dāng)Secondary OSD和Tertiary OSD各自完成寫入操作后,將分別向Primary OSD發(fā)送確認(rèn)信息;當(dāng)Primary OSD確信其他兩個OSD的寫入完成后,則自己。也完成數(shù)據(jù)寫入,并向client確認(rèn)object寫入操作完成。1.5 集群維護由若干個monitor共同負(fù)責(zé)整個Ceph集群中所有OSD狀態(tài)的發(fā)現(xiàn)與記錄,并且共同形成cluster map的master版本,然后擴散至全體OSD以及client。OSD使用cluster map進(jìn)行數(shù)據(jù)的維護,而client

12、使用cluster map進(jìn)行數(shù)據(jù)的尋址。monitor并不主動輪詢各個OSD的當(dāng)前狀態(tài)。正相反,OSD需要向monitor上報狀態(tài)信息。常見的上報有兩種情況:一是新的OSD被加入集群,二是某個OSD發(fā)現(xiàn)自身或者其他OSD發(fā)生異常。在收到這些上報信息后,monitor將更新cluster map信息并加以擴散。l 新增一個OSD時首先根據(jù)配置信息與monitor通信,monitor將其加入cluster map,并設(shè)置為up且out狀態(tài),再將最新版本的cluster map發(fā)給這個新OSD。收到monitor發(fā)過來的cluster map之后,這個新OSD計算出自己所承載的PG以及和自己承載同

13、一個PG的其他OSD。然后與這些OSD取得聯(lián)系。如果這個PG目前處于降級狀態(tài)(即承載該PG的OSD個數(shù)少于正常值),則其他OSD將把這個PG內(nèi)的所有對象和元數(shù)據(jù)賦值給新OSD。數(shù)據(jù)復(fù)制完成后,新OSD被置為up且in狀態(tài),cluster map也更新。l 自動化故障恢復(fù)當(dāng)其中一個OSD發(fā)生故障時,如果其PG目前一切正常,則這個新OSD將替換掉故障OSD(PG內(nèi)將重新選出Primary OSD),并承擔(dān)其數(shù)據(jù)。在數(shù)據(jù)復(fù)制完成后,新OSD被置為up且in狀態(tài),而被替換的OSD將推出該PG。而cluster map內(nèi)容也將據(jù)此更新。l 自動化的故障探測過程如果一個OSD發(fā)現(xiàn)和自己共同承擔(dān)一個PG的另

14、一個OSD無法聯(lián)通,則會將這一情況上報monitor。此外,如果一個OSD deamon發(fā)現(xiàn)自身工作狀態(tài)異常,也將把異常情況主動上報給monitor。此時,monitor將把出現(xiàn)問題的OSD的狀態(tài)設(shè)置為down且in。如果超過某一預(yù)定時間期限該OSD仍然無法恢復(fù)正常,則其狀態(tài)將被設(shè)置為down且out。如果該OSD能夠恢復(fù)正常,則其狀態(tài)會恢復(fù)成up且in。1.6 在OpenStack中使用ceph Ceph底層是存儲集群RADOS,然后是LIBRADOS,這是一個可以訪問RADOS的庫。用戶利用這個庫開發(fā)自己的客戶端應(yīng)用。Ceph提供對象存儲(RADOSGW)、塊存儲(RBD)、文件系統(tǒng)(CE

15、PHFS)也就是基于這個庫完成的。在 OpenStack 中使用 Ceph 塊設(shè)備,必須首先安裝 QEMU,libvirt 和 OpenStack。下圖描述了 OpenStack 和 Ceph 技術(shù)層次。libvirt 配置了 librbd 的 QEMU 接口,通過它可以在 OpenStack 中使用 Ceph 塊設(shè)備??梢钥闯鯫penStack通過libvirt中的接口調(diào)用QEMU,QEMU去調(diào)用Ceph的塊存儲庫libRBD,從而完成在OpenStack中的Ceph使用。OpenStack 與 Ceph 有三個結(jié)合點:l 鏡像:OpenStack Glance 管理虛擬機鏡像。鏡像是不變的

16、。OpenStack 把鏡像當(dāng)作二進(jìn)制對象并以此格式下載。 l 卷:卷是塊設(shè)備。OpenStack 使用卷來啟動虛擬機,或者綁定卷到運行中的虛擬機。OpenStack 使用 Cinder 服務(wù)管理卷。 l 客戶磁盤:客戶磁盤是客戶操作系統(tǒng)磁盤。默認(rèn)情況下,當(dāng)啟動一臺虛擬機時,它的系統(tǒng)盤以文件的形式出現(xiàn)在 hypervisor 系統(tǒng)上(通常在/var/lib/nova/instances/<uuid>)。在 OpenStack Havana 以前的版本,在 Ceph 中啟動虛擬機的唯一方式是使用 Cinder 的 boot-from-volume 功能,現(xiàn)在能夠在 Ceph 中直接啟

17、動虛擬機而不用依賴于 Cinder,這是非常有利的,能夠很容易的進(jìn)行虛擬機的熱遷移。除此之外,如果 hypervisor 掛掉還能夠方便地觸發(fā) nova evacute 然后無縫得在其他的地方繼續(xù)運行虛擬機。 1.7 Ceph的一些問題關(guān)于Ceph作為塊存儲項目的幾個問題需要考慮:l Ceph在讀寫上不太穩(wěn)定(有btrfs的原因),目前Ceph官方推薦XFS作為底層文件系統(tǒng)l Ceph的擴展性較難,如果需要介入Ceph,需要較長時間l Ceph的部署和集群不夠穩(wěn)定2 AMS EBSEBS是Amazon提供的塊存儲服務(wù),通過EBS,用戶可以隨時增刪遷移volume和快照操作。Amazon EBS

18、是目前IAAS服務(wù)商最引入注目的服務(wù)之一,目前的OpenStack、CloudStack等等其他開源框架都無法提供Amazon EBS對于的如此彈性和強大的服務(wù)。3 Sheep dogSheepdog是另一個分布式塊存儲系統(tǒng),它與Ceph相比,最大優(yōu)勢就是代碼短小好維護和hack的成本很小。Sheepdog也有很多Ceph不支持的特性,比如說Multi-Disk, cluster-wide snapshot等。Sheepdog主要有兩部分,一個是集群管理,另一個是存儲服務(wù)。集群管理目前使用Corosync或者Zookper來完成,存儲服務(wù)的特點是在client和存儲host有Cache的實現(xiàn)可

19、以大大減小數(shù)據(jù)流量。目前Sheepdog只在QEMU端提供Drive,而缺少library支持,這是Sheepdog目前最主要的問題。云計算中的塊存儲4 OpenStack CinderNova利用主機的本地存儲為虛擬機提供“臨時存儲”,如果虛擬機被刪除了,掛在這個虛擬機上的任何臨時存儲都將自動釋放?;赟AN、NAS等不同類型的存儲設(shè)備,OpenStack Cinder,Swift引入了永久存儲,負(fù)責(zé)為每個虛擬機本身的鏡像以及它所產(chǎn)生的數(shù)據(jù)提供一個存儲場地。Cinder是OpenStack中提供類似于EBS塊存儲服務(wù)的API框架,為虛擬機提供持久化的塊存儲能力,實現(xiàn)虛擬機存儲卷的創(chuàng)建、掛載卸

20、載、快照等生命周期管理。Cinder提供的RESTful API針對邏輯存儲卷進(jìn)行管理。其架構(gòu)如下:用戶通過cinder client發(fā)送Restful請求,cinder-api是進(jìn)入cinder的HTTP結(jié)構(gòu)。Cinder-volume運行在存儲節(jié)點上管理具體存儲設(shè)備的存儲空間,每個存儲節(jié)點上都會運行一個cinder-volume服務(wù),多個節(jié)點一起構(gòu)成了一個存儲資源池。Cinder-Scheduler根據(jù)預(yù)定的策略選擇合適的cinder-volume節(jié)點來處理客戶請求。Cinder-backup提供存儲卷備份功能。Cinder并沒有實現(xiàn)對塊設(shè)備的管理和實際服務(wù),而是為后端不同的存儲結(jié)構(gòu)提供了

21、統(tǒng)一的接口,不同的塊設(shè)備服務(wù)廠商在Cinder中實現(xiàn)其驅(qū)動支持以與OpenStack進(jìn)行整合。后端的存儲可以是DAS,NAS,SAN,對象存儲或者分布式文件系統(tǒng)如ceph。也就是說,Cinder的塊存儲數(shù)據(jù)完整性、可用性保障是由后端存儲提供的。Cinder只是提供了一層抽象,然后通過其后段支持的driver實現(xiàn)來發(fā)出命令來得到回應(yīng)。關(guān)于塊存儲的分配信息以及選項配置等會被保存到OpenStack統(tǒng)一的DB中。Cinder默認(rèn)使用LVM作為后端存儲。LVM將眾多不同的物理存儲器資源組成卷組,從卷組上創(chuàng)建邏輯卷,然后將文件系統(tǒng)安裝在邏輯卷上。其更為細(xì)化的架構(gòu)如下圖所示:5 華為軟件定義的存儲方案12

22、3455.1 軟件定義的存儲傳統(tǒng)的存儲當(dāng)中,存儲不感知VM,存儲擴展困難,LUN配置復(fù)雜,修改配置困難;多VM運行同一個LUN時,存在IO blending的問題。為解決傳統(tǒng)存儲的問題,可得到軟件定義的存儲具有以下幾個特征:l 自助式的用戶接口l 策略驅(qū)動的存儲,提供SLA保障l 各種存儲資源統(tǒng)一池化,自動化管理l 兼容任意硬件,包括通用硬件和專用存儲硬件。5.2 華為軟件定義的存儲相關(guān)技術(shù)... 基于Cinder的華為塊存儲為解決傳統(tǒng)存儲中配置困難、兼容性不好等問題,華為采用了統(tǒng)一的、策略驅(qū)動的存儲控制平面OpenStack Cinder。其中Cinder API是統(tǒng)一的卷管理接口;Cinder Schuduler是基于策略的存儲資源調(diào)度;Cinder Volume可以介入不同存儲廠商

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論