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

下載本文檔

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

文檔簡介

Ceph分布式存儲(chǔ)1 Ceph存儲(chǔ)概述Ceph 最初是一項(xiàng)關(guān)于存儲(chǔ)系統(tǒng)的 PhD 研究項(xiàng)目,由 Sage Weil 在 University of California, Santa Cruz(UCSC)實(shí)施。Ceph 是開源分布式存儲(chǔ),也是主線 Linux 內(nèi)核(2.6.34)的一部分。1.1 Ceph 架構(gòu)Ceph 生態(tài)系統(tǒng)可以大致劃分為四部分(見圖 1):客戶端(數(shù)據(jù)用戶),元數(shù)據(jù)服務(wù)器(緩存和同步分布式元數(shù)據(jù)),一個(gè)對(duì)象存儲(chǔ)集群(將數(shù)據(jù)和元數(shù)據(jù)作為對(duì)象存儲(chǔ),執(zhí)行其他關(guān)鍵職能),以及最后的集群監(jiān)視器(執(zhí)行監(jiān)視功能)。圖 1 Ceph 生態(tài)系統(tǒng)如圖 1 所示,客戶使用元數(shù)據(jù)服務(wù)器,執(zhí)行元數(shù)據(jù)操作(來確定數(shù)據(jù)位置)。元數(shù)據(jù)服務(wù)器管理數(shù)據(jù)位置,以及在何處存儲(chǔ)新數(shù)據(jù)。值得注意的是,元數(shù)據(jù)存儲(chǔ)在一個(gè)存儲(chǔ) 集群(標(biāo)為 “元數(shù)據(jù) I/O”)。實(shí)際的文件 I/O 發(fā)生在客戶和對(duì)象存儲(chǔ)集群之間。這樣一來,更高層次的 POSIX 功能(例如,打開、關(guān)閉、重命名)就由元數(shù)據(jù)服務(wù)器管理,不過 POSIX 功能(例如讀和寫)則直接由對(duì)象存儲(chǔ)集群管理。另一個(gè)架構(gòu)視圖由圖 2 提供。一系列服務(wù)器通過一個(gè)客戶界面訪問 Ceph 生態(tài)系統(tǒng),這就明白了元數(shù)據(jù)服務(wù)器和對(duì)象級(jí)存儲(chǔ)器之間的關(guān)系。分布式存儲(chǔ)系統(tǒng)可以在一些層中查看,包括一個(gè)存儲(chǔ)設(shè)備的格式(Extent and B-tree-based Object File System EBOFS 或者一個(gè)備選),還有一個(gè)設(shè)計(jì)用于管理數(shù)據(jù)復(fù)制,故障檢測,恢復(fù),以及隨后的數(shù)據(jù)遷移的覆蓋管理層,叫做 Reliable Autonomic Distributed Object Storage(RADOS)。最后,監(jiān)視器用于識(shí)別組件故障,包括隨后的通知。圖 2 ceph架構(gòu)視圖1.2 Ceph 組件了解了 Ceph 的概念架構(gòu)之后,您可以挖掘到另一個(gè)層次,了解在 Ceph 中實(shí)現(xiàn)的主要組件。Ceph 和傳統(tǒng)的文件系統(tǒng)之間的重要差異之一就是,它將智能都用在了生態(tài)環(huán)境而不是文件系統(tǒng)本身。圖 3 顯示了一個(gè)簡單的 Ceph 生態(tài)系統(tǒng)。Ceph Client 是 Ceph 文件系統(tǒng)的用戶。Ceph Metadata Daemon 提供了元數(shù)據(jù)服務(wù)器,而 Ceph Object Storage Daemon 提供了實(shí)際存儲(chǔ)(對(duì)數(shù)據(jù)和元數(shù)據(jù)兩者)。最后,Ceph Monitor 提供了集群管理。要注意的是,Ceph 客戶,對(duì)象存儲(chǔ)端點(diǎn),元數(shù)據(jù)服務(wù)器(根據(jù)文件系統(tǒng)的容量)可以有許多,而且至少有一對(duì)冗余的監(jiān)視器。那么,這個(gè)文件系統(tǒng)是如何分布的呢?圖 3簡單的 Ceph 生態(tài)系統(tǒng)1.3 Ceph 客戶端因?yàn)?Linux 顯示文件系統(tǒng)的一個(gè)公共界面(通過虛擬文件系統(tǒng)交換機(jī) VFS),Ceph 的用戶透視圖就是透明的。管理員的透視圖肯定是不同的,考慮到很多服務(wù)器會(huì)包含存儲(chǔ)系統(tǒng)這一潛在因素(要查看更多創(chuàng)建 Ceph 集群的信息,見 參考資料 部分)。從用戶的角度看,他們訪問大容量的存儲(chǔ)系統(tǒng),卻不知道下面聚合成一個(gè)大容量的存儲(chǔ)池的元數(shù)據(jù)服務(wù)器,監(jiān)視器,還有獨(dú)立的對(duì)象存儲(chǔ)設(shè)備。用戶只是簡單地看到一個(gè)安裝點(diǎn),在這點(diǎn)上可以執(zhí)行標(biāo)準(zhǔn)文件 I/O。Ceph 文件系統(tǒng) 或者至少是客戶端接口 在 Linux 內(nèi)核中實(shí)現(xiàn)。值得注意的是,在大多數(shù)文件系統(tǒng)中,所有的控制和智能在內(nèi)核的文件系統(tǒng)源本身中執(zhí)行。但是,在 Ceph 中,文件系統(tǒng)的智能分布在節(jié)點(diǎn)上,這簡化了客戶端接口,并為 Ceph 提供了大規(guī)模(甚至動(dòng)態(tài))擴(kuò)展能力。Ceph 使用一個(gè)有趣的備選,而不是依賴分配列表(將磁盤上的塊映射到指定文件的元數(shù)據(jù))。Linux 透視圖中的一個(gè)文件會(huì)分配到一個(gè)來自元數(shù)據(jù)服務(wù)器的 inode number(INO),對(duì)于文件這是一個(gè)唯一的標(biāo)識(shí)符。然后文件被推入一些對(duì)象中(根據(jù)文件的大小)。使用 INO 和 object number(ONO),每個(gè)對(duì)象都分配到一個(gè)對(duì)象 ID(OID)。在 OID 上使用一個(gè)簡單的哈希,每個(gè)對(duì)象都被分配到一個(gè)放置組。放置組(標(biāo)識(shí)為 PGID)是一個(gè)對(duì)象的概念容器。最后,放置組到對(duì)象存儲(chǔ)設(shè)備的映射是一個(gè)偽隨機(jī)映射,使用一個(gè)叫做 Controlled Replication Under Scalable Hashing(CRUSH)的算法。這樣一來,放置組(以及副本)到存儲(chǔ)設(shè)備的映射就不用依賴任何元數(shù)據(jù),而是依賴一個(gè)偽隨機(jī)的映射函數(shù)。這種操作是理想的,因?yàn)樗汛鎯?chǔ)的開銷最小化,簡化了分配和數(shù)據(jù)查詢。分配的最后組件是集群映射。集群映射 是設(shè)備的有效表示,顯示了存儲(chǔ)集群。有了 PGID 和集群映射,您就可以定位任何對(duì)象。1.4 Ceph 元數(shù)據(jù)服務(wù)器元數(shù)據(jù)服務(wù)器(cmds)的工作就是管理文件系統(tǒng)的名稱空間。雖然元數(shù)據(jù)和數(shù)據(jù)兩者都存儲(chǔ)在對(duì)象存儲(chǔ)集群,但兩者分別管理,支持可擴(kuò)展性。事實(shí)上,元數(shù)據(jù)在一個(gè)元數(shù)據(jù)服務(wù)器集群上被進(jìn)一步拆分,元數(shù)據(jù)服務(wù)器能夠自適應(yīng)地復(fù)制和分配名稱空間,避免出現(xiàn)熱點(diǎn)。如圖 4 所示,元數(shù)據(jù)服務(wù)器管理名稱空間部分,可以(為冗余和性能)進(jìn)行重疊。元數(shù)據(jù)服務(wù)器到名稱空間的映射在 Ceph 中使用動(dòng)態(tài)子樹邏輯分區(qū)執(zhí)行,它允許 Ceph 對(duì)變化的工作負(fù)載進(jìn)行調(diào)整(在元數(shù)據(jù)服務(wù)器之間遷移名稱空間)同時(shí)保留性能的位置。圖 4 元數(shù)據(jù)服務(wù)器的 Ceph 名稱空間的分區(qū) 但是因?yàn)槊總€(gè)元數(shù)據(jù)服務(wù)器只是簡單地管理客戶端人口的名稱空間,它的主要應(yīng)用就是一個(gè)智能元數(shù)據(jù)緩存(因?yàn)閷?shí)際的元數(shù)據(jù)最終存儲(chǔ)在對(duì)象存儲(chǔ)集群中)。進(jìn)行寫操作的元數(shù)據(jù)被緩存在一個(gè)短期的日志中,它最終還是被推入物理存儲(chǔ)器中。這個(gè)動(dòng)作允許元數(shù)據(jù)服務(wù)器將最近的元數(shù)據(jù)回饋給客戶(這在元數(shù)據(jù)操作中很常見)。這個(gè)日志對(duì)故障恢復(fù)也很有用:如果元數(shù)據(jù)服務(wù)器發(fā)生故障,它的日志就會(huì)被重放,保證元數(shù)據(jù)安全存儲(chǔ)在磁盤上。元數(shù)據(jù)服務(wù)器管理 inode 空間,將文件名轉(zhuǎn)變?yōu)樵獢?shù)據(jù)。元數(shù)據(jù)服務(wù)器將文件名轉(zhuǎn)變?yōu)樗饕?jié)點(diǎn),文件大小,和 Ceph 客戶端用于文件 I/O 的分段數(shù)據(jù)(布局)。1.5 Ceph 監(jiān)視器Ceph 包含實(shí)施集群映射管理的監(jiān)視器,但是故障管理的一些要素是在對(duì)象存儲(chǔ)本身中執(zhí)行的。當(dāng)對(duì)象存儲(chǔ)設(shè)備發(fā)生故障或者新設(shè)備添加時(shí),監(jiān)視器就檢測和維護(hù)一個(gè)有效的集群映射。這個(gè)功能按一種分布的方式執(zhí)行,這種方式中映射升級(jí)可以和當(dāng)前的流量通信。Ceph 使用 Paxos,它是一系列分布式共識(shí)算法。1.6 Ceph 對(duì)象存儲(chǔ)和傳統(tǒng)的對(duì)象存儲(chǔ)類似,Ceph 存儲(chǔ)節(jié)點(diǎn)不僅包括存儲(chǔ),還包括智能。傳統(tǒng)的驅(qū)動(dòng)是只響應(yīng)來自啟動(dòng)者的命令的簡單目標(biāo)。但是對(duì)象存儲(chǔ)設(shè)備是智能設(shè)備,它能作為目標(biāo)和啟動(dòng)者,支持與其他對(duì)象存儲(chǔ)設(shè)備的通信和合作。從存儲(chǔ)角度來看,Ceph 對(duì)象存儲(chǔ)設(shè)備執(zhí)行從對(duì)象到塊的映射(在客戶端的文件系統(tǒng)層中常常執(zhí)行的任務(wù))。這個(gè)動(dòng)作允許本地實(shí)體以最佳方式?jīng)Q定怎樣存儲(chǔ)一個(gè)對(duì)象。Ceph 的早期版本在一個(gè)名為 EBOFS 的本地存儲(chǔ)器上實(shí)現(xiàn)一個(gè)自定義低級(jí)文件系統(tǒng)。這個(gè)系統(tǒng)實(shí)現(xiàn)一個(gè)到底層存儲(chǔ)的非標(biāo)準(zhǔn)接口,這個(gè)底層存儲(chǔ)已針對(duì)對(duì)象語義和其他特性(例如對(duì)磁盤提交的異步通知)調(diào)優(yōu)。今天,B-tree 文件系統(tǒng)(BTRFS)可以被用于存儲(chǔ)節(jié)點(diǎn),它已經(jīng)實(shí)現(xiàn)了部分必要功能(例如嵌入式完整性)。因?yàn)?Ceph 客戶實(shí)現(xiàn) CRUSH,而且對(duì)磁盤上的文件映射塊一無所知,下面的存儲(chǔ)設(shè)備就能安全地管理對(duì)象到塊的映射。這允許存儲(chǔ)節(jié)點(diǎn)復(fù)制數(shù)據(jù)(當(dāng)發(fā)現(xiàn)一個(gè)設(shè)備出現(xiàn)故障時(shí))。分配故障恢復(fù)也允許存儲(chǔ)系統(tǒng)擴(kuò)展,因?yàn)楣收蠙z測和恢復(fù)跨生態(tài)系統(tǒng)分配。Ceph 稱其為 RADOS。2 Ceph快速配置資源:兩臺(tái)機(jī)器:一臺(tái)server,一臺(tái)client,安裝ubuntu12.10其中,server安裝時(shí),另外分出兩個(gè)區(qū),作為osd0、osd1的存儲(chǔ),沒有的話,系統(tǒng)安裝好后,使用loop設(shè)備虛擬出兩個(gè)也可以。步驟: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信息如果沒有顯示,請(qǐng)執(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)配置文件請(qǐng)將認(rèn)證設(shè)置成none auth cluster required = none auth service required = none auth client required = none2)指定osd0、osd1的位置如果沒有/sda,可使用loop設(shè)備虛擬,方法如下:# losetup a /查看loop設(shè)備的使用情況# dd if=/dev/zero of=osd1 bs=1M count=1000 /格式化# losetup /dev/loop0 osd0 /建立對(duì)應(yīng)關(guān)系#mkfs t xfs /dev/loop0 /格式化按照相同的方法設(shè)置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、啟動(dòng)# 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之類的,請(qǐng)執(zhí)行:#ceph pg dump_stuck stale#ceph pg dump_stuck inactive#ceph pg dump_stuck unclean 再次健康檢查是,應(yīng)該是OK注意:重新執(zhí)行如下命令#sudo mkcephfs -a -c /etc/ceph/ceph.conf -k ceph.keyring前,請(qǐng)先清空創(chuàng)建的四個(gè)目錄:/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可進(jìn)行文件操作4 源碼包編譯流程:1、安裝好系統(tǒng)后,選擇系統(tǒng)設(shè)置-軟件源,將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包含四個(gè)文件目錄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、進(jìn)入到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 編譯,需要一段時(shí)間7、編譯完成后,在ceph-0.56.3生成二進(jìn)制文件和執(zhí)行文件,并在上層目錄(ceph)打成.deb包8、修改后可使用make編譯# make9、修改代碼,make只編譯修改的部分,并指明編譯文件和修改文件5 源碼編譯測試情況1、替換編譯后的mds到/usr/bin下,啟動(dòng)成功,健康檢查如下:rootubuntu:/usr/bin# ceph healthHEALTH_WARN 576 pgs stale /是不是一段時(shí)間沒動(dòng)?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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論