網(wǎng)站空間是什么合肥網(wǎng)絡(luò)seo推廣服務(wù)
ceph文件系統(tǒng):高度可擴(kuò)展,分布式的存儲(chǔ)文件系統(tǒng),旨在提高性能,高可靠性和高可用的對(duì)
象存儲(chǔ),塊存儲(chǔ),文件系統(tǒng)的存儲(chǔ)。使用分布式的算法保證數(shù)據(jù)的高可用和一致性。
ceph的組件
1、MON:ceph? monitor,負(fù)責(zé)存儲(chǔ)和維護(hù)整個(gè)ceph集群的狀態(tài)信息,主要是集群的成員信息,存
儲(chǔ)狀態(tài)和配置數(shù)據(jù)等等。
- 確保集群的一致性
- 處理選舉和狀態(tài)的更新
- 處理集群內(nèi)部成員的通信,包括故障轉(zhuǎn)移
- ceph當(dāng)中mon至少要有3個(gè)節(jié)點(diǎn)確保高可用
2、osd:ceph? object? storage? daemon,ceph存儲(chǔ)系統(tǒng)的核心組件,負(fù)責(zé)存儲(chǔ)數(shù)據(jù),處理
讀寫(xiě)請(qǐng)求,數(shù)據(jù)復(fù)制,數(shù)據(jù)恢復(fù)。每個(gè)osd節(jié)點(diǎn)管理一個(gè)或多個(gè)硬盤(pán)驅(qū)動(dòng)。
- 存儲(chǔ)實(shí)際的數(shù)據(jù)和副本
- 處理對(duì)象級(jí)別的數(shù)據(jù)操作,讀、寫(xiě)、刪
- 在節(jié)點(diǎn)付賬時(shí),進(jìn)行數(shù)據(jù)恢復(fù)
3、mds:ceph? metadata? server,對(duì)ceph的文件系統(tǒng)的元數(shù)據(jù)進(jìn)行管理,文件和目錄的結(jié)構(gòu),文
件的權(quán)限,mds提供元數(shù)據(jù)服務(wù)。
- 管理集群的元數(shù)據(jù)信息
- 處理客戶端對(duì)文件系統(tǒng)的請(qǐng)求
- ceph集群中,至少要有一個(gè)mds節(jié)點(diǎn)
4、存儲(chǔ)池和pg
存儲(chǔ)池:pool,ceph存儲(chǔ)數(shù)據(jù)對(duì)象的容器,每個(gè)存儲(chǔ)池可以定義不同的數(shù)據(jù)冗余的策略(副本數(shù),
默認(rèn)都是3)crush映射規(guī)則等等。存儲(chǔ)池是一個(gè)邏輯上的概念。
- 管理和組織數(shù)據(jù)的對(duì)象
- 定義數(shù)據(jù)的冗余方式,主要是開(kāi)副本,3個(gè)
- 配置crush映射,數(shù)據(jù)如何在osd之間分布
pg:placement? group,pg也是ceph當(dāng)中的一個(gè)邏輯概念,用于數(shù)據(jù)分布的基本單位,創(chuàng)建存儲(chǔ)
池,定義好pg的數(shù)量。pg是由一組對(duì)象(object)組成的邏輯集合,每個(gè)對(duì)象都會(huì)映射到一個(gè)或者
多個(gè)pg。作用是數(shù)據(jù)分布:數(shù)據(jù)寫(xiě)入集群,映射到存儲(chǔ)池中的一個(gè)pg。crush算法決定將pg分布到
哪些osd。在ceph當(dāng)中,pg和osd的數(shù)量是相關(guān)的,設(shè)置一個(gè)合理的pg數(shù),有助于提高集群的性
能。pg數(shù)量=osd數(shù)量*100/存儲(chǔ)池的副本數(shù),且pg數(shù)量應(yīng)該是2的冪值。以3個(gè)osd為例,pg的數(shù)量
為128為宜。pg的數(shù)量一般是osd數(shù)量的一百倍左右。
存儲(chǔ)池和、pg和osd之間的關(guān)系
1、存儲(chǔ)池是管理數(shù)據(jù)的基本單位,組成和配置數(shù)據(jù)存儲(chǔ)和冗余的方式。
2、存儲(chǔ)池中的數(shù)據(jù)被劃分成多個(gè)pg,每個(gè)pg是數(shù)據(jù)分布的最小單位,pg負(fù)責(zé)對(duì)象存儲(chǔ)的位置,通過(guò)crush算法把數(shù)據(jù)分布到osd。
3、osd是負(fù)責(zé)存儲(chǔ)數(shù)據(jù)的基于物理設(shè)備的虛擬概念。
數(shù)據(jù)流向
crush算法,ceph自帶的一種算法:
數(shù)據(jù)分布的算法,把對(duì)象分配到集群的osd節(jié)點(diǎn)當(dāng)中。
crush算法使用hash算法來(lái)決定數(shù)據(jù)的存儲(chǔ)位置,確保數(shù)據(jù)是均勻的分布在集群的osd上。
存儲(chǔ)類(lèi)型:
對(duì)象存儲(chǔ):ceph? object? storge,云計(jì)算的后臺(tái)的存儲(chǔ)方式一般都是用對(duì)象存儲(chǔ),基于apt接口,通過(guò)http(s)來(lái)對(duì)目標(biāo)發(fā)起請(qǐng)求的方式獲取數(shù)據(jù)。
塊存儲(chǔ) RDB
文件系統(tǒng) cephfs
ceph的創(chuàng)建
這里我們使用三臺(tái)服務(wù)器完成ceph架構(gòu),另一臺(tái)服務(wù)器作為客戶端,具體如下
zw4:192.168.254.14,mon? ?osd? ?admin
zw5:192.168.254.15,mon? ?osd
zw6:192.168.254.16,mon? ?osd
zw7:192.168.254.17,客戶端
我們這里使用的是ceph17版本:2024 17.2.4依賴于docker、python3和lvm2,所有準(zhǔn)備好阿里
源,不要使用ubuntu官方源。
1、使用免交戶方式對(duì)四臺(tái)主機(jī)名都進(jìn)行主機(jī)映射
2、三臺(tái)集群主機(jī)安裝docker
apt -y install docker.io? ? ?
apt -y install lvm2
安裝cephadm并初始化單節(jié)點(diǎn)集群(主節(jié)點(diǎn)zw4上執(zhí)行)并編譯安裝
wget https://mirrors.aliyun.com/ceph/debian-17.2.4/pool/main/c/ceph/cephadm_17.2.4-1focal_amd64.deb
dkpg -i cephadm_17.2.4-1focal_amd64.deb?
3、主節(jié)點(diǎn)上開(kāi)啟集群初始化
- --mon-ip:指定mon進(jìn)程的節(jié)點(diǎn)地址,先指定admin節(jié)點(diǎn)。
- --cluster-network:集群網(wǎng)絡(luò)的地址范圍,ceph節(jié)點(diǎn)內(nèi)部通信。
- --allow-fqdn-hostname:允許ceph集群使用hostname來(lái)對(duì)節(jié)點(diǎn)進(jìn)行標(biāo)識(shí),節(jié)點(diǎn)之間可以通過(guò)主機(jī)名進(jìn)行通信
初始化后得到賬戶密碼以及登錄地址,可以登錄ceph可視化界面
4、集群和客戶端之間免密登錄
主節(jié)點(diǎn)zw4和其他三臺(tái)服務(wù)器進(jìn)行ssh免密登錄
主節(jié)點(diǎn)與另外兩臺(tái)集群主機(jī)進(jìn)行內(nèi)部ssh免密登錄
5、四臺(tái)主機(jī)安裝ceph客戶端
apt -y install ceph-common
6、添加osd
ceph添加主機(jī)名
查看當(dāng)前Ceph Orchestrator 管理的所有主機(jī)信息,包括它們的狀態(tài)、角色以及其他相關(guān)信息
修改mon節(jié)點(diǎn)的數(shù)量
把zw4、zw5和zw6添加進(jìn)mon節(jié)點(diǎn)
7、三臺(tái)集群服務(wù)器添加硬盤(pán)并刷新接口
這里使用命令行刷新,你可以選擇重啟
for host in /sys/class/scsi_host/host*/scan; do
? ? echo "- - -" | sudo tee $host
done
作為ceph集群的底層的硬盤(pán)必須滿足兩個(gè)條件
- 容量必須要大于5G
- 不能對(duì)硬盤(pán)做任何分區(qū)和文件系統(tǒng)
8、添加osd硬盤(pán)
首先讓ceph獲取可用的節(jié)點(diǎn)并查看
添加osd硬盤(pán)
這時(shí)候ceph可視化界面顯示我們集群搭建成功
ceph的使用
RDB存儲(chǔ)方式
ceph? RDB:rados? block? device,主要用于虛擬化環(huán)境和數(shù)據(jù)庫(kù)。
虛擬化環(huán)境:openstack、KVM
數(shù)據(jù)庫(kù):性能高,延遲低的塊存儲(chǔ)方式
優(yōu)點(diǎn):
- 支持動(dòng)態(tài)擴(kuò)展
- 支持快照和克隆
缺點(diǎn):
- RBD的方式必須要?jiǎng)?chuàng)建文件系統(tǒng)
- 使用方式:在云計(jì)算的平臺(tái)經(jīng)常被使用,尤其是大規(guī)模存儲(chǔ)和高性能場(chǎng)景。
1、在主節(jié)點(diǎn)上創(chuàng)建存儲(chǔ)池并給存儲(chǔ)池創(chuàng)建類(lèi)型
- rdb1:存儲(chǔ)池的名稱,不能重復(fù)
- 128:pg的數(shù)量
- 128:pgp的數(shù)量
查看存儲(chǔ)池是否成功,ceph osd pool ls
?2、在客戶端zw7創(chuàng)建RDB鏡像前,先傳送主節(jié)點(diǎn)的配置文件和秘鑰文件給客戶端
在客戶端上檢查是否成功
3、在客戶端zw7創(chuàng)建RDB鏡像并做映射
- 鏡像是RDB存儲(chǔ)的基本單位,是一個(gè)虛擬的磁盤(pán)。
- 鏡像提供了一個(gè)虛擬的塊設(shè)備的接口,可以掛載的方式進(jìn)行使用。
- 創(chuàng)建RDB鏡像,實(shí)際上就是類(lèi)似磁盤(pán)的一個(gè)分區(qū)
做映射之后,會(huì)虛擬出一個(gè)邏輯上的硬盤(pán)rbd0,接下來(lái)要?jiǎng)?chuàng)建文件系統(tǒng),然后掛載才可以使用。
4、在客戶端創(chuàng)建文件系統(tǒng)、掛載使用
mkfs.ext4 /dev/rbd0? ? ? ? ? ? ? ? ? ? ? ? ? ?#創(chuàng)建文件系統(tǒng)
mount /dev/rbd0 /data/? ? ? ? ? ? ? ? ? ? ??#掛載
創(chuàng)建一個(gè)100M的文件
這時(shí)候我們發(fā)現(xiàn)這個(gè)文件已經(jīng)開(kāi)始占用存儲(chǔ)池的空間了
cephfs的存儲(chǔ)方式
cephfs是分件系統(tǒng)分布存儲(chǔ)方式,基于內(nèi)核是實(shí)現(xiàn)共享文件的存儲(chǔ)方式
大數(shù)據(jù)存儲(chǔ),文件服務(wù)器(文件共享,企業(yè)的鏡像服務(wù)器)
優(yōu)點(diǎn):內(nèi)核兼容,NFS方式也可以實(shí)現(xiàn),部署速度較快??绻?jié)點(diǎn)實(shí)現(xiàn)
缺點(diǎn):配置比RBD的比較復(fù)雜,在集群群當(dāng)中比較復(fù)雜。
ceph需要兩個(gè)存儲(chǔ)池:
數(shù)據(jù)池:cephfs.data,用來(lái)存儲(chǔ)數(shù)據(jù),這是根據(jù)osd的數(shù)量和總空間的大小,創(chuàng)建cephfs的時(shí)候,系統(tǒng)自動(dòng)分配給cephfs文件系統(tǒng)的大小,按照一般情況是總大小的三分之一。
元數(shù)據(jù)池:cephfs.meta,保存數(shù)據(jù)的元信息。
1、在主節(jié)點(diǎn)上創(chuàng)建cephfs的存儲(chǔ)池
可以看出有兩個(gè)cephfs存儲(chǔ)池
查看cephfs存儲(chǔ)池的名稱和狀態(tài)
2、在客戶端掛載使用
首先在客戶端上獲取密鑰對(duì),ceph auth get-key client.admin
掛載
創(chuàng)建一個(gè)100M的文件
這時(shí)候我們發(fā)現(xiàn)這個(gè)文件已經(jīng)開(kāi)始占用存儲(chǔ)池的空間了
ceph的nfs方式
1、在主節(jié)點(diǎn)創(chuàng)建一個(gè)nfs服務(wù)和一個(gè)池
ceph orch apply nfs nfs-share
ceph osd pool create nfs-pools
查看集群當(dāng)中所有的存儲(chǔ)池,ceph osd lspools
2、創(chuàng)建一個(gè)nfs的高可用名字是my-nfs,分別運(yùn)行在zw4,再加入zw5和zw6
ceph orch apply nfs my-nfs nfs-pools --placement="zw5,zw6"
回到ceph的可視化界面,創(chuàng)建NFS
3、客戶端掛載使用
mount -t ceph 192.168.254.14:6789,192.168.254.15:6789,192.168.254.16:6789:/ /data2 -o name=admin,secret=AQBTVXdnKEBBKRAA4pFJAA5oG4FwuEIkONCaNg==
可以發(fā)現(xiàn)使用nfs的掛載目錄和cephfs數(shù)據(jù)池掛載的大小和可用空間都一樣,是因?yàn)橥ㄟ^(guò)nfs的掛載
方式,依然使用的cephfs.data的數(shù)據(jù)空間,文件實(shí)際上還是存儲(chǔ)在cephfs.data的數(shù)據(jù)池當(dāng)中。
ceph? object? storge 對(duì)象存儲(chǔ)
云計(jì)算的后臺(tái)的存儲(chǔ)方式一般都是用對(duì)象存儲(chǔ)。
對(duì)象存儲(chǔ):高擴(kuò)展,處理文件的級(jí)別可以達(dá)到PB級(jí)別。
缺點(diǎn):如果數(shù)據(jù)量不是特別的巨大,一般不需要該場(chǎng)景。
總結(jié)
ceph需要使用分布式文件系統(tǒng)的企業(yè)一般都是需要存儲(chǔ)海量數(shù)據(jù),以及保證數(shù)據(jù)的高可用非常嚴(yán)謹(jǐn)?shù)膱?chǎng)景。ceph的存儲(chǔ)方式的數(shù)據(jù)流向:主要包括存儲(chǔ)池、pg和osd
創(chuàng)建存儲(chǔ)池,分配pg
數(shù)據(jù)按照對(duì)象分配給pg
pg再數(shù)據(jù)包分配到osd