ceph分布式存儲介紹.doc_第1頁
ceph分布式存儲介紹.doc_第2頁
ceph分布式存儲介紹.doc_第3頁
ceph分布式存儲介紹.doc_第4頁
ceph分布式存儲介紹.doc_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

Ceph分布式存儲1 Ceph存儲概述Ceph 最初是一項關(guān)于存儲系統(tǒng)的 PhD 研究項目,由 Sage Weil 在 University of California, Santa Cruz(UCSC)實施。Ceph 是開源分布式存儲,也是主線 Linux 內(nèi)核(2.6.34)的一部分。1.1 Ceph 架構(gòu)Ceph 生態(tài)系統(tǒng)可以大致劃分為四部分(見圖 1):客戶端(數(shù)據(jù)用戶),元數(shù)據(jù)服務器(緩存和同步分布式元數(shù)據(jù)),一個對象存儲集群(將數(shù)據(jù)和元數(shù)據(jù)作為對象存儲,執(zhí)行其他關(guān)鍵職能),以及最后的集群監(jiān)視器(執(zhí)行監(jiān)視功能)。圖 1 Ceph 生態(tài)系統(tǒng)如圖 1 所示,客戶使用元數(shù)據(jù)服務器,執(zhí)行元數(shù)據(jù)操作(來確定數(shù)據(jù)位置)。元數(shù)據(jù)服務器管理數(shù)據(jù)位置,以及在何處存儲新數(shù)據(jù)。值得注意的是,元數(shù)據(jù)存儲在一個存儲 集群(標為 “元數(shù)據(jù) I/O”)。實際的文件 I/O 發(fā)生在客戶和對象存儲集群之間。這樣一來,更高層次的 POSIX 功能(例如,打開、關(guān)閉、重命名)就由元數(shù)據(jù)服務器管理,不過 POSIX 功能(例如讀和寫)則直接由對象存儲集群管理。另一個架構(gòu)視圖由圖 2 提供。一系列服務器通過一個客戶界面訪問 Ceph 生態(tài)系統(tǒng),這就明白了元數(shù)據(jù)服務器和對象級存儲器之間的關(guān)系。分布式存儲系統(tǒng)可以在一些層中查看,包括一個存儲設備的格式(Extent and B-tree-based Object File System EBOFS 或者一個備選),還有一個設計用于管理數(shù)據(jù)復制,故障檢測,恢復,以及隨后的數(shù)據(jù)遷移的覆蓋管理層,叫做 Reliable Autonomic Distributed Object Storage(RADOS)。最后,監(jiān)視器用于識別組件故障,包括隨后的通知。圖 2 ceph架構(gòu)視圖1.2 Ceph 組件了解了 Ceph 的概念架構(gòu)之后,您可以挖掘到另一個層次,了解在 Ceph 中實現(xiàn)的主要組件。Ceph 和傳統(tǒng)的文件系統(tǒng)之間的重要差異之一就是,它將智能都用在了生態(tài)環(huán)境而不是文件系統(tǒng)本身。圖 3 顯示了一個簡單的 Ceph 生態(tài)系統(tǒng)。Ceph Client 是 Ceph 文件系統(tǒng)的用戶。Ceph Metadata Daemon 提供了元數(shù)據(jù)服務器,而 Ceph Object Storage Daemon 提供了實際存儲(對數(shù)據(jù)和元數(shù)據(jù)兩者)。最后,Ceph Monitor 提供了集群管理。要注意的是,Ceph 客戶,對象存儲端點,元數(shù)據(jù)服務器(根據(jù)文件系統(tǒng)的容量)可以有許多,而且至少有一對冗余的監(jiān)視器。那么,這個文件系統(tǒng)是如何分布的呢?圖 3簡單的 Ceph 生態(tài)系統(tǒng)1.3 Ceph 客戶端因為 Linux 顯示文件系統(tǒng)的一個公共界面(通過虛擬文件系統(tǒng)交換機 VFS),Ceph 的用戶透視圖就是透明的。管理員的透視圖肯定是不同的,考慮到很多服務器會包含存儲系統(tǒng)這一潛在因素(要查看更多創(chuàng)建 Ceph 集群的信息,見 參考資料 部分)。從用戶的角度看,他們訪問大容量的存儲系統(tǒng),卻不知道下面聚合成一個大容量的存儲池的元數(shù)據(jù)服務器,監(jiān)視器,還有獨立的對象存儲設備。用戶只是簡單地看到一個安裝點,在這點上可以執(zhí)行標準文件 I/O。Ceph 文件系統(tǒng) 或者至少是客戶端接口 在 Linux 內(nèi)核中實現(xiàn)。值得注意的是,在大多數(shù)文件系統(tǒng)中,所有的控制和智能在內(nèi)核的文件系統(tǒng)源本身中執(zhí)行。但是,在 Ceph 中,文件系統(tǒng)的智能分布在節(jié)點上,這簡化了客戶端接口,并為 Ceph 提供了大規(guī)模(甚至動態(tài))擴展能力。Ceph 使用一個有趣的備選,而不是依賴分配列表(將磁盤上的塊映射到指定文件的元數(shù)據(jù))。Linux 透視圖中的一個文件會分配到一個來自元數(shù)據(jù)服務器的 inode number(INO),對于文件這是一個唯一的標識符。然后文件被推入一些對象中(根據(jù)文件的大?。J褂?INO 和 object number(ONO),每個對象都分配到一個對象 ID(OID)。在 OID 上使用一個簡單的哈希,每個對象都被分配到一個放置組。放置組(標識為 PGID)是一個對象的概念容器。最后,放置組到對象存儲設備的映射是一個偽隨機映射,使用一個叫做 Controlled Replication Under Scalable Hashing(CRUSH)的算法。這樣一來,放置組(以及副本)到存儲設備的映射就不用依賴任何元數(shù)據(jù),而是依賴一個偽隨機的映射函數(shù)。這種操作是理想的,因為它把存儲的開銷最小化,簡化了分配和數(shù)據(jù)查詢。分配的最后組件是集群映射。集群映射 是設備的有效表示,顯示了存儲集群。有了 PGID 和集群映射,您就可以定位任何對象。1.4 Ceph 元數(shù)據(jù)服務器元數(shù)據(jù)服務器(cmds)的工作就是管理文件系統(tǒng)的名稱空間。雖然元數(shù)據(jù)和數(shù)據(jù)兩者都存儲在對象存儲集群,但兩者分別管理,支持可擴展性。事實上,元數(shù)據(jù)在一個元數(shù)據(jù)服務器集群上被進一步拆分,元數(shù)據(jù)服務器能夠自適應地復制和分配名稱空間,避免出現(xiàn)熱點。如圖 4 所示,元數(shù)據(jù)服務器管理名稱空間部分,可以(為冗余和性能)進行重疊。元數(shù)據(jù)服務器到名稱空間的映射在 Ceph 中使用動態(tài)子樹邏輯分區(qū)執(zhí)行,它允許 Ceph 對變化的工作負載進行調(diào)整(在元數(shù)據(jù)服務器之間遷移名稱空間)同時保留性能的位置。圖 4 元數(shù)據(jù)服務器的 Ceph 名稱空間的分區(qū) 但是因為每個元數(shù)據(jù)服務器只是簡單地管理客戶端人口的名稱空間,它的主要應用就是一個智能元數(shù)據(jù)緩存(因為實際的元數(shù)據(jù)最終存儲在對象存儲集群中)。進行寫操作的元數(shù)據(jù)被緩存在一個短期的日志中,它最終還是被推入物理存儲器中。這個動作允許元數(shù)據(jù)服務器將最近的元數(shù)據(jù)回饋給客戶(這在元數(shù)據(jù)操作中很常見)。這個日志對故障恢復也很有用:如果元數(shù)據(jù)服務器發(fā)生故障,它的日志就會被重放,保證元數(shù)據(jù)安全存儲在磁盤上。元數(shù)據(jù)服務器管理 inode 空間,將文件名轉(zhuǎn)變?yōu)樵獢?shù)據(jù)。元數(shù)據(jù)服務器將文件名轉(zhuǎn)變?yōu)樗饕?jié)點,文件大小,和 Ceph 客戶端用于文件 I/O 的分段數(shù)據(jù)(布局)。1.5 Ceph 監(jiān)視器Ceph 包含實施集群映射管理的監(jiān)視器,但是故障管理的一些要素是在對象存儲本身中執(zhí)行的。當對象存儲設備發(fā)生故障或者新設備添加時,監(jiān)視器就檢測和維護一個有效的集群映射。這個功能按一種分布的方式執(zhí)行,這種方式中映射升級可以和當前的流量通信。Ceph 使用 Paxos,它是一系列分布式共識算法。1.6 Ceph 對象存儲和傳統(tǒng)的對象存儲類似,Ceph 存儲節(jié)點不僅包括存儲,還包括智能。傳統(tǒng)的驅(qū)動是只響應來自啟動者的命令的簡單目標。但是對象存儲設備是智能設備,它能作為目標和啟動者,支持與其他對象存儲設備的通信和合作。從存儲角度來看,Ceph 對象存儲設備執(zhí)行從對象到塊的映射(在客戶端的文件系統(tǒng)層中常常執(zhí)行的任務)。這個動作允許本地實體以最佳方式?jīng)Q定怎樣存儲一個對象。Ceph 的早期版本在一個名為 EBOFS 的本地存儲器上實現(xiàn)一個自定義低級文件系統(tǒng)。這個系統(tǒng)實現(xiàn)一個到底層存儲的非標準接口,這個底層存儲已針對對象語義和其他特性(例如對磁盤提交的異步通知)調(diào)優(yōu)。今天,B-tree 文件系統(tǒng)(BTRFS)可以被用于存儲節(jié)點,它已經(jīng)實現(xiàn)了部分必要功能(例如嵌入式完整性)。因為 Ceph 客戶實現(xiàn) CRUSH,而且對磁盤上的文件映射塊一無所知,下面的存儲設備就能安全地管理對象到塊的映射。這允許存儲節(jié)點復制數(shù)據(jù)(當發(fā)現(xiàn)一個設備出現(xiàn)故障時)。分配故障恢復也允許存儲系統(tǒng)擴展,因為故障檢測和恢復跨生態(tài)系統(tǒng)分配。Ceph 稱其為 RADOS。2 Ceph快速配置資源:兩臺機器:一臺server,一臺client,安裝ubuntu12.10其中,server安裝時,另外分出兩個區(qū),作為osd0、osd1的存儲,沒有的話,系統(tǒng)安裝好后,使用loop設備虛擬出兩個也可以。步驟:1、安裝操作系統(tǒng)2、添加key到APT中,更新sources.list,安裝ceph#sudo wget -q -O- /git/?p=ceph.git;a=blob_plain;f=keys/release.asc | sudo apt-key add -#sudo echo deb /debian/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list# sudo apt-get update & sudo apt-get install ceph3、查看版本# ceph-v /將顯示ceph的版本和key信息如果沒有顯示,請執(zhí)行如下命令# sudo apt-get update & apt-get upgrade4、在/etc/ceph/下創(chuàng)建ceph.conf配置文件,并將配置文件拷貝到Client 。global # For version 0.55 and beyond, you must explicitly enable # or disable authentication with auth entries in global. auth cluster required = none auth service required = none auth client required = noneosd osd journal size = 1000 #The following assumes ext4 filesystem. filestore xattr use omap = true # For Bobtail (v 0.56) and subsequent versions, you may # add settings for mkcephfs so that it will create and mount # the file system on a particular OSD for you. Remove the comment # # character for the following settings and replace the values # in braces with appropriate values, or leave the following settings # commented out to accept the default values. You must specify the # -mkfs option with mkcephfs in order for the deployment script to # utilize the following settings, and you must define the devs # option for each osd instance; see below. osd mkfs type = xfs osd mkfs options xfs = -f # default for xfs is -f osd mount options xfs = rw,noatime # default mount option is rw,noatime # For example, for ext4, the mount option might look like this: #osd mkfs options ext4 = user_xattr,rw,noatime # Execute $ hostname to retrieve the name of your host, # and replace hostname with the name of your host. # For the monitor, replace ip-address with the IP # address of your host.mon.a host = ubuntu mon addr = 25:678osd.0 host = ubuntu # For Bobtail (v 0.56) and subsequent versions, you may # add settings for mkcephfs so that it will create and mount # the file system on a particular OSD for you. Remove the comment # # character for the following setting for each OSD and specify # a path to the device if you use mkcephfs with the -mkfs option. devs = /dev/loop0 osd.1 host = ubuntu devs = /dev/loop1mds.a host = ubuntu說明:1)配置文件請將認證設置成none auth cluster required = none auth service required = none auth client required = none2)指定osd0、osd1的位置如果沒有/sda,可使用loop設備虛擬,方法如下:# losetup a /查看loop設備的使用情況# dd if=/dev/zero of=osd1 bs=1M count=1000 /格式化# losetup /dev/loop0 osd0 /建立對應關(guān)系#mkfs t xfs /dev/loop0 /格式化按照相同的方法設置loop1為osd15、創(chuàng)建目錄sudo mkdir -p /var/lib/ceph/osd/ceph-0sudo mkdir -p /var/lib/ceph/osd/ceph-1sudo mkdir -p /var/lib/ceph/mon/ceph-asudo mkdir -p /var/lib/ceph/mds/ceph-a6、執(zhí)行初始化cd /etc/cephsudo mkcephfs -a -c /etc/ceph/ceph.conf -k ceph.keyring7、啟動# sudo service ceph -a start8、執(zhí)行健康檢查sudo ceph health如果返回的是 HEALTH_OK,代表成功!出現(xiàn): HEALTH_WARN 576 pgs stuck inactive; 576 pgs stuck unclean; no osds之類的,請執(zhí)行:#ceph pg dump_stuck stale#ceph pg dump_stuck inactive#ceph pg dump_stuck unclean 再次健康檢查是,應該是OK注意:重新執(zhí)行如下命令#sudo mkcephfs -a -c /etc/ceph/ceph.conf -k ceph.keyring前,請先清空創(chuàng)建的四個目錄:/var/lib/ceph/osd/ceph-0、/var/lib/ceph/osd/ceph-1、 /var/lib/ceph/mon/ceph-a、/var/lib/ceph/mds/ceph-a# rm frv /var/lib/ceph/osd/ceph-0/*# rm frv /var/lib/ceph/osd/ceph-1/*# rm frv /var/lib/ceph/mon/ceph-a/*# rm frv /var/lib/ceph/mds/ceph-a/*3 CephFS的使用在客戶端上操作:sudo mkdir /mnt/mycephfssudo mount -t ceph ip-address-of-monitor:6789:/ /mnt/mycephfs或者sudo mkdir /home/username/cephfssudo ceph-fuse -m ip-address-of-monitor:6789 /home/username/cephfs# sudo mount -l 25:6789:/ on /mnt/mycephfs type ceph (0)# cd /mnt/mycephfs可進行文件操作4 源碼包編譯流程:1、安裝好系統(tǒng)后,選擇系統(tǒng)設置-軟件源,將APT的源修改為/ubuntu#sudo apt-get update2、添加ceph的源到/etc/apt/sources.list中deb /debian quantal maindeb-src /debian quantal main3、新建目錄,存放ceph源碼包# mkdir ceph# ce ceph4、下載最新的ceph源碼包# apt-get source ceph包含四個文件目錄ceph_0.56.3-1quantal_amd64.debceph_0.56.3.orig.tar.gzceph_0.56.3-1quantal.diff.gzceph_0.56.3-1quantal.dsc ceph-0.56.35、進入到ceph-0.56.3,開始編譯工作# cd ceph-0.56.36、查看README文件,按步驟編譯,如下:# apt-get install automake autoconf automake gcc g+ libboost-dev libedit-dev libssl-dev libtool libfcgi libfcgi-dev libfuse-dev linux-kernel-headers libcrypto+-dev libaio-dev libgoogle-perftools-dev libkeyutils-dev uuid-dev libatomic-ops-dev libboost-program-options-dev libboost-thread-dev# sudo apt-get dpkg-dev# dpkg-checkbuilddeps # make sure we have all dependenciesapt-get install 安裝缺少的依賴包# dpkg-buildpackage 編譯,需要一段時間7、編譯完成后,在ceph-0.56.3生成二進制文件和執(zhí)行文件,并在上層目錄(ceph)打成.deb包8、修改后可使用make編譯# make9、修改代碼,make只編譯修改的部分,并指明編譯文件和修改文件5 源碼編譯測試情況1、替換編譯后的mds到/usr/bin下,啟動成功,健康檢查如下:rootubuntu:/usr/bin# ceph healthHEALTH_WARN 576 pgs stale /是不是一段時間沒動?rootubuntu:/usr/bin# ceph pg dump_stuck staleokpg_statobjectsmipdegrunfbyteslogdisklogstatestate_stampvreportedupactinglast_scrubscrub_stamplast_deep_scrubdeep_scrub_stamprootubuntu:/usr/bin# ceph healthHEALTH_OKClient可正常創(chuàng)建、拷貝文件2、替換osd后,OK rootubuntu:/usr/bin# scp xiao15:/home/xiao/ceph/ceph-0.56.3/src/ceph-osd .xiao15s password: ceph-osd 100% 93MB 10.4MB/s 00:09 rootubuntu:/usr/bin# service ceph -a start= mon.a = Starting Ceph mon.a on ubuntu.starting mon.a rank 0 at 25:6789/0 mon_data /var/lib/ceph/mon/ceph-a fsid d188f2d1-d8f3-4f6d-94c6-0a271ff64dab= mds.a = Starting Ceph mds.a on ubuntu.starting mds.a at :/0= osd.0 = Starting Ceph osd.0 on ubuntu.starting osd.0 at :/0 osd_data /var/lib/ceph/osd/ceph-0 /var/lib/ceph/osd/ceph-0/journal= osd.1 = Starting Ceph osd.1 on ubuntu.starting osd.1 at :/0 osd_data /var/lib/ceph/osd/ceph-1 /var/lib/ceph/osd/ceph-1/journalrootubuntu:/usr/bin# service ceph status= mon.a = mon.a: running version:0.56.3= mds.a = mds.a: running version:0.56.3= osd.0 = osd.0: running version:0.56.3= osd.1 = osd.1: running version:0.56.3rootubuntu:/usr/bin# ceph healthHEALTH_OKClient可正常創(chuàng)建、拷貝文件3、替換mon,OKrootubuntu:/usr/bin# cp ceph-mon ceph-mon.bakrootubuntu:/usr/bin# scp xiao15:/home/xiao/ceph/ceph-0.56.3/src/ceph-mon .xiao15s password: ceph-mon 100% 46MB 11.4MB/s 00:04 rootubuntu:/usr/bin# service ceph -a start= mon.a = Starting Ceph mon.a on ubuntu.starting mon.a rank 0 at 25:6789/0 mon_data /var/lib/ceph/mon/ceph-a fsid d188f2d1-d8f3-4f6d-94c6-0a271ff64dab= mds.a = Starting Ceph mds.a on ubuntu.starting mds.a at :/0= osd.0 = Starting Ceph osd

溫馨提示

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

評論

0/150

提交評論