成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

讓我們了解 Ceph 分布式存儲

存儲 存儲軟件 分布式
懷著對新事物的向往,果斷選擇Ceph來實現Ceph塊存儲對接kubernetes來實現pod的數據持久化。

前言

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

[[218717]]

一、初始Ceph

1.1了解什么是塊存儲/對象存儲/文件系統存儲?

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

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

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

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

1.2Ceph組件介紹

從下面這張圖來簡單學習下,Ceph的架構組件。(提示:本人在學習過程中所繪,如果發現問題歡迎留言,不要噴我喲)

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

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

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

Ceph元數據,MDS。ceph塊設備和RDB并不需要MDS,MDS只為CephFS服務。

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

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

ADOS塊設備,它能夠自動精簡配置并可調整大小,而且將數據分散存儲在多個OSD上。

RADOSGW,網關接口,提供對象存儲服務。它使用librgw和librados來實現允許應用程序與Ceph對象存儲建立連接。并且提供S3和Swift兼容的RESTfulAPI接口。

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

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

RADOS分布式存儲相較于傳統分布式存儲的優勢在于:

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

2.RADOS充分利用OSD的智能特點,將部分任務授權給OSD,最大程度地實現可擴展。

二、安裝Ceph

2.1環境準備

##環境說明

主機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

##準備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 

##配置免密鑰(略)

提示:如果使用普通用戶進行安裝,請授予用戶相關權限,如下:

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

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

2.2開始安裝

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

  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 

根據自己的IP配置向ceph.conf中添加public_network,并稍微增大mon之間時差允許范圍(默認為0.05s,現改為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 

查看集群狀態

  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創建成功后,檢查集群的狀態,此時集群狀態并不處于健康狀態。

##開始部署OSD

  1. ### 列出節點所有磁盤信息 
  2. ceph-deploy disk list ceph-node01 ceph-node02 ceph-node03 
  3.   
  4. ### 清除磁盤分區和內容 
  5. ceph-deploy disk zap ceph-node01:sdb ceph-node02:sdb ceph-node03:sdb 
  6.   
  7. ### 分區格式化并激活 
  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   

此時,再次查看集群狀態

  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清理環境

如果之前部署失敗了,不必刪除ceph客戶端,或者重新搭建虛擬機,只需要在每個節點上執行如下指令即可將環境清理至剛安裝完ceph客戶端時的狀態!強烈建議在舊集群上搭建之前清理干凈環境,否則會發生各種異常情況。

  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配置文件復制到192.168.58.131。

  1. ceph-deploy config push 192.168.58.131 

3.2新建用戶密鑰

客戶機需要ceph秘鑰去訪問ceph集群。ceph創建了一個默認的用戶client.admin,它有足夠的權限去訪問ceph集群。但是不建議把client.admin共享到所有其他的客戶端節點。這里我用分開的秘鑰新建一個用戶(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)檢查集群健康狀態

  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創建塊設備

  1. rbd create foo --size 4096 --name client.rbd               # 創建一個 4096MB 大小的RADOS塊設備 
  2. rbd create rbd01 --size 10240 --name client.rbd            # 創建一個 10240MB 大小的RADOS塊設備 

映射塊設備

  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   

提示:在映射塊設備的時候,發生了如下錯誤。

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

2.手動disable掉相關參數,如下所示:

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

3.在每個ceph節點的配置文件中,加入該配置項"rbd_default_features=1"。

3.4檢查被映射的塊設備

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

創建并掛載該設備

  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. 文件系統        容量  已用  可用 已用% 掛載點 
  3. /dev/rbd0        10G   33M   10G    1% /mnt/ceph-disk1 

一個ceph塊設備就創建完成。

 

責任編輯:武曉燕 來源: 博客園
相關推薦

2018-11-15 12:35:25

Ceph分布式存儲

2019-04-30 09:17:31

Ceph存儲OSD

2022-08-28 09:05:34

分布式存儲Ceph

2018-10-29 12:42:23

Ceph分布式存儲

2021-08-07 05:00:20

存儲系統

2018-08-02 08:42:57

分布式存儲Ceph

2021-07-04 07:07:06

Ceph分布式存儲架構

2020-10-20 09:38:15

分布式存儲Ceph

2023-01-03 07:57:27

2021-06-07 22:31:22

分布式區域平臺

2017-10-27 08:40:44

分布式存儲剪枝系統

2014-05-19 16:41:29

紅帽

2018-07-16 09:00:06

Ceph運維開源

2017-06-06 14:25:54

CentOS 7Ceph分布式存儲系統

2018-06-28 08:18:56

Ceph運維存儲

2018-03-08 11:10:33

分布式存儲Ceph

2020-03-12 19:00:48

Ceph分布式存儲

2018-05-24 08:37:30

2024-08-12 16:20:27

2015-05-12 13:03:54

開源分布式存儲HDFS
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕第90页 | 日日拍夜夜 | 成人免费一区二区三区视频网站 | 午夜视频在线播放 | 日本精品一区二区三区视频 | 狠狠综合久久av一区二区老牛 | 丁香一区二区 | 久久国产精品-久久精品 | 四虎在线播放 | 久久亚洲综合 | 亚洲一区亚洲二区 | 国产激情在线观看视频 | 精品久久香蕉国产线看观看亚洲 | 99reav | 久久国色 | 亚洲欧洲激情 | 中文字幕av在线 | 亚洲欧美综合 | 欧美黑人一级爽快片淫片高清 | 色婷婷久久久亚洲一区二区三区 | 91福利网址 | 国产在线观看一区二区三区 | 亚洲成人精选 | 国产日韩欧美 | 日韩在线免费播放 | 中文字幕日韩欧美一区二区三区 | 日韩成人在线播放 | 女人av| 亚洲品质自拍视频 | 狠狠操狠狠干 | 二区不卡| 国产一区二区视频免费在线观看 | 日韩欧美在线播放 | 卡通动漫第一页 | 特黄毛片视频 | 亚洲欧美国产精品久久 | 中文字幕亚洲一区二区三区 | 国产一区欧美一区 | 一级片aaa| 亚洲精品中文字幕在线观看 | 91观看|