自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

讓我們了解 Ceph 分布式存儲(chǔ)

存儲(chǔ) 存儲(chǔ)軟件 分布式
懷著對(duì)新事物的向往,果斷選擇Ceph來(lái)實(shí)現(xiàn)Ceph塊存儲(chǔ)對(duì)接kubernetes來(lái)實(shí)現(xiàn)pod的數(shù)據(jù)持久化。

前言

最近在學(xué)習(xí)kubernetes過(guò)程中,想實(shí)現(xiàn)pod數(shù)據(jù)的持久化。在調(diào)研的過(guò)程中,發(fā)現(xiàn)ceph在最近幾年發(fā)展火熱,也有很多案例落地企業(yè)。在選型方面,個(gè)人更加傾向于社區(qū)火熱的項(xiàng)目,GlusterFS、Ceph都在考慮的范圍之內(nèi),但是由于GlusterFS只提供對(duì)象存儲(chǔ)和文件系統(tǒng)存儲(chǔ),而Ceph則提供對(duì)象存儲(chǔ)、塊存儲(chǔ)以及文件系統(tǒng)存儲(chǔ)。懷著對(duì)新事物的向往,果斷選擇Ceph來(lái)實(shí)現(xiàn)Ceph塊存儲(chǔ)對(duì)接kubernetes來(lái)實(shí)現(xiàn)pod的數(shù)據(jù)持久化。

[[218717]]

一、初始Ceph

1.1了解什么是塊存儲(chǔ)/對(duì)象存儲(chǔ)/文件系統(tǒng)存儲(chǔ)?

直接進(jìn)入主題,ceph目前提供對(duì)象存儲(chǔ)(RADOSGW)、塊存儲(chǔ)RDB以及CephFS文件系統(tǒng)這3種功能。對(duì)于這3種功能介紹,分別如下:

1.對(duì)象存儲(chǔ),也就是通常意義的鍵值存儲(chǔ),其接口就是簡(jiǎn)單的GET、PUT、DEL和其他擴(kuò)展,代表主要有Swift、S3以及Gluster等;

2.塊存儲(chǔ),這種接口通常以QEMUDriver或者KernelModule的方式存在,這種接口需要實(shí)現(xiàn)Linux的BlockDevice的接口或者QEMU提供的BlockDriver接口,如Sheepdog,AWS的EBS,青云的云硬盤(pán)和阿里云的盤(pán)古系統(tǒng),還有Ceph的RBD(RBD是Ceph面向塊存儲(chǔ)的接口)。在常見(jiàn)的存儲(chǔ)中DAS、SAN提供的也是塊存儲(chǔ);

3.文件存儲(chǔ),通常意義是支持POSIX接口,它跟傳統(tǒng)的文件系統(tǒng)如Ext4是一個(gè)類(lèi)型的,但區(qū)別在于分布式存儲(chǔ)提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存儲(chǔ)的接口),但是有時(shí)候又會(huì)把GlusterFS,HDFS這種非POSIX接口的類(lèi)文件存儲(chǔ)接口歸入此類(lèi)。當(dāng)然NFS、NAS也是屬于文件系統(tǒng)存儲(chǔ);

1.2Ceph組件介紹

從下面這張圖來(lái)簡(jiǎn)單學(xué)習(xí)下,Ceph的架構(gòu)組件。(提示:本人在學(xué)習(xí)過(guò)程中所繪,如果發(fā)現(xiàn)問(wèn)題歡迎留言,不要噴我喲)

Monitor,負(fù)責(zé)監(jiān)視整個(gè)集群的運(yùn)行狀況,信息由維護(hù)集群成員的守護(hù)程序來(lái)提供,各節(jié)點(diǎn)之間的狀態(tài)、集群配置信息。Cephmonitormap主要包括OSDmap、PGmap、MDSmap和CRUSH等,這些map被統(tǒng)稱為集群Map。cephmonitor不存儲(chǔ)任何數(shù)據(jù)。下面分別開(kāi)始介紹這些map的功能:

  • Monitormap:包括有關(guān)monitor節(jié)點(diǎn)端到端的信息,其中包括Ceph集群ID,監(jiān)控主機(jī)名和IP以及端口。并且存儲(chǔ)當(dāng)前版本信息以及最新更改信息,通過(guò)"cephmondump"查看monitormap。
  • OSDmap:包括一些常用的信息,如集群ID、創(chuàng)建OSDmap的版本信息和最后修改信息,以及pool相關(guān)信息,主要包括pool名字、pool的ID、類(lèi)型,副本數(shù)目以及PGP等,還包括數(shù)量、狀態(tài)、權(quán)重、最新的清潔間隔和OSD主機(jī)信息。通過(guò)命令"cephosddump"查看。
  • PGmap:包括當(dāng)前PG版本、時(shí)間戳、最新的OSDMap的版本信息、空間使用比例,以及接近占滿比例信息,同事,也包括每個(gè)PGID、對(duì)象數(shù)目、狀態(tài)、OSD的狀態(tài)以及深度清理的詳細(xì)信息。通過(guò)命令"cephpgdump"可以查看相關(guān)狀態(tài)。
  • CRUSHmap:CRUSHmap包括集群存儲(chǔ)設(shè)備信息,故障域?qū)哟谓Y(jié)構(gòu)和存儲(chǔ)數(shù)據(jù)時(shí)定義失敗域規(guī)則信息。通過(guò)命令"cephosdcrushmap"查看。
  • MDSmap:MDSMap包括存儲(chǔ)當(dāng)前MDSmap的版本信息、創(chuàng)建當(dāng)前的Map的信息、修改時(shí)間、數(shù)據(jù)和元數(shù)據(jù)POOLID、集群MDS數(shù)目和MDS狀態(tài),可通過(guò)"cephmdsdump"查看。

OSD,CephOSD是由物理磁盤(pán)驅(qū)動(dòng)器、在其之上的Linux文件系統(tǒng)以及CephOSD服務(wù)組成。CephOSD將數(shù)據(jù)以對(duì)象的形式存儲(chǔ)到集群中的每個(gè)節(jié)點(diǎn)的物理磁盤(pán)上,完成存儲(chǔ)數(shù)據(jù)的工作絕大多數(shù)是由OSDdaemon進(jìn)程實(shí)現(xiàn)。在構(gòu)建CephOSD的時(shí)候,建議采用SSD磁盤(pán)以及xfs文件系統(tǒng)來(lái)格式化分區(qū)。BTRFS雖然有較好的性能,但是目前不建議使用到生產(chǎn)中,目前建議還是處于圍觀狀態(tài)。

Ceph元數(shù)據(jù),MDS。ceph塊設(shè)備和RDB并不需要MDS,MDS只為CephFS服務(wù)。

RADOS,ReliableAutonomicDistributedObjectStore。RADOS是ceph存儲(chǔ)集群的基礎(chǔ)。在ceph中,所有數(shù)據(jù)都以對(duì)象的形式存儲(chǔ),并且無(wú)論什么數(shù)據(jù)類(lèi)型,RADOS對(duì)象存儲(chǔ)都將負(fù)責(zé)保存這些對(duì)象。RADOS層可以確保數(shù)據(jù)始終保持一致。

librados,librados庫(kù),為應(yīng)用程度提供訪問(wèn)接口。同時(shí)也為塊存儲(chǔ)、對(duì)象存儲(chǔ)、文件系統(tǒng)提供原生的接口。

ADOS塊設(shè)備,它能夠自動(dòng)精簡(jiǎn)配置并可調(diào)整大小,而且將數(shù)據(jù)分散存儲(chǔ)在多個(gè)OSD上。

RADOSGW,網(wǎng)關(guān)接口,提供對(duì)象存儲(chǔ)服務(wù)。它使用librgw和librados來(lái)實(shí)現(xiàn)允許應(yīng)用程序與Ceph對(duì)象存儲(chǔ)建立連接。并且提供S3和Swift兼容的RESTfulAPI接口。

CephFS,Ceph文件系統(tǒng),與POSIX兼容的文件系統(tǒng),基于librados封裝原生接口。

簡(jiǎn)單說(shuō)下CRUSH,ControlledReplicationUnderScalableHashing,它表示數(shù)據(jù)存儲(chǔ)的分布式選擇算法,ceph的高性能/高可用就是采用這種算法實(shí)現(xiàn)。CRUSH算法取代了在元數(shù)據(jù)表中為每個(gè)客戶端請(qǐng)求進(jìn)行查找,它通過(guò)計(jì)算系統(tǒng)中數(shù)據(jù)應(yīng)該被寫(xiě)入或讀出的位置。CRUSH能夠感知基礎(chǔ)架構(gòu),能夠理解基礎(chǔ)設(shè)施各個(gè)部件之間的關(guān)系。并且CRUSH保存數(shù)據(jù)的多個(gè)副本,這樣即使一個(gè)故障域的幾個(gè)組件都出現(xiàn)故障,數(shù)據(jù)依然可用。CRUSH算是使得ceph實(shí)現(xiàn)了自我管理和自我修復(fù)。

RADOS分布式存儲(chǔ)相較于傳統(tǒng)分布式存儲(chǔ)的優(yōu)勢(shì)在于:

1.將文件映射到object后,利用ClusterMap通過(guò)CRUSH計(jì)算而不是查找表方式定位文件數(shù)據(jù)存儲(chǔ)到存儲(chǔ)設(shè)備的具體位置。優(yōu)化了傳統(tǒng)文件到塊的映射和BlockMAp的管理。

2.RADOS充分利用OSD的智能特點(diǎn),將部分任務(wù)授權(quán)給OSD,最大程度地實(shí)現(xiàn)可擴(kuò)展。

二、安裝Ceph

2.1環(huán)境準(zhǔn)備

##環(huán)境說(shuō)明

主機(jī)IP功能

ceph-node01192.168.58.128 deploy、mon*1、osd*3

ceph-node02192.168.58.129 mon*1、osd*3

ceph-node03192.168.58.130 mon*1、osd*3

##準(zhǔn)備yum源

  1. cd /etc/yum.repos.d/ && sudo mkdir bak 
  2. sudo mv *.repo bak/ 
  3. sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 
  4. sudo wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo 
  5. sudo sed -i '/aliyuncs/d' /etc/yum.repos.d/CentOS-Base.repo 
  6. sudo sed -i '/aliyuncs/d' /etc/yum.repos.d/epel.repo 
  7. sudo sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo 

##添加Ceph源

  1. sudo cat <<EOF > /etc/yum.repos.d/ceph.repo 
  2. [Ceph] 
  3. name=Ceph packages for x86_64 
  4. baseurl=https://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/ 
  5. enabled=1 
  6. gpgcheck=1 
  7. type=rpm-md 
  8. gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc 
  9.   
  10. [Ceph-noarch] 
  11. name=Ceph noarch packages 
  12. baseurl=https://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/ 
  13. enabled=1 
  14. gpgcheck=1 
  15. type=rpm-md 
  16. gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc 
  17.   
  18. [ceph-source] 
  19. name=Ceph source packages 
  20. baseurl=https://mirrors.aliyun.com/ceph/rpm-jewel/el7/SRPMS/ 
  21. enabled=1 
  22. gpgcheck=1 
  23. type=rpm-md 
  24. gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc 
  25. EOF 

##配置免密鑰(略)

提示:如果使用普通用戶進(jìn)行安裝,請(qǐng)授予用戶相關(guān)權(quán)限,如下:

a.將yangsheng用戶加入到sudo權(quán)限(yangshengALL=(ALL)NOPASSWD:ALL)

b.將/etc/sudoers中的“Defaultsrequiretty”注釋

2.2開(kāi)始安裝

##安裝部署工具(在192.168.58.128執(zhí)行如下操作)

  1. yum makecache 
  2. yum -y install ceph-deploy 
  3.   
  4. ceph-deploy --version 
  5. 1.5.39 

##初始化monitor

  1. mkdir ceph-cluster && cd ceph-cluster 
  2. ceph-deploy new ceph-node01 ceph-node02 ceph-node03 

根據(jù)自己的IP配置向ceph.conf中添加public_network,并稍微增大mon之間時(shí)差允許范圍(默認(rèn)為0.05s,現(xiàn)改為2s):

  1. # change default replica 3 to 2 
  2. osd pool default size = 2 
  3.   
  4. public network = 192.168.58.0/24 
  5. cluster network = 192.168.58.0/24 

##安裝ceph

  1. ceph-deployinstallceph-node01ceph-node02ceph-node03 

##開(kāi)始部署monitor

  1. ceph-deploy  mon create-initial 
  2.   
  3. [root@ceph-node01 ceph]# ls 
  4. ceph.bootstrap-mds.keyring  ceph.bootstrap-osd.keyring  ceph.client.admin.keyring  ceph-deploy-ceph.log  rbdmap 
  5. ceph.bootstrap-mgr.keyring  ceph.bootstrap-rgw.keyring  ceph.conf                  ceph.mon.keyring 

查看集群狀態(tài)

  1. [root@ceph-node01 ceph]# ceph -s 
  2.     cluster b5108a6c-7e3d-4295-88fa-88dc825be3ba 
  3.      health HEALTH_ERR 
  4.             no osds 
  5.      monmap e1: 3 mons at {ceph-node01=192.168.58.128:6789/0,ceph-node02=192.168.58.129:6789/0,ceph-node03=192.168.58.130:6789/0} 
  6.             election epoch 6, quorum 0,1,2 ceph-node01,ceph-node02,ceph-node03 
  7.      osdmap e1: 0 osds: 0 up, 0 in 
  8.             flags sortbitwise,require_jewel_osds 
  9.       pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects 
  10.             0 kB used, 0 kB / 0 kB avail 
  11.                   64 creating   

提示:Monitor創(chuàng)建成功后,檢查集群的狀態(tài),此時(shí)集群狀態(tài)并不處于健康狀態(tài)。

##開(kāi)始部署OSD

  1. ### 列出節(jié)點(diǎn)所有磁盤(pán)信息 
  2. ceph-deploy disk list ceph-node01 ceph-node02 ceph-node03 
  3.   
  4. ### 清除磁盤(pán)分區(qū)和內(nèi)容 
  5. ceph-deploy disk zap ceph-node01:sdb ceph-node02:sdb ceph-node03:sdb 
  6.   
  7. ### 分區(qū)格式化并激活 
  8. ceph-deploy osd create ceph-node01:sdb ceph-node02:sdb ceph-node03:sdb 
  9. ceph-deploy osd activate ceph-node01:sdb ceph-node02:sdb ceph-node03:sdb   

此時(shí),再次查看集群狀態(tài)

  1. [root@ceph-node01 ceph-cluster]# ceph -s 
  2.     cluster 86fb7c8b-9ad1-4eaf-a24c-0d2d9f36ab29 
  3.      health HEALTH_OK 
  4.      monmap e2: 3 mons at {ceph-node01=192.168.58.128:6789/0,ceph-node02=192.168.58.129:6789/0,ceph-node03=192.168.58.130:6789/0} 
  5.             election epoch 6, quorum 0,1,2 ceph-node01,ceph-node02,ceph-node03 
  6.      osdmap e15: 3 osds: 3 up, 3 in 
  7.             flags sortbitwise,require_jewel_osds 
  8.       pgmap v32: 64 pgs, 1 pools, 0 bytes data, 0 objects 
  9.             100 MB used, 45946 MB / 46046 MB avail 
  10.                   64 active+clean 

2.3清理環(huán)境

如果之前部署失敗了,不必刪除ceph客戶端,或者重新搭建虛擬機(jī),只需要在每個(gè)節(jié)點(diǎn)上執(zhí)行如下指令即可將環(huán)境清理至剛安裝完ceph客戶端時(shí)的狀態(tài)!強(qiáng)烈建議在舊集群上搭建之前清理干凈環(huán)境,否則會(huì)發(fā)生各種異常情況。

  1. sudo ps aux|grep ceph | grep -v "grep"| awk '{print $2}'|xargs kill -9 
  2. sudo ps -ef|grep ceph 
  3.   
  4. sudo umount /var/lib/ceph/osd/* 
  5. sudo rm -rf /var/lib/ceph/osd/* 
  6. sudo rm -rf /var/lib/ceph/mon/* 
  7. sudo rm -rf /var/lib/ceph/mds/* 
  8. sudo rm -rf /var/lib/ceph/bootstrap-mds/* 
  9. sudo rm -rf /var/lib/ceph/bootstrap-osd/* 
  10. sudo rm -rf /var/lib/ceph/bootstrap-rgw/* 
  11. sudo rm -rf /var/lib/ceph/tmp/* 
  12. sudo rm -rf /etc/ceph/* 
  13. sudo rm -rf /var/run/ceph/*   

三、配置客戶端

3.1安裝客戶端 

  1. ssh-copy-id 192.168.58.131 
  2. ceph-deploy install 192.168.58.131 

將Ceph配置文件復(fù)制到192.168.58.131。

  1. ceph-deploy config push 192.168.58.131 

3.2新建用戶密鑰

客戶機(jī)需要ceph秘鑰去訪問(wèn)ceph集群。ceph創(chuàng)建了一個(gè)默認(rèn)的用戶client.admin,它有足夠的權(quán)限去訪問(wèn)ceph集群。但是不建議把client.admin共享到所有其他的客戶端節(jié)點(diǎn)。這里我用分開(kāi)的秘鑰新建一個(gè)用戶(client.rdb)去訪問(wèn)特定的存儲(chǔ)池。

  1. cephauthget-or-createclient.rbdmon'allowr'osd'allowclass-readobject_prefixrbd_children,allowrwxpool=rbd' 

為192.168.58.131上的client.rbd用戶添加秘鑰

  1. cephauthget-or-createclient.rbd|ssh192.168.58.131tee/etc/ceph/ceph.client.rbd.keyring 

到客戶端(192.168.58.131)檢查集群健康狀態(tài)

  1. [root@localhost ~]# cat /etc/ceph/ceph.client.rbd.keyring >> /etc/ceph/keyring 
  2. [root@localhost ~]# ceph -s --name client.rbd 
  3.     cluster 86fb7c8b-9ad1-4eaf-a24c-0d2d9f36ab29 
  4.      health HEALTH_OK 
  5.      monmap e2: 3 mons at {ceph-node01=192.168.58.128:6789/0,ceph-node02=192.168.58.129:6789/0,ceph-node03=192.168.58.130:6789/0} 
  6.             election epoch 6, quorum 0,1,2 ceph-node01,ceph-node02,ceph-node03 
  7.      osdmap e15: 3 osds: 3 up, 3 in 
  8.             flags sortbitwise,require_jewel_osds 
  9.       pgmap v32: 64 pgs, 1 pools, 0 bytes data, 0 objects 
  10.             100 MB used, 45946 MB / 46046 MB avail 
  11.                   64 active+clean 

3.3創(chuàng)建塊設(shè)備

  1. rbd create foo --size 4096 --name client.rbd               # 創(chuàng)建一個(gè) 4096MB 大小的RADOS塊設(shè)備 
  2. rbd create rbd01 --size 10240 --name client.rbd            # 創(chuàng)建一個(gè) 10240MB 大小的RADOS塊設(shè)備 

映射塊設(shè)備

  1. [root@localhost ceph]# rbd create rbd02 --size 10240 --image-feature layering --name client.rbd 
  2. [root@localhost ceph]# rbd map --image rbd02 --name client.rbd /dev/rdb02 
  3. /dev/rbd0   

提示:在映射塊設(shè)備的時(shí)候,發(fā)生了如下錯(cuò)誤。

  1. [root@localhost ceph]# rbd map --image rbd01 --name client.rbd /dev/rdb01 
  2. rbd: sysfs write failed 
  3. RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd feature disable"
  4. In some cases useful info is found in syslog - try "dmesg | tail" or so. 
  5. rbd: map failed: (6) No such device or address   

解決該辦法有多種方式,分別如下所示:

1.在創(chuàng)建的過(guò)程中加入如下參數(shù)"--image-featurelayering"也解決該問(wèn)題。

2.手動(dòng)disable掉相關(guān)參數(shù),如下所示:

  1. rbdfeaturedisablefooexclusive-lock,object-map,fast-diff,deep-flatten 

3.在每個(gè)ceph節(jié)點(diǎn)的配置文件中,加入該配置項(xiàng)"rbd_default_features=1"。

3.4檢查被映射的塊設(shè)備

  1. [root@localhost ceph]# rbd showmapped --name client.rbd 
  2. id pool image snap device    
  3. 0  rbd  rbd02 -    /dev/rbd0 

創(chuàng)建并掛載該設(shè)備

  1. fdisk -l /dev/rbd0 
  2. mkfs.xfs /dev/rbd0 
  3. mkdir /mnt/ceph-disk1 
  4. mount /dev/rbd1 /mnt/ceph-disk1   

驗(yàn)證

  1. [root@localhost ceph]# df -h /mnt/ceph-disk1/ 
  2. 文件系統(tǒng)        容量  已用  可用 已用% 掛載點(diǎn) 
  3. /dev/rbd0        10G   33M   10G    1% /mnt/ceph-disk1 

一個(gè)ceph塊設(shè)備就創(chuàng)建完成。

 

責(zé)任編輯:武曉燕 來(lái)源: 博客園
相關(guān)推薦

2018-11-15 12:35:25

Ceph分布式存儲(chǔ)

2019-04-30 09:17:31

Ceph存儲(chǔ)OSD

2022-08-28 09:05:34

分布式存儲(chǔ)Ceph

2021-07-04 07:07:06

Ceph分布式存儲(chǔ)架構(gòu)

2018-08-02 08:42:57

分布式存儲(chǔ)Ceph

2020-10-20 09:38:15

分布式存儲(chǔ)Ceph

2021-08-07 05:00:20

存儲(chǔ)系統(tǒng)

2018-10-29 12:42:23

Ceph分布式存儲(chǔ)

2023-01-03 07:57:27

2017-10-27 08:40:44

分布式存儲(chǔ)剪枝系統(tǒng)

2017-06-06 14:25:54

CentOS 7Ceph分布式存儲(chǔ)系統(tǒng)

2018-03-08 11:10:33

分布式存儲(chǔ)Ceph

2020-03-12 19:00:48

Ceph分布式存儲(chǔ)

2018-06-28 08:18:56

Ceph運(yùn)維存儲(chǔ)

2021-06-07 22:31:22

分布式區(qū)域平臺(tái)

2014-05-19 16:41:29

紅帽

2018-07-16 09:00:06

Ceph運(yùn)維開(kāi)源

2018-05-24 08:37:30

2024-08-12 16:20:27

2015-05-12 13:03:54

開(kāi)源分布式存儲(chǔ)HDFS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)