Ceph:ceph被稱為面向未來的存儲還是一個分布式的存儲系統(tǒng),非常靈活,如果需要擴(kuò)容,只要向ceph集中增加服務(wù)器即可。ceph存儲數(shù)據(jù)時采用多副本的方式進(jìn)行存儲,生產(chǎn)環(huán)境下,一個文件至少要存三份,ceph默認(rèn)也是三副本存儲。
可以實(shí)現(xiàn)的
存儲方式:
塊存儲:提供像普通硬盤一樣的存儲,為使用者提供“硬盤”。
文件系統(tǒng)存儲:類似于NFS的共享方式,為使用者提供共享文件夾。
對象存儲:像百度云盤一樣,需要使用單獨(dú)的客戶端。需要編寫代碼。
Ceph存儲集群至少需要一個Ceph監(jiān)視器、Ceph管理器和Ceph OSD(對象存儲守護(hù)程序)。運(yùn)行Ceph文件系統(tǒng)客戶端時需要Ceph元數(shù)據(jù)服務(wù)器。
Ceph Monitor(ceph-mon)監(jiān)視器:Ceph Mon維護(hù)Ceph存儲集群映射的主副本和Ceph存儲集群的當(dāng)前狀態(tài),監(jiān)控器需要高度一致性,確保對Ceph存儲集群狀態(tài)達(dá)成一致。維護(hù)著展示集群狀態(tài)的各種圖表,包括監(jiān)視器圖、OSD圖、歸置組圖、和CRUSH圖。少數(shù)服從多數(shù),至少一半以上
Ceph OSD 守護(hù)進(jìn)程:Ceph OSD用于存儲數(shù)據(jù)。此外Ceph OSD利用Ceph節(jié)點(diǎn)的CPU、內(nèi)存和網(wǎng)絡(luò)來執(zhí)行數(shù)據(jù)復(fù)制、糾錯代碼、重新平衡、恢復(fù)、監(jiān)控和報告功能。存儲節(jié)點(diǎn)有幾塊硬盤用于存儲,該節(jié)點(diǎn)就會有幾個osd進(jìn)程。
MDS:Ceph元數(shù)據(jù)服務(wù)器(MDS)為Ceph文件系統(tǒng)存儲元數(shù)據(jù)。
RGW:對象存儲網(wǎng)關(guān)。主要為訪問Ceph的軟件提供API接口。
搭建ceph集群:
node1:eth0->192.168.88.11
node2:eth0->192.168.88.12
node3:eth0->192.168.88.13
client1:eth0->192.168.88.10
為node1-3添加額外2塊20GB的硬盤
在192.168.88.240的主機(jī)上配置Ceph鏡像的yum源。通過vsftpd服務(wù)提供網(wǎng)絡(luò)yum源。
創(chuàng)建ceph的ansible工作目錄
配置ceph.repo
centos.repo
編寫yum劇本
執(zhí)行劇本
查看yum
關(guān)閉各個節(jié)點(diǎn)的防火墻和SELinux
ceph為我們提供了一個ceph-deploy工具,可以在某一節(jié)點(diǎn)上統(tǒng)一操作全部節(jié)點(diǎn)。將node1作為部署節(jié)點(diǎn),將來的操作都在node1上進(jìn)行,需要node1能夠免密操作其他主機(jī)。
在所有的主機(jī)上配置名稱解析。
blockinfile模塊:幾行字符串為一塊出現(xiàn)在文件中。
執(zhí)行劇本
查看hosts文件,所有節(jié)點(diǎn)都配置了名稱解析
安裝集群,在三個節(jié)點(diǎn)上安裝軟件包
可以在node1上通過ssh node{1..3} yum -y install ceph-mon ceph-osd ceph-mds ceph-radosgw?
使用ansible劇本安裝軟件包
查看軟件包
配置ntp服務(wù)器,讓服務(wù)器時間同步
編輯/etc/chrony.conf文件
allow允許訪問的主機(jī)
啟動服務(wù)
讓節(jié)點(diǎn)安裝chrony
編輯chrony配置文件,把server開頭的全部注釋掉添加NTP服務(wù)器(Ctrl+v、I、編輯、ESC)
把該文件拷貝到其他節(jié)點(diǎn)
重啟各個節(jié)點(diǎn)的時間服務(wù)器
查看是否配置成功
在node1節(jié)點(diǎn)安裝ceph-deploy部署工具
查看使用幫助,ceph-deploy --help
創(chuàng)建目錄ceph工作目錄
創(chuàng)建一個新集群?ceph-deploy new node{1..3}
ceph.conf:集群配置文件
ceph-deploy-ceph.log:日志文件
ceph.mon.keyring:共享密鑰
編輯集群配置文件,開啟塊存儲的默認(rèn)特性開啟快照功能。rbd_default_features = 1
初始化Monitor。?ceph-deploy mon create-initial
如果安裝錯誤可以清理數(shù)據(jù)重新安裝:ceph-deploy purge node{1..3}
查看ceph-monitor服務(wù)
查看ceph集群狀態(tài)。ceph -s 。因?yàn)檫€沒有硬盤,所以狀態(tài)是HEALTH_ERR
在執(zhí)行ceph-deploy時要做ceph的工作目錄中執(zhí)行。查看disk命令
初始化各主機(jī)的硬盤。?ceph-deploy disk zap node1:sdb node1:sdc
查看osd命令
創(chuàng)建存儲空間,ceph會將硬盤分為兩個分區(qū),一個分區(qū)大小為5GB,用于ceph的內(nèi)部資源,另一個分區(qū)是剩余的全部空間。?ceph-deploy osd create node1:sd{b,c}
查看ceph的狀態(tài)。
monmap:Monitor組件,只要有兩個就表示正常。
osdmap:硬盤組件。每一個硬盤osd就會開啟一個守護(hù)進(jìn)程。6塊硬盤所以有6個osds。
node1上有兩塊硬盤所以有0、1進(jìn)程,而node2/3則是2345進(jìn)程
塊設(shè)備存儲數(shù)據(jù)時可以一次存取很多,字符設(shè)備只能是字符流。
使用rbd命令操作每個磁盤剩余的15GB內(nèi)存,在node的每個節(jié)點(diǎn)都能操作該命令。
查看存儲池。ceph osd lspools。rbd為存儲池的名稱
ceph df:查看詳情,全局有90G而存儲池只有30G,因?yàn)閏eph存儲文件要存儲三個副本。
查看存儲池的副本機(jī)制。ceph osd pool get rbd size
在node1上創(chuàng)建磁盤的使用空間(鏡像)。rbd命令。
?rbd create demo-image --size 10G
此時在node2和node3中也能看見該鏡像。
查看鏡像信息。?rbd info demo-image
修改改鏡像大小。rbd resize --size 15G demo-image
此時該鏡像已經(jīng)變?yōu)?5G
縮減時需要加上--allow-shrink
當(dāng)創(chuàng)建100G的鏡像時能夠成功創(chuàng)建,但能夠使用的內(nèi)存容量只有30G,超過30G就會報錯
刪除鏡像。?rbd rm img01
客戶端使用快設(shè)備步驟:
1、要安裝ceph的客戶端軟件才能使用。
2、ceph集群的位置,通過配置文件說明集群地址。
3、授權(quán)。讓客戶端能夠訪問該ceph集群。
安裝ceph客戶端軟件。?yum -y install ceph-common
此時連接不了集群需要將配置文件和密鑰keyring文件拷貝給客戶端
此時client1就能使用rbd命令
此時在客戶端也能創(chuàng)建鏡像
客戶端使用rbd命令操作的是ceph使用node1節(jié)點(diǎn)刪除該鏡像此時客戶端上也沒有了該鏡像。
讓鏡像變成本地硬盤。rbd map demo-image:映射為本地硬盤,不能多次映射。
此時就能使用該硬盤格式化掛載使用。
查看映射的本地硬盤。rbd showmapped
卸載該使用的鏡像
快照:可以保存某一時間點(diǎn)時的狀態(tài)數(shù)據(jù)。希望回到以前的一個狀態(tài),可以恢復(fù)快照
創(chuàng)建img1鏡像并映射為本地硬盤,然后格式化掛載
查看img1的快照。rbd snap ls img1
創(chuàng)建img1快照。rbd snap create img1 --snap img1-snap1
刪除快照。rbd snap remove img1 --snap img1-snap1
取消掛載、取消映射的本地硬盤、刪除鏡像
快照實(shí)驗(yàn):
創(chuàng)建鏡像然后把該鏡像掛載到客戶端。
向/mnt中寫入數(shù)據(jù)
創(chuàng)建快照
把/mnt中的數(shù)據(jù)刪除
此時需要恢復(fù)快照就先停止映射本地硬盤,防止在恢復(fù)快照的時候有數(shù)據(jù)加入該硬盤
恢復(fù)快照,回滾img1到快照img1-snap1。rbd snap rollback img1 --snap img1-snap1
重新掛載,此時不需要格式化。查看目錄,恢復(fù)到了被刪除前、創(chuàng)建快照的狀態(tài)。
保護(hù)快照誤刪除。rbd snap protect img1 --snap img1-snap1
此時就不能隨便刪除快照了
當(dāng)多個節(jié)點(diǎn)同時掛載就會產(chǎn)生存儲腦裂,數(shù)據(jù)發(fā)生混亂。
在client1創(chuàng)建myimg1鏡像掛載寫入數(shù)據(jù)
在node1映射myimg1鏡像掛載寫入數(shù)據(jù)
client和node分別寫入數(shù)據(jù)
然后取消重新掛載,此時就發(fā)生了腦裂,hosts文件消失了,發(fā)生了數(shù)據(jù)混亂
快照克隆:不能將一個鏡像同時掛載到多個節(jié)點(diǎn),如果這樣操作將會損壞數(shù)據(jù)。如果希望不同的節(jié)點(diǎn),擁有完全相同的數(shù)據(jù)盤,克隆是基于快照的,不能直接對鏡像克隆??煺毡仨毷鞘鼙Wo(hù)的快照才能克隆。
克隆流程:鏡像->快照->受保護(hù)的快照->克隆的鏡像
創(chuàng)建鏡像克隆
創(chuàng)建名為img2的鏡像,大小10GB
向鏡像中寫入數(shù)據(jù)
卸載鏡像
為img2創(chuàng)建名為img2-snap1的快照,并保護(hù)起來
克隆鏡像。?rbd clone img2 --snap img2-snap1 img2-snap1-1
在客戶端掛載該克隆鏡像
而掛載另一個克隆鏡像時就會報錯
這是因?yàn)檫@兩個克隆鏡像,克隆的是同一個鏡像,該UUID(全局唯一標(biāo)識符)相同,無法掛載相同設(shè)備兩次。
當(dāng)在其他節(jié)點(diǎn)掛載另一個鏡像時就沒有問題,一個設(shè)備只能掛載一個唯一的UUID。
查詢鏡像和快照
rbd snap ls img2:列出該鏡像所有快照
rbd info img2 --snap img2-snap1:查看該鏡像的快照信息。protected:true受保護(hù)。
該img2-snap1-1的鏡像的父親是rbd池中的img2鏡像的img2-snap1快照
合并克隆鏡像,將父鏡像中的內(nèi)容拷貝到克隆的鏡像,然后和父鏡像斷開聯(lián)系,獨(dú)立為一個單獨(dú)的鏡像。
查看鏡像內(nèi)存。rbd du img2
合并鏡像:rbd flatten img2-snap1-1。內(nèi)存容量增加。
查看合并鏡像信息,此時parent父鏡像也消失 了
如果要刪除img2鏡像就需要先把克隆的鏡像刪除,然后再取消受保護(hù)的快照,并且刪除快照,最后刪除鏡像。
1、只刪除有快照或者克隆的鏡像刪除失敗,提示有快照未刪除。rbd rm img2
2、查看img2有那些快照:?rbd snap ls img2
3、刪除快照:rbd snap remove img2 --snap img2-snap1。提示快照受保護(hù)。
4、取消快照保護(hù):rbd snap unprotect?img2 --snap img2-snap1。提示有子鏡像
5、查看有那些子鏡像:rbd children img2 --snap img2-snap1
6、刪除子鏡像:rbd rm img2-snap1-2。提示子鏡像正在被使用
7、查看子鏡像正在被那個主機(jī)使用:rbd status img2-snap1-2
8、取消192.168.88.10主機(jī)上img2-snap1-2鏡像的使用。查看該主機(jī)的映射本地硬盤,取消映射(如果有掛載先取消掛載)。
9、然后就能刪除子鏡像、取消受保護(hù)的快照、刪除快照、刪除鏡像。
此時把img2主鏡像刪除了而之前的克隆鏡像img2-snap1-1中還有數(shù)據(jù)能正常使用
ceph文件系統(tǒng):文件系統(tǒng)相當(dāng)于是組織數(shù)據(jù)存儲的方式,格式化時就是在為存儲創(chuàng)建文件系統(tǒng)。Linux對ceph有很好是支持,可以把ceph文件系統(tǒng)直接掛載到本地。要想實(shí)現(xiàn)文件系統(tǒng)的數(shù)據(jù)存儲方式,需要有MDS組件(元數(shù)據(jù)服務(wù)器)。
數(shù)據(jù)相當(dāng)于文件的內(nèi)容(如cat查看文件),元數(shù)據(jù)相當(dāng)于文件的屬性(stat查看文件)。
在node3節(jié)點(diǎn)安裝MDS:yum -y install ceph-mds
在node1的ceph-cluster目錄通過ceph-deploy命令配置node3主機(jī)的MDS服務(wù):
?ceph-deploy mds create node3
查看node3的MDS服務(wù)
元數(shù)據(jù)就是描述數(shù)據(jù)的屬性。如屬主、屬組、權(quán)限等。ceph文件系統(tǒng)中數(shù)據(jù)和元數(shù)據(jù)是分開存儲的。
新建存儲池:歸置組PG:存儲池包含PG,PG是一個容器,用于存儲數(shù)據(jù)。為了管理方便,將數(shù)量眾多的數(shù)據(jù)放到不同的PG中管理,而不是直接把所有數(shù)據(jù)扁平化存放。通常一個存儲池中創(chuàng)建100個PG。
創(chuàng)建ceph文件系統(tǒng):
1、創(chuàng)建一個名為data1的存儲池,用來存儲數(shù)據(jù),有100個PG:ceph osd pool create data1 100
2、創(chuàng)建一個名為metadata1的存儲池,用來存儲元數(shù)據(jù)。?ceph osd pool create metadata1 100
查看存儲池:ceph osd lspools
存儲池的最大內(nèi)存顯示30G是因?yàn)闈撛趦?nèi)存最大為當(dāng)其他存儲沒有使用時全部的內(nèi)存空間30G。
要刪除存儲池:ceph osd pool delete name name --yes-i-really-really-mean-it
3、創(chuàng)建文件系統(tǒng)new后面第一個表示要創(chuàng)建文件系統(tǒng)的名字,第二個存儲池用來存儲元數(shù)據(jù),第三個存儲池用來存儲數(shù)據(jù),創(chuàng)建完查看存儲池
ceph fs new myfs1 metadata1 data1
查看文件系統(tǒng):?ceph fs ls。metadata pool:元數(shù)據(jù)池為metadata1,data pool:數(shù)據(jù)池為data1。
4、掛載文件系統(tǒng)需要密碼,查看/etc/ceph/ceph.client.admin.keyring
-t:指定文件系統(tǒng)類型。-o:是選項,提供用戶名和密碼。cephfs的端口號默認(rèn)是6789
mount -t ceph -o name=admin,secret=AQCn3Qhmt+9zARAAv60ERLf6OQN0Lefai277DQ== 192.168.88.13:6789:/ /mydata。ceph是一個整體掛載11,12,13都可以,但最后工作的還是安裝MDS服務(wù)的node3主機(jī)。
當(dāng)掛載的11主機(jī),拷貝數(shù)據(jù)
關(guān)閉13主機(jī)
此時客戶端查看共享該掛載目錄就會停止工作一直搜索文件,被卡住。
當(dāng)開啟13主機(jī)后就會顯示數(shù)據(jù),恢復(fù)正常。
5、當(dāng)node3關(guān)機(jī),客戶端拷貝文件到共享目錄,被卡住。
使用node2也部署MDS服務(wù)
此時拷貝文件就能拷貝了
對象存儲:需要專門的客戶端訪問,鍵值對存儲方式,對象存儲需要rgw組件。
安裝部署:ceph-deploy rgw create node3
文章來源地址http://www.zghlxwxcb.cn/news/detail-851820.html
文章來源:http://www.zghlxwxcb.cn/news/detail-851820.html
到了這里,關(guān)于Ceph分布式存儲系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!