日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
讓我們了解 Ceph 分布式存儲

讓我們了解 Ceph 分布式存儲

作者:佚名 2018-01-30 09:07:36

存儲

存儲軟件

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

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比合川網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式合川網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋合川地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。

前言

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

一、初始Ceph

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

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

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

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

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

1.2Ceph組件介紹

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

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

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

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

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

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

librados,librados庫,為應(yīng)用程度提供訪問接口。同時也為塊存儲、對象存儲、文件系統(tǒng)提供原生的接口。

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

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

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

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

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

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

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

二、安裝Ceph

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

##環(huán)境說明

主機(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 < /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)行安裝,請授予用戶相關(guān)權(quán)限,如下:

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

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

2.2開始安裝

##安裝部署工具(在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之間時差允許范圍(默認(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 

##開始部署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),此時集群狀態(tài)并不處于健康狀態(tài)。

##開始部署OSD

  
 
 
  1. ### 列出節(jié)點所有磁盤信息 
  2. ceph-deploy disk list ceph-node01 ceph-node02 ceph-node03 
  3.   
  4. ### 清除磁盤分區(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   

此時,再次查看集群狀態(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ī),只需要在每個節(jié)點上執(zhí)行如下指令即可將環(huán)境清理至剛安裝完ceph客戶端時的狀態(tài)!強(qiáng)烈建議在舊集群上搭建之前清理干凈環(huán)境,否則會發(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秘鑰去訪問ceph集群。ceph創(chuàng)建了一個默認(rèn)的用戶client.admin,它有足夠的權(quán)限去訪問ceph集群。但是不建議把client.admin共享到所有其他的客戶端節(jié)點。這里我用分開的秘鑰新建一個用戶(client.rdb)去訪問特定的存儲池。

  
 
 
  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)建一個 4096MB 大小的RADOS塊設(shè)備 
  2. rbd create rbd01 --size 10240 --name client.rbd            # 創(chuàng)建一個 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è)備的時候,發(fā)生了如下錯誤。

  
 
 
  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)建的過程中加入如下參數(shù)"--image-featurelayering"也解決該問題。

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

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

3.在每個ceph節(jié)點的配置文件中,加入該配置項"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   

驗證

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

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


當(dāng)前名稱:讓我們了解 Ceph 分布式存儲
當(dāng)前路徑:http://www.dlmjj.cn/article/coejojj.html