
Ceph–分散式儲存

一、儲存基礎
1.單機儲存裝置
●DAS(直接附加儲存,是直接接到計算機的主機板總線上去的儲存)IDE、SATA、SCSI、SAS、USB 介面的磁碟所謂介面就是一種儲存裝置驅動下的磁碟裝置,提供塊級別的儲存
●NAS(網路附加儲存,是透過網路附加到當前主機檔案系統之上的儲存)NFS、CIFS、FTP檔案系統級別的儲存,本身就是一個做好的檔案系統,透過nfs介面在使用者空間輸出後,客戶端基於核心模組與遠端主機進行網路通訊,把它轉為好像本地檔案系統一樣來使用,這種儲存服務是沒辦法對它再一次格式化建立檔案系統塊的
●SAN(儲存區域網路)SCSI協議(只是用來傳輸資料的存取操作,物理層使用SCSI線纜來傳輸)、FCSAN(物理層使用光纖來傳輸)、iSCSI(物理層使用乙太網來傳輸)也是一種網路儲存,但不同之處在於SAN提供給客戶端主機使用的介面是塊級別的儲存
2.單機儲存的問題
●儲存處理能力不足傳統的IDE的IO值是100次/秒,SATA固態磁碟500次/秒,固態硬碟達到2000-4000次/秒。即使磁碟的IO能力再大數十倍,也不夠抗住網站訪問高峰期數十萬、數百萬甚至上億使用者的同時訪問,這同時還要受到主機網路IO能力的限制。
●儲存空間能力不足單塊磁碟的容量再大,也無法滿足使用者的正常訪問所需的資料容量限制。
●單點故障問題單機儲存資料存在單點故障問題
3.商業儲存解決方案
EMC、NetAPP、IBM、DELL、華為、浪潮
4.分散式儲存(軟體定義的儲存 SDS)
Ceph、TFS、FastDFS、MooseFS(MFS)、HDFS、GlusterFS(GFS)儲存機制會把資料分散儲存到多個節點上,具有高擴充套件性、高效能、高可用性等優點。

5.分散式儲存的型別
●塊儲存(例如硬碟,一般是一個儲存被一個伺服器掛載使用,適用於容器或虛擬機器儲存卷分配、日誌儲存、檔案儲存)就是一個裸裝置,用於提供沒有被組織過的儲存空間,底層以分塊的方式來儲存資料
●檔案儲存(例如NFS,解決塊儲存無法共享問題,可以一個儲存被多個伺服器同時掛載,適用於目錄結構的儲存、日誌儲存)是一種資料的組織存放介面,一般是建立在塊級別的儲存結構之上,以檔案形式來儲存資料,而檔案的元資料和實際資料是分開儲存的
●物件儲存(例如OSS,一個儲存可以被多服務同時訪問,具備塊儲存的高速讀寫能力,也具備檔案儲存共享的特性,適用圖片儲存、影片儲存)基於API介面提供的檔案儲存,每一個檔案都是一個物件,且檔案大小各不相同的,檔案的元資料和實際資料是存放在一起的
二、Ceph 概述
1.Ceph 簡介
Ceph使用C++語言開發,是一個開放、自我修復和自我管理的開源分散式儲存系統。具有高擴充套件性、高效能、高可靠性的優點。
Ceph目前已得到眾多雲計算廠商的支援並被廣泛應用。RedHat及OpenStack,Kubernetes都可與Ceph整合以支援虛擬機器映象的後端儲存。粗略估計,我國70%—80%的雲平臺都將Ceph作為底層的儲存平臺,由此可見Ceph儼然成為了開源雲平臺的標配。目前國內使用Ceph搭建分散式儲存系統較為成功的企業有華為、阿里、中興、華三、浪潮、中國移動、網易、樂視、360、星辰天合儲存、杉巖資料等。
2.Ceph 優勢
●高擴充套件性:去中心化,支援使用普通X86伺服器,支援上千個儲存節點的規模,支援TB到EB級的擴充套件。●高可靠性:沒有單點故障,多資料副本,自動管理,自動修復。●高效能:摒棄了傳統的集中式儲存元資料定址的方案,採用 CRUSH 演算法,資料分佈均衡,並行度高。●功能強大:Ceph是個大一統的儲存系統,集塊儲存介面(RBD)、檔案儲存介面(CephFS)、物件儲存介面(RadosGW)於一身,因而適用於不同的應用場景。
3.Ceph 架構
自下向上,可以將Ceph系統分為四個層次:
●RADOS 基礎儲存系統(Reliab1e,Autonomic,Distributed object store,即可靠的、自動化的、分散式的物件儲存)RADOS是Ceph最底層的功能模組,是一個無限可擴容的物件儲存服務,能將檔案拆解成無數個物件(碎片)存放在硬碟中,大大提高了資料的穩定性。它主要由OSD和Monitor兩個元件組成,OSD和Monitor都可以部署在多臺伺服器中,這就是ceph分散式的由來,高擴充套件性的由來。
●LIBRADOS 基礎庫Librados提供了與RADOS進行互動的方式,並向上層應用提供Ceph服務的API介面,因此上層的RBD、RGW和CephFS都是透過Librados訪問的,目前提供PHP、Ruby、Java、Python、Go、C和C++支援,以便直接基於RADOS(而不是整個Ceph)進行客戶端應用開發。
●高層應用介面:包括了三個部分1)物件儲存介面 RGW(RADOS Gateway)閘道器介面,基於Librados開發的物件儲存系統,提供S3和Swift相容的RESTful API介面。
2)塊儲存介面 RBD(Reliable Block Device)基於Librados提供塊裝置介面,主要用於Host/VM。
3)檔案儲存介面 CephFS(Ceph File System)Ceph檔案系統,提供了一個符合POSIX標準的檔案系統,它使用Ceph儲存叢集在檔案系統上儲存使用者資料。基於Librados提供的分散式檔案系統介面。
●應用層:基於高層介面或者基礎庫Librados開發出來的各種APP,或者Host、VM等諸多客戶端


4.Ceph 核心元件
Ceph是一個物件式儲存系統,它把每一個待管理的資料流(如檔案等資料)切分為一到多個固定大小(預設4兆)的物件資料(Object),並以其為原子單元(原子是構成元素的最小單元)完成資料的讀寫。
●OSD(Object Storage Daemon,守護程序 ceph-osd)是負責物理儲存的程序,一般配置成和磁碟一一對應,一塊磁碟啟動一個OSD程序。主要功能是儲存資料、複製資料、平衡資料、恢復資料,以及與其它OSD間進行心跳檢查,負責響應客戶端請求返回具體資料的程序等。通常至少需要3個OSD來實現冗餘和高可用性。
●PG(Placement Group 歸置組)PG 是一個虛擬的概念而已,物理上不真實存在。它在資料定址時類似於資料庫中的索引:Ceph 先將每個物件資料透過HASH演算法固定對映到一個 PG 中,然後將 PG 透過 CRUSH 演算法對映到 OSD。
●PoolPool 是儲存物件的邏輯分割槽,它起到 namespace 的作用。每個 Pool 包含一定數量(可配置)的 PG。Pool 可以做故障隔離域,根據不同的使用者場景統一進行隔離。
#Pool中資料儲存方式支援兩種型別:●多副本(replicated):類似 raid1,一個物件資料預設儲存 3 個副本,放在不同的 OSD●糾刪碼(Erasure Code):類似 raid5,對 CPU 消耗稍大,但是節約磁碟空間,物件資料儲存只有 1 個副本。由於Ceph部分功能不支援糾刪碼池,此型別儲存池使用不多
#Pool、PG 和 OSD 的關係:一個Pool裡有很多個PG;一個PG裡包含一堆物件,一個物件只能屬於一個PG;PG有主從之分,一個PG分佈在不同的OSD上(針對多副本型別)
●Monitor(守護程序 ceph-mon)用來儲存OSD的元資料。負責維護叢集狀態的對映檢視(Cluster Map:OSD Map、Monitor Map、PG Map 和 CRUSH Map),維護展示叢集狀態的各種圖表, 管理叢集客戶端認證與授權。一個Ceph叢集通常至少需要 3 或 5 個(奇數個)Monitor 節點才能實現冗餘和高可用性,它們透過 Paxos 協議實現節點間的同步資料。
●Manager(守護程序 ceph-mgr)負責跟蹤執行時指標和 Ceph 叢集的當前狀態,包括儲存利用率、當前效能指標和系統負載。為外部監視和管理系統提供額外的監視和介面,例如 zabbix、prometheus、 cephmetrics 等。一個 Ceph 叢集通常至少需要 2 個 mgr 節點實現高可用性,基於 raft 協議實現節點間的資訊同步。
●MDS(Metadata Server,守護程序 ceph-mds)是 CephFS 服務依賴的元資料服務。負責儲存檔案系統的元資料,管理目錄結構。物件儲存和塊裝置儲存不需要元資料服務;如果不使用 CephFS 可以不安裝。

5.OSD 儲存引擎
OSD 有兩種方式管理它們儲存的資料。在 Luminous 12.2.z 及以後的發行版中,預設(也是推薦的)後端是 BlueStore。在 Luminous 釋出之前, 預設是 FileStore, 也是唯一的選項。
●FilestoreFileStore是在Ceph中儲存物件的一個遺留方法。它依賴於一個標準檔案系統(只能是XFS),並結合一個鍵/值資料庫(傳統上是LevelDB,現在BlueStore是RocksDB),用於儲存和管理元資料。
FileStore經過了良好的測試,在生產中得到了廣泛的應用。然而,由於它的總體設計和對傳統檔案系統的依賴,使得它在效能上存在許多不足。
●Bluestore從 Ceph 12.2.0(Luminous) 版本開始的。在 Luminous 版本中,BlueStore 被引入作為一種新的、高效能的 OSD 儲存引擎,以替代舊的 FileStore 引擎。
在 Ceph 中,BlueStore 可以提供更快的響應時間和更高的資料吞吐量,同時也具有更好的可靠性和穩定性。相比之下,舊的 FileStore 儲存引擎通常需要更多的 CPU 和記憶體資源,對 IO 延遲的敏感度也較高。
FileStore 將物件儲存為塊裝置基礎上的檔案系統(通常是 XFS)中的檔案。
BlueStore 將物件直接儲存在原始塊裝置上,免除了對檔案系統層的需要,提高了讀寫操作速度,透過直接操作底層塊裝置來管理資料,而不是傳統的檔案系統。
這種方法提供了更好的效能和可靠性,因為可以將資料劃分為較小的塊並使用校驗和來檢測錯誤。此外,BlueStore可以直接與Solid State Drive(SSD)互動,並利用其快速讀寫速度。
BlueStore還具有可擴充套件性,可以處理數百萬個物理盤和千億個物件。它實現了動態負載平衡和自動恢復機制,以確保高可用性和資料可靠性。
6.Ceph 資料的儲存過程
1)客戶端從 mon 獲取最新的 Cluster Map
2)在 Ceph 中,一切皆物件。Ceph 儲存的資料都會被切分成為一到多個固定大小的物件(Object)。Object size 大小可以由管理員調整,通常為 2M 或 4M。每個物件都會有一個唯一的 OID,由 ino 與 ono 組成:●ino :即是檔案的 FileID,用於在全域性唯一標識每一個檔案●ono :則是分片的編號比如:一個檔案 FileID 為 A,它被切成了兩個物件,一個物件編號0,另一個編號1,那麼這兩個檔案的 oid 則為 A0 與 A1。OID 的好處是可以唯一標示每個不同的物件,並且儲存了物件與檔案的從屬關係。由於 Ceph 的所有資料都虛擬成了整齊劃一的物件,所以在讀寫時效率都會比較高。
3)透過對 OID 使用 HASH 演算法得到一個16進位制的特徵碼,用特徵碼與 Pool 中的 PG 總數取餘,得到的序號則是 PGID 。即 Pool_ID + HASH(OID) % PG_NUM 得到 PGID
4)PG 會根據設定的副本數量進行復制,透過對 PGID 使用 CRUSH 演算法算出 PG 中目標主和次 OSD 的 ID,儲存到不同的 OSD 節點上(其實是把 PG 中的所有物件儲存到 OSD 上)。即透過 CRUSH(PGID) 得到將 PG 中的資料儲存到各個 OSD 組中CRUSH 是 Ceph 使用的資料分佈演算法,類似一致性雜湊,讓資料分配到預期的地方。
7.Ceph 版本發行生命週期
Ceph從Nautilus版本(14.2.0)開始,每年都會有一個新的穩定版發行,預計是每年的3月份釋出,每年的新版本都會起一個新的名稱(例如,“Mimic”)和一個主版本號(例如,13代表Mimic,因為“M”是字母表的第13個字母)。
版本號的格式為 x.y.z,x 表示釋出週期(例如,13 代表 Mimic,17 代表 Quincy),y 表示釋出版本型別,即● x.0.z :y等於 0,表示開發版本● x.1.z :y等於 1,表示釋出候選版本(用於測試叢集)● x.2.z :y等於 2,表示穩定/錯誤修復版本(針對使用者)
8.Ceph 叢集部署
目前 Ceph 官方提供很多種部署 Ceph 叢集的方法,常用的分別是 ceph-deploy,cephadm 和 二進位制:●ceph-deploy :一個叢集自動化部署工具,使用較久,成熟穩定,被很多自動化工具所整合,可用於生產部署。
●cephadm :從 Octopus 和較新的版本版本後使用 cephadm 來部署 ceph 叢集,使用容器和 systemd 安裝和管理 Ceph 叢集。目前不建議用於生產環境。
●二進位制:手動部署,一步步部署 Ceph 叢集,支援較多定製化和了解部署細節,安裝難度較大。
三、基於 ceph-deploy 部署 Ceph 叢集
Ceph 生產環境推薦:
1、儲存叢集全採用萬兆網路2、叢集網路(cluster-network,用於叢集內部通訊)與公共網路(public-network,用於外部訪問Ceph叢集)分離3、mon、mds 與 osd 分離部署在不同主機上(測試環境中可以讓一臺主機節點執行多個元件)4、OSD 使用 SATA 亦可5、根據容量規劃叢集6、至強E5 2620 V3或以上 CPU,64GB或更高記憶體7、叢集主機分散部署,避免機櫃的電源或者網路故障
Ceph 環境規劃
主機名 Public網路 Cluster網路 角色
admin 192.168.10.120 admin(管理節點負責叢集整體部署)、client
node01 192.168.10.121 192.168.100.11 mon、mgr、osd(/dev/sdb、/dev/sdc、/dev/sdd)
node02 192.168.10.122 192.168.100.12 mon,mgr,osd(/dev/sdb、/dev/sdc、/dev/sdd)
node03 192.168.10.123 192.168.100.13 mon,osd(/dev/sdb、/dev/sdc、/dev/sdd)
client 192.168.10.124 client
環境準備可選步驟:建立 Ceph 的管理使用者
useradd cephadm
passwd cephadm
visudo
cephadmALL=(root) NOPASSWD:ALL
1.關閉 selinux 與防火牆
systemctl disable –now firewalldsetenforce 0sed -i 's/enforcing/disabled/' /etc/selinux/config

2.根據規劃設定主機名
hostnamectl set-hostname adminhostnamectl set-hostname node01hostnamectl set-hostname node02hostnamectl set-hostname node03hostnamectl set-hostname client
3.配置 hosts 解析
cat >> /etc/hosts << EOF192.168.10.120 admin192.168.10.121 node01192.168.10.122 node02192.168.10.123 node03192.168.10.124 clientEOF

4.安裝常用軟體和依賴包
wget-O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum -y install epel-release
yum -y install yum-plugin-priorities yum-utils ntpdate python-setuptools python-pip gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-develcurlcurl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel tcl tk cmake ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfig git bind-utils tmux elinks numactl iftop bwm-ng net-tools expect snappy leveldb gdisk python-argparse gperftools-libs conntrack ipset jq libseccomp socat chrony sshpass


5.在 admin 管理節點配置 ssh 免密登入所有節點
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsasshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@adminsshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node01sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node02sshpass -p 'abc1234' ssh-copy-id -o StrictHostKeyChecking=no root@node03


6.配置時間同步
systemctl enable --now chronydtimedatectl set-ntp true #開啟 NTPtimedatectl set-timezone Asia/Shanghai #設定時區chronyc -a makestep #強制同步下系統時鐘timedatectl status #檢視時間同步狀態chronyc sources -v #檢視 ntp 源伺服器資訊timedatectl set-local-rtc 0 #將當前的UTC時間寫入硬體時鐘

#重啟依賴於系統時間的服務
systemctl restart rsyslog systemctl restart crond

#關閉無關服務
systemctl disable –now postfix

7.配置 Ceph yum源
wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm –no-check-certificaterpm -ivh ceph-release-1-1.el7.noarch.rpm –force

8、執行完上面所有的操作之後重啟所有主機(可選)
syncreboot

四、部署 Ceph 叢集
1.為所有節點都建立一個 Ceph 工作目錄,後續的工作都在該目錄下進行
mkdir -p /etc/ceph

2.安裝 ceph-deploy 部署工具
cd /etc/cephyum install -y ceph-deployceph-deploy –version

3.在管理節點為其它節點安裝 Ceph 軟體包
#ceph-deploy 2.0.1 預設部署的是 mimic 版的 Ceph,若想安裝其他版本的 Ceph,可以用 —
release 手動指定版本cd /etc/cephceph-deploy install –release nautilus node0{1..3} admin
#ceph-deploy install 本質就是在執行下面的命令:yum clean allyum -y install epel-releaseyum -y install yum-plugin-prioritiesyum -y install ceph-release ceph ceph-radosgw
#也可採用手動安裝 Ceph 包方式,在其它節點上執行下面的命令將 Ceph 的安裝包都部署上:sed -i 's#download.ceph.com#mirrors.tuna.tsinghua.edu.cn/ceph#' /etc/yum.repos.d/ceph.repoyum install -y ceph-mon ceph-radosgw ceph-mds ceph-mgr ceph-osd ceph-common ceph

新增網路介面卡



4.生成初始配置
#在管理節點執行下述命令,告訴 ceph-deploy 哪些是 mon 監控節點
cd /etc/cephceph-deploy new –public-network 192.168.10.0/24 –cluster-network 192.168.100.0/24 node01 node02 node03

#命令執行成功後會在 /etc/ceph 下生成配置檔案
ls /etc/cephceph.conf #ceph的配置檔案ceph-deploy-ceph.log #monitor的日誌ceph.mon.keyring #monitor的金鑰環檔案

5.在管理節點初始化 mon 節點
cd /etc/cephceph-deploy mon create node01 node02 node03 #建立 mon 節點,由於 monitor 使用 Paxos 演算法,其高可用叢集節點數量要求為大於等於 3 的奇數臺
ceph-deploy --overwrite-conf mon create-initial #配置初始化 mon 節點,並向所有節點同步配置 --overwrite-conf 引數用於表示強制覆蓋配置檔案
ceph-deploy gatherkeys node01 #可選操作,向 node01 節點收集所有金鑰


#命令執行成功後會在 /etc/ceph 下生成配置檔案
ls /etc/cephceph.bootstrap-mds.keyring #引導啟動 mds 的金鑰檔案ceph.bootstrap-mgr.keyring #引導啟動 mgr 的金鑰檔案ceph.bootstrap-osd.keyring #引導啟動 osd 的金鑰檔案ceph.bootstrap-rgw.keyring #引導啟動 rgw 的金鑰檔案ceph.client.admin.keyring #ceph客戶端和管理端通訊的認證金鑰,擁有ceph叢集的所有許可權ceph.confceph-deploy-ceph.logceph.mon.keyring

id node03 --setuser ceph --setgroupcephroot 3578 0.0 0.0 112824 988 pts/1 R+ 21:24 0:00 grep --color=auto ceph 在 mon 節點上檢視自動開啟的 mon 程序ps aux | grep cephroot 1823 0.0 0.2 189264 9216 ? Ss 19:46 0:00 /usr/bin/python2.7 /usr/bin/ceph-crashceph 3228 0.0 0.8 501244 33420 ? Ssl 21:08 0:00 /usr/bin/ceph-mon -f --cluster ceph --

#在管理節點檢視 Ceph 叢集狀態
cd /etc/cephceph -s
cluster: id: 7e9848bb-909c-43fa-b36c-5805ffbbeb39 health: HEALTH_WARN mons are allowing insecure global_id reclaim services: mon: 3 daemons, quorum node01,node02,node03 mgr: no daemons active osd: 0 osds: 0 up, 0 in data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 0 B used, 0 B / 0 B avail pgs:

#檢視 mon 叢集選舉的情況ceph quorum_status –format json-pretty | grep leader"quorum_leader_name": "node01",

注意:這條命令只能在admin執行,其他節點執行會報錯,如下,因為ceph目錄裡沒有配置檔案

#擴容 mon 節點ceph-deploy mon add <節點名稱>
6.部署能夠管理 Ceph 叢集的節點(可選)
#可實現在各個節點執行 ceph 命令管理叢集
cd /etc/cephceph-deploy –overwrite-conf config push node01 node02 node03 #向所有 mon 節點同步配置,確保所有 mon 節點上的 ceph.conf 內容必須一致

ceph-deploy admin node01 node02 node03 #本質就是把 ceph.client.admin.keyring 叢集認證檔案複製到各個節點

#在 mon 節點上檢視
ls /etc/cephceph.client.admin.keyring ceph.conf rbdmap tmpr8tzyccd /etc/cephceph -s

7.部署 osd 儲存節點
#主機新增完硬碟後不要分割槽,直接使用
lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 60G 0 disk ├─sda1 8:1 0 500M 0 part /boot├─sda2 8:2 0 4G 0 part [SWAP]└─sda3 8:3 0 55.5G 0 part /sdb 8:16 0 20G 0 disk sdc 8:32 0 20G 0 disk sdd 8:48 0 20G 0 disk

使用命令重新整理硬碟
echo "- – -" > /sys/class/scsi_host/host0/scanecho "- – -" > /sys/class/scsi_host/host1/scanecho "- – -" > /sys/class/scsi_host/host2/scan


cd /etc/cephceph-deploy disk zap node01 /dev/sdbceph-deploy disk zap node02 /dev/sdbceph-deploy disk zap node03 /dev/sdb 如果是利舊的硬碟,則需要先擦淨(刪除分割槽表)磁碟(可選,無資料的新硬碟可不做)
新增 osd 節點ceph-deploy --overwrite-conf osd create node01 --data /dev/sdbceph-deploy --overwrite-conf osd create node02 --data /dev/sdbceph-deploy --overwrite-conf osd create node03 --data /dev/sdb

#檢視 ceph 叢集狀態
ceph -s
cluster: id: 7e9848bb-909c-43fa-b36c-5805ffbbeb39 health: HEALTH_WARN no avtive mgr services: mon: 3 daemons, quorum node01,node02,node03 (age 119m) mgr: no daemons active osd: 3 osds: 3 up (since 35s), 3 in (since 35s) data: pools: 0 pools, 0 pgs objects: 0 objects, 0 B usage: 3.0 GiB used, 57 GiB / 60 GiB avail pgs:

ceph osd statceph osd treerados dfssh root@node01 systemctl status ceph-osd@0ssh root@node02 systemctl status ceph-osd@1ssh root@node03 systemctl status ceph-osd@2

ceph osd status #檢視 osd 狀態,需部署 mgr 後才能執行
+----+--------+-------+-------+--------+---------+--------+---------+-----------+| id | host | used | avail | wr ops | wr data | rd ops | rd data | state |+----+--------+-------+-------+--------+---------+--------+---------+-----------+| 0 | node01 | 1025M | 18.9G | 0 | 0 | 0 | 0 | exists,up || 1 | node02 | 1025M | 18.9G | 0 | 0 | 0 | 0 | exists,up || 2 | node03 | 1025M | 18.9G | 0 | 0 | 0 | 0 | exists,up |+----+--------+-------+-------+--------+---------+--------+---------+-----------+

ceph osd df #檢視 osd 容量,需部署 mgr 後才能執行ID CLASS WEIGHT REWEIGHT SIZE RAW USE DATA OMAP META AVAIL %USE VAR PGS STATUS 0 hdd 0.019491.0000020 GiB 1.0 GiB 1.8 MiB 0 B 1 GiB 19 GiB 5.011.000 up 1 hdd 0.019491.0000020 GiB 1.0 GiB 1.8 MiB 0 B 1 GiB 19 GiB 5.011.000 up 2 hdd 0.019491.0000020 GiB 1.0 GiB 1.8 MiB 0 B 1 GiB 19 GiB 5.011.000 up TOTAL 60 GiB 3.0 GiB 5.2 MiB 0 B 3 GiB 57 GiB 5.01 MIN/MAX VAR: 1.00/1.00 STDDEV: 0

#擴容 osd 節點cd /etc/cephceph-deploy --overwrite-conf osd create node01 --data /dev/sdcceph-deploy --overwrite-conf osd create node02 --data /dev/sdcceph-deploy --overwrite-conf osd create node03 --data /dev/sdcceph-deploy --overwrite-conf osd create node01 --data /dev/sddceph-deploy --overwrite-conf osd create node02 --data /dev/sddceph-deploy --overwrite-conf osd create node03 --data /dev/sdd
新增 OSD 中會涉及到 PG 的遷移,由於此時叢集並沒有資料,因此 health 的狀態很快就變成 OK,如果在生產環境中新增節點則會涉及到大量的資料的遷移。
8.部署 mgr 節點
#ceph-mgr守護程序以Active/Standby模式執行,可確保在Active節點或其ceph-mgr守護程序故障時,其中的一個Standby例項可以在不中斷服務的情況下接管其任務。根據官方的架構原則,mgr至少要有兩個節點來進行工作。
cd /etc/cephceph-deploy mgr create node01 node02

ceph -s cluster: id: 7e9848bb-909c-43fa-b36c-5805ffbbeb39 health: HEALTH_WARN mons are allowing insecure global_id reclaim services: mon: 3 daemons, quorum node01,node02,node03 mgr: node01(active, since 10s), standbys: node02 osd: 0 osds: 0 up, 0 in

#解決 HEALTH_WARN 問題:mons are allowing insecure global_id reclaim問題:停用不安全模式:ceph config set mon auth_allow_insecure_global_id_reclaim false#擴容 mgr 節點ceph-deploy mgr create <節點名稱>
9.開啟監控模組
#在 ceph-mgr Active節點執行命令開啟ceph -s | grep mgr

yum install -y ceph-mgr-dashboard

cd /etc/cephceph mgr module ls | grep dashboard

#開啟 dashboard 模組
ceph mgr module enable dashboard --force
#停用 dashboard 的 ssl 功能
ceph config set mgr mgr/dashboard/ssl false
#配置 dashboard 監聽的地址和埠
ceph config set mgr mgr/dashboard/server_addr 0.0.0.0ceph config set mgr mgr/dashboard/server_port 8000
#重啟 dashboardceph mgr module disable dashboardceph mgr module enable dashboard --force
#確認訪問 dashboard 的 urlceph mgr services

#設定 dashboard 賬戶以及密碼echo "12345678" > dashboard_passwd.txtceph dashboard set-login-credentials admin -i dashboard_passwd.txt 或ceph dashboard ac-user-create admin administrator -i dashboard_passwd.txt

瀏覽器訪問:http://192.168.10.121:8000 ,賬號密碼為 admin/12345678

連結:https://blog.csdn.net/weixin_68840588/article/details/140289540?ops_request_misc=&request_id=&biz_id=102&utm_term=Ceph&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-2-140289540.142^v102^pc_search_result_base1&spm=1018.2226.3001.4187
官方站點:www.linuxprobe.com
Linux命令大全:www.linuxcool.com

劉遄老師QQ:5604215
Linux技術交流群:2636170
(新群,火熱加群中……)
想要學習Linux系統的讀者可以點選"閱讀原文"按鈕來了解書籍《Linux就該這麼學》,同時也非常適合專業的運維人員閱讀,成為輔助您工作的高價值工具書!