1、Ceph簡單介紹
1)OSDs: Ceph的OSD守護進程(OSD)存儲數據,處理數據複製,恢復,回填,從新調整,並經過檢查其它Ceph OSD守護程序做爲一個心跳 向Ceph的監視器報告一些檢測信息。Ceph的存儲集羣須要至少2個OSD守護進程來保持一個 active + clean狀態.(Ceph默認製做2個備份,但能夠調整它)html
2)Monitors:Ceph的監控保持集羣狀態映射,包括OSD(守護進程)映射,分組(PG)映射,和CRUSH映射。 Ceph 保持一個在Ceph監視器, Ceph OSD 守護進程和 PG的每一個狀態改變的歷史(稱之爲「epoch」)。node
3)MDS: MDS是Ceph的元數據服務器,表明存儲元數據的Ceph文件系統(即Ceph的塊設備和Ceph的對象存儲不使用MDS)。Ceph的元數據服務器使用POSIX文件系統,用戶能夠執行基本命令如 ls, find,等,而且不須要在Ceph的存儲集羣上形成巨大的負載。python
Ceph把客戶端的數據以對象的形式存儲到了存儲池裏。利用CRUSH算法,Ceph能夠計算出安置組所包含的對象,並能進一步計算出Ceph OSD集合所存儲的安置組。CRUSH算法可以使Ceph存儲集羣擁有動態改變大小、再平衡和數據恢復的能力。git
2、Ceph存儲特色 算法
Ceph也是分佈式存儲系統,它的特色是:json
不管你是想使用Ceph對象存儲或是以Ceph塊設備服務至雲平臺 ,部署Ceph文件系統或者爲了其餘目的而使用Ceph,全部的 Ceph存儲集羣部署都是從設置每一個Ceph節點,配置網絡和Ceph存儲集羣開始的。一個Ceph存儲集羣要求至少有一個Ceph監視器和兩個Ceph OSD守護進程。當運行Ceph文件系統客戶端時,必需要有Ceph元數據服務器。bootstrap
Ceph提供了3種使用場景vim
3、Ceph集羣部署步驟(使用ceph-deploy部署ceph分佈式存儲集)七牛雲存儲
1)硬件選擇:http://www.cnblogs.com/kevingrace/p/8430161.htmlbash
2)部署流程
1)系統: [root@kevin-221 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) 2)內核: [root@kevin-221 ~]# uname -a Linux kevin-221 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 3)ceph版本: [root@kevin-221 ~]# ceph -v ceph version 0.94.10 (b1e0532418e4631af01acbc0cedd426f1905f4af) 4)安裝部署主機(ceph-deploy) kevin-221 5)主機列表清單: [root@kevin-221 ~]# cat /workspace/ceph/cephlist.txt kevin-221 kevin-222 kevin-232 kevin-224 kevin-225 kevin-226 kevin-227 kevin-228 kevin-229 6)集羣服務部署分配 kevin-221 ceph-deploy install kevin-222 osd0 osd1 mds kevin-232 osd2 osd3 kevin-224 osd4 osd5 kevin-225 osd6 osd7 mon kevin-226 osd8 osd9 mds kevin-227 osd10 osd11 mon kevin-228 osd12 osd13 mds kevin-229 osd14 osd15 mon 7)集羣安裝前準備工做 -> 規範系統主機名; -> 添加hosts文件實現集羣主機名與主機名之間相互可以解析(host 文件添加主機名映射關係) -> 每臺 ssh-copy-id 完成這些服務器之間免ssh密碼登陸; -> 關閉防火牆或者開放 6789/6800~6900端口、關閉SELINUX; -> 配置ntp服務,開啓時間服務,保證集羣服務器時間統一; 8) 如下操做推薦在ceph-deploy節點操做: 添加ceph集羣安裝yum源文件; 使用路徑/etc/yum.repos.d/ceph.repo [root@kevin-221 ~]# vim /etc/yum.repos.d/ceph.repo [ceph] name=Ceph packages for $basearch baseurl=http://ceph.com/rpm/rhel6/$basearch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=http://ceph.com/rpm/rhel6/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc [ceph-source] name=Ceph source packages baseurl=http://ceph.com/rpm/rhel6/SRPMS enabled=0 gpgcheck=1 type=rpm-md gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc 傳輸yum源文件到其它節點服務器 --delete 刪除那些DST中SRC沒有的文件 [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;rsync -avp --delete /etc/yum.repos.d $ip:/etc/;done 建立集羣配置目錄 [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip mkdir -p /etc/ceph ;done 9) 集羣安裝配置 提早填坑,根據以往配置部署經驗,安裝配置部署過程當中會有不斷報錯,部分是由於個別依賴軟件包沒有安裝致使,提早安裝避免沒必要要的錯誤; [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip yum install *argparse* redhat-lsb xfs* -y;done ceph-deploy 節點安裝部署(kevin-221 安裝部署節點) [root@kevin-221 ceph]# cd /etc/ceph/ 升級系統的軟件包,安裝ceph-deploy工具 [root@kevin-221 ceph]# yum update -y && yum install ceph-deploy -y ----------------如下操做在ceph-deploy節點操做---------------- 若是之前安裝過ceph,在此機器上運行 [root@kevin-221 ceph]# sudo stop ceph-all //中止全部ceph進程 [root@kevin-221 ceph]# ceph-deploy uninstall [{ceph-node}] //卸載全部ceph程序 [root@kevin-221 ceph]# ceph-deploy purge [[ceph-node} [{ceph-node}] //刪除ceph相關的包 [root@kevin-221 ceph]# ceph-deploy purgedata {ceph-node} [{ceph-node}] //刪除ceph相關的包 [root@kevin-221 ceph]# ceph-deploy forgetkeys //刪除key 另外清理一下配置文件,重建一下安裝配置目錄 [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip rm -rf /etc/ceph/* ;done [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip mkdir -p /etc/ceph ;done ------------------------------------------------------------- 9.1) 建立mon節點 在安裝部署節使用ceph-deploy建立,生成MON信息: [root@kevin-221 ceph]# cd /etc/ceph/ [root@kevin-221 ceph]# ceph-deploy new monnode [root@kevin-221 ceph]# ceph-deploy new kevin-225 kevin-227 kevin-229 9.2) 安裝部署報錯: [root@kevin-221 ceph]# ceph-deploy new kevin-225.ptfuture.com kevin-227.ptfuture.com kevin-229.ptfuture.com Traceback (most recent call last): File "/usr/bin/ceph-deploy", line 18, in <module> from ceph_deploy.cli import main ImportError: No module named ceph_deploy.cli 解決辦法: 系統python問題,注意檢查系統使用python版本2.6; 9.3) 再次執行 : [root@kevin-221 ceph]# cd /etc/ceph/ [root@kevin-221 ceph]# ceph-deploy new kevin-225 kevin-227 kevin-229 執行成功後該目錄下會增長三個文件 [root@kevin-221 ceph]# ll total 12 -rw-r--r-- 1 root root 276 Feb 8 22:01 ceph.conf -rw-r--r-- 1 root root 3142 Feb 8 22:01 ceph.log -rw------- 1 root root 73 Feb 8 22:01 ceph.mon.keyring 9.4) 安裝部署集羣軟件包: 在全部節點安裝ceph軟件包 ceph-deploy install{ceph-node}[{ceph-node}...] (注:若是已經用yum在每臺機器上安裝了ceph,這步可省略) [root@kevin-221 ceph]# ceph-deploy install dn-5-22{1..2} [root@kevin-221 ceph]# ceph-deploy install kevin-232 [root@kevin-221 ceph]# ceph-deploy install dn-5-22{4..9} 5) 添加初始monitor節點和收集祕鑰 ceph-deploy mon create-initial {node} [root@kevin-221 ceph]# ceph-deploy --overwrite-conf mon create-initial kevin-225 kevin-227 kevin-229 若是提示文件存在,可是不匹配,能夠先刪除該ceph.conf,而後執行此操做。 9.6) 收集密鑰 [root@kevin-221 ceph]# ceph-deploy gatherkeys kevin-225 kevin-227 kevin-229 收集到密鑰,在本地目錄下可看到以下密鑰環文件: {cluster-name}.client.admin.keyring {cluster-name}.bootstrap-osd.keyring {cluster-name}.bootstrap-mds.keyring 9.7) 傳輸key 配置文件到其它節點服務器 [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;rsync -avp --delete /etc/ceph $ip:/etc/;done --delete 刪除那些DST中SRC沒有的文件 至此mon節點配置基本告一段落; 9.8) 驗證集羣mon節點安裝成功 [root@kevin-221 ceph]# ceph -s cluster c7ee9e13-af6f-475e-80ce-ecb4ba463540 health HEALTH_ERR 64 pgs stuck inactive 64 pgs stuck unclean no osds monmap e1: 3 mons at {kevin-225=172.17.5.225:6789/0,kevin-227=172.17.5.227:6789/0,kevin-229=172.17.5.229:6789/0} election epoch 8, quorum 0,1,2 kevin-225,kevin-227,kevin-229 osdmap e1: 0 osds: 0 up, 0 in pgmap v2: 64 pgs, 1 pools, 0 bytes data, 0 objects 0 kB used, 0 kB / 0 kB avail 64 creating 9.9) 登陸mon節點查看進程已啓動 [root@kevin-221 ceph]# ps -ef|grep ceph root 27966 1 0 15:57 ? 00:00:00 /usr/bin/ceph-mon -i kevin-227 --pid-file /var/run/ceph/mon.kevin-227.pid -c /etc/ceph/ceph.conf --cluster ceph root 28599 25753 0 15 10) 安裝集羣osd服務 10.1) 執行osd初始化命令 每臺有兩塊磁盤,分別爲 、/dev/sdk /dev/sdl [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo ----$ip-----------;ceph-deploy --overwrite-conf osd prepare $ip:/dev/sdk $ip:/dev/sdl;done 10.2) 安裝報錯: 報錯: [ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf [ceph_deploy.cli][INFO ] Invoked (1.5.25): /usr/bin/ceph-deploy osd prepare kevin-221:/dev/sdk [ceph_deploy.osd][DEBUG ] Preparing cluster ceph disks kevin-221:/dev/sdk: [kevin-221][DEBUG ] connected to host: kevin-221 [kevin-221][DEBUG ] detect platform information from remote host [kevin-221][DEBUG ] detect machine type [ceph_deploy.osd][INFO ] Distro info: CentOS 6.6 Final [ceph_deploy.osd][DEBUG ] Deploying osd to kevin-221 [kevin-221][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf [ceph_deploy.osd][ERROR ] RuntimeError: config file /etc/ceph/ceph.conf exists with different content; use --overwrite-conf to overwrite [ceph_deploy][ERROR ] GenericError: Failed to create 1 OSDs 解決辦法: 報錯信息說明在node上沒有mkfs.xfs文件,須要在node上安裝mkfs.xfs文件,批量安裝部署全部集羣服務器; [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip yum install xfs* -y;done 10.3) 再次執行osd初始化命令 [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo ----$ip-----------;ceph-deploy --overwrite-conf osd prepare $ip:/dev/sdk $ip:/dev/sdl;done 10.4) ceph.keyring 同步 在建立osd節點的時候可能會osd節點上缺乏/var/lib/ceph/bootstrap-osd/ceph.keyring文件,把監控節點上的文件拷貝到安裝節點上。 在node1節點上創建一個目錄:mkdir /var/lib/ceph/bootstrap-osd/。 登陸登陸mon節點,kevin-225: # ssh kevin-225 # scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@kevin-221:/var/lib/ceph/bootstrap-osd/ 統一解決,將安裝節點的ceph.keyring copy到其它安裝節點; [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo ----$ip-----------;rsync -avp --delete /var/lib/ceph/bootstrap-osd root@$ip:/var/lib/ceph/;done 驗證全部集羣服務器上的ceph.keyring 內容一致: [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo ----$ip-----------;ssh root@$ip cat /var/lib/ceph/bootstrap-osd/ceph.keyring ;done 10.5)再次執行,osd初始化命令能夠成功初始化新加入的osd節點 初始化數據盤 [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo ----$ip-----------;ceph-deploy --overwrite-conf osd prepare $ip:/dev/sdk $ip:/dev/sdl;done 10.6)執行激活osd設備:(官網步驟,我在安裝部署時,執行上一步的時候,osd自動激活了,不用執行激活操做) [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo ----$ip-----------;ceph-deploy --overwrite-conf osd activate $ip:/dev/sdk $ip:/dev/sdl;done 執行激活操做報錯以下: [ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf [ceph_deploy.cli][INFO ] Invoked (1.5.25): /usr/bin/ceph-deploy --overwrite-conf osd activate kevin-229:/dev/sdk kevin-229:/dev/sdl [ceph_deploy.osd][DEBUG ] Activating cluster ceph disks kevin-229:/dev/sdk: kevin-229:/dev/sdl: [kevin-229][DEBUG ] connected to host: kevin-229 [kevin-229][DEBUG ] detect platform information from remote host [kevin-229][DEBUG ] detect machine type [ceph_deploy.osd][INFO ] Distro info: CentOS 6.6 Final [ceph_deploy.osd][DEBUG ] activating host kevin-229 disk /dev/sdk [ceph_deploy.osd][DEBUG ] will use init type: sysvinit [kevin-229][INFO ] Running command: ceph-disk -v activate --mark-init sysvinit --mount /dev/sdk [kevin-229][WARNIN] INFO:ceph-disk:Running command: /sbin/blkid -p -s TYPE -ovalue -- /dev/sdk [kevin-229][WARNIN] ceph-disk: Cannot discover filesystem type: device /dev/sdk: Line is truncated: [kevin-229][ERROR ] RuntimeError: command returned non-zero exit status: 1 [ceph_deploy][ERROR ] RuntimeError: Failed to execute command: ceph-disk -v activate --mark-init sysvinit --mount /dev/sdk 解決辦法: 查看osd 狀態 [root@kevin-221 ceph]# ceph-disk activate-all === osd.1 === Starting Ceph osd.1 on kevin-221...already running === osd.0 === Starting Ceph osd.0 on kevin-221...already running lsblk看一下,若是sdk sdl是掛載在/var/lib/ceph/osd/ceph-0 ceph-1上,#沒有問題 [root@kevin-221 ceph]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sdj 8:144 0 1.8T 0 disk /data09 sdi 8:128 0 1.8T 0 disk /data08 sdk 8:160 0 1.8T 0 disk ├─sdk1 8:161 0 1.8T 0 part /var/lib/ceph/osd/ceph-0 #確認磁盤掛載 └─sdk2 8:162 0 5G 0 part sdl 8:176 0 1.8T 0 disk ├─sdl1 8:177 0 1.8T 0 part /var/lib/ceph/osd/ceph-1 #確認磁盤掛載 (執行上一步的時候,osd自動激活了,不用執行激活操做) 11.)安裝部署mds服務 11.1)添加元數據服務器 [root@kevin-221 ~]# cd /etc/ceph [root@kevin-221 ceph]# ceph-deploy --overwrite-conf mds create kevin-222 kevin-226 kevin-228 命令順利執行完成,無報錯爲oK 對於一個剛建立的MDS服務,雖然服務是運行的,可是它的狀態直到建立 pools 以及文件系統的時候纔會變爲Active. 11.2)狀態查看。尚未建立時候的狀態 [root@kevin-221 ceph]# ceph mds stat e1: 0/0/0 up [root@kevin-221 ceph]# ceph mds dump dumped mdsmap epoch 1 epoch 1 flags 0 created 0.000000 modified 2015-06-28 15:58:10.254107 ------------中間省略------------------ compat compat={},rocompat={},incompat={} max_mds 0 in up {} failed stopped data_pools metadata_pool 0 inline_data disabled 11.3)經過下面的操做建立Filesystem [root@kevin-221 ceph]# ceph osd pool create cephfs_data 10 [root@kevin-221 ceph]# ceph osd pool create cephfs_metadata 10 [root@kevin-221 ceph]# ceph fs new leadorfs cephfs_metadata cephfs_data 11.4)成功建立後,mds stat的狀態以下 [root@kevin-221 ceph]# ceph mds stat e6: 1/1/1 up {0=kevin-228=up:active}, 2 up:standby [root@kevin-221 ceph]# ceph mds dump dumped mdsmap epoch 6 epoch 6 ...........中間省略-........... max_file_size 1099511627776 last_failure 0 last_failure_osd_epoch 0 compat compat={},rocompat={},incompat={1=base v0.20,2=client writeable ranges,3=default file layouts on dirs,4=dir inode in separate object,5=mds uses versioned encoding,6=dirfrag is stored in omap,8=no anchor table} ..........中間省略-........... data_pools 5 metadata_pool 6 inline_data disabled 4198: 172.17.5.222:6808/11942 'kevin-222' mds.-1.0 up:standby seq 2703 4406: 172.17.5.226:6808/1634 'kevin-226' mds.-1.0 up:standby seq 160 4247: 172.17.5.228:6808/25735 'kevin-228' mds.0.1 up:active seq 2703 11.5) ceph集羣的狀態,pg的數量以及pool的數量都獲得了對應的增長 [root@kevin-221 ceph]# ceph -s cluster c7ee9e13-af6f-475e-80ce-ecb4ba463540 health HEALTH_OK monmap e1: 3 mons at {kevin-225=172.17.5.225:6789/0,kevin-227=172.17.5.227:6789/0,kevin-229=172.17.5.229:6789/0} election epoch 8, quorum 0,1,2 kevin-225,kevin-227,kevin-229 mdsmap e6: 1/1/1 up {0=kevin-228=up:active}, 2 up:standby osdmap e100: 16 osds: 16 up, 16 in pgmap v393: 784 pgs, 7 pools, 2178 bytes data, 24 objects 588 MB used, 29713 GB / 29713 GB avail 784 active+clean 12) ceph分佈式存儲集羣總驗證 12.1)驗證mds節點 [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip ps -ef|grep mds.dn;done -----kevin-222----- root 11944 1 0 22:42 ? 00:00:00 /usr/bin/ceph-mds -i kevin-222 --pid-file /var/run/ceph/mds.kevin-222.pid -c /etc/ceph/ceph.conf --cluster ceph -----kevin-226----- root 32348 1 0 22:42 ? 00:00:00 /usr/bin/ceph-mds -i kevin-226 --pid-file /var/run/ceph/mds.kevin-226.pid -c /etc/ceph/ceph.conf --cluster ceph -----kevin-228----- root 25737 1 0 22:42 ? 00:00:00 /usr/bin/ceph-mds -i kevin-228 --pid-file /var/run/ceph/mds.kevin-228.pid -c /etc/ceph/ceph.conf --cluster ceph-----kevin-229----- 12.2)驗證mon節點 [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip ps -ef|grep mon.dn;done -----kevin-225----- root 23288 1 0 Jun28 ? 00:00:45 /usr/bin/ceph-mon -i kevin-225 --pid-file /var/run/ceph/mon.kevin-225.pid -c /etc/ceph/ceph.conf --cluster ceph -----kevin-227----- root 27966 1 0 Jun28 ? 00:00:23 /usr/bin/ceph-mon -i kevin-227 --pid-file /var/run/ceph/mon.kevin-227.pid -c /etc/ceph/ceph.conf --cluster ceph -----kevin-229----- root 27966 1 0 Jun28 ? 00:00:23 /usr/bin/ceph-mon -i kevin-229 --pid-file /var/run/ceph/mon.kevin-229.pid -c /etc/ceph/ceph.conf --cluster ceph 12.3)驗證osd節點 [root@kevin-221 ceph]# for ip in $(cat /workspace/ceph/cephlist.txt);do echo -----$ip-----;ssh root@$ip ps -ef|grep osd.dn;done -----kevin-221----- root 20962 9646 0 21:48 pts/2 00:00:00 grep osd root 31595 1 0 15:12 ? 00:01:01 /usr/bin/ceph-osd -i 0 --pid-file /var/run/ceph/osd.0.pid -c /etc/ceph/ceph.conf --cluster ceph root 32417 1 0 15:12 ? 00:00:59 /usr/bin/ceph-osd -i 1 --pid-file /var/run/ceph/osd.1.pid -c /etc/ceph/ceph.conf --cluster ceph -----kevin-222----- root 29591 1 0 19:08 ? 00:00:55 /usr/bin/ceph-osd -i 2 --pid-file /var/run/ceph/osd.2.pid -c /etc/ceph/ceph.conf --cluster ceph root 30522 1 0 19:09 ? 00:00:58 /usr/bin/ceph-osd -i 3 --pid-file /var/run/ceph/osd.3.pid -c /etc/ceph/ceph.conf --cluster ceph -----kevin-232----- root 10461 1 0 19:10 ? 00:01:00 /usr/bin/ceph-osd -i 4 --pid-file /var/run/ceph/osd.4.pid -c /etc/ceph/ceph.conf --cluster ceph root 11285 1 0 19:10 ? 00:01:03 /usr/bin/ceph-osd -i 5 --pid-file /var/run/ceph/osd.5.pid -c /etc/ceph/ceph.conf --cluster ceph -----kevin-224----- 暫時停用 -----kevin-225----- root 11638 1 0 19:10 ? 00:01:09 /usr/bin/ceph-osd -i 6 --pid-file /var/run/ceph/osd.6.pid -c /etc/ceph/ceph.conf --cluster ceph root 12499 1 0 19:11 ? 00:01:05 /usr/bin/ceph-osd -i 7 --pid-file /var/run/ceph/osd.7.pid -c /etc/ceph/ceph.conf --cluster ceph -----kevin-226----- root 23279 1 0 19:11 ? 00:01:10 /usr/bin/ceph-osd -i 8 --pid-file /var/run/ceph/osd.8.pid -c /etc/ceph/ceph.conf --cluster ceph root 24182 1 0 19:11 ? 00:01:03 /usr/bin/ceph-osd -i 9 --pid-file /var/run/ceph/osd.9.pid -c /etc/ceph/ceph.conf --cluster ceph -----kevin-227----- root 29171 1 0 19:12 ? 00:01:00 /usr/bin/ceph-osd -i 10 --pid-file /var/run/ceph/osd.10.pid -c /etc/ceph/ceph.conf --cluster ceph root 30031 1 0 19:12 ? 00:01:02 /usr/bin/ceph-osd -i 11 --pid-file /var/run/ceph/osd.11.pid -c /etc/ceph/ceph.conf --cluster ceph -----kevin-228----- root 19083 1 0 19:12 ? 00:01:09 /usr/bin/ceph-osd -i 12 --pid-file /var/run/ceph/osd.12.pid -c /etc/ceph/ceph.conf --cluster ceph root 20151 1 0 19:13 ? 00:01:02 /usr/bin/ceph-osd -i 13 --pid-file /var/run/ceph/osd.13.pid -c /etc/ceph/ceph.conf --cluster ceph -----kevin-229----- root 7121 1 0 19:13 ? 00:01:02 /usr/bin/ceph-osd -i 14 --pid-file /var/run/ceph/osd.14.pid -c /etc/ceph/ceph.conf --cluster ceph root 7999 1 0 19:13 ? 00:00:56 /usr/bin/ceph-osd -i 15 --pid-file /var/run/ceph/osd.15.pid -c /etc/ceph/ceph.conf --cluster ceph 12.4)問題排查: 健康狀態檢查 [root@kevin-221 ceph]# ceph health 有告警信息以下: HEALTH_WARN too few PGs per OSD (12 < min 30) 解決辦法, 須要修改pg_num , pgp_num . 先要獲取pool name, 以下, 返回pool name : rbd. [root@kevin-221 ceph]# ceph osd pool stats pool rbd id 0 nothing is going on 先改 pg_num 再改 pgp_num ,須要注意, pg_num只能增長, 不能縮小. [root@kevin-221 ceph]# ceph osd pool set rbd pg_num 300 [root@kevin-221 ceph]# ceph osd pool set rbd pgp_num 300 再次驗證 ok [root@kevin-221 ceph]# ceph health HEALTH_OK 13)擴展集羣 13.1)增長一個OSD 在你的ceph-deloy節點上,準備OSD。 [root@kevin-221 ceph]# ceph-deploy osd prepare {ceph-node}:/path/to/directory [root@kevin-221 ceph]# ceph-deploy osd prepare ceph-node1:/tmp/osd2 最後,激活OSD。 [root@kevin-221 ceph]# ceph-deploy osd activate {ceph-node}:/path/to/directory [root@kevin-221 ceph]# ceph-deploy osd activate ceph-node1:/tmp/osd2 一旦你增長新的OSD,Ceph將會遷移已有的放置置到新的OSD上以達到集羣的從新平衡,你可經過ceph命令界面觀察這個過程。 你將會看到PG狀態由活躍且乾淨狀態變成活躍態,其中存在部分降級對象。當遷移完成後,將再次返回活躍且乾淨狀態。(可按Control+c組合鍵退出) [root@kevin-221 ceph]# ceph -w 13.2)增長一個mds服務器 爲了使用CephFS文件系統,你須要至少一臺元數據服務器。執行以下步驟以建立一臺元數據服務器。 [root@kevin-221 ceph]# ceph-deploy mds create {ceph-node} [root@kevin-221 ceph]# ceph-deploy mds create ceph-node1 注意:當前Ceph產品中僅支持運行一個元數據服務器。你可嘗試在一個集羣中運行多個元數據服務器,但對此尚無商業支持。 13.3)增長mon節點 一個Ceph存儲集羣至少須要一臺Ceph監視器。爲了保證高可用性,Ceph存儲集羣中一般會運行多個Ceph監視器,任意單臺Ceph監視器的宕機都不會影響整個Ceph存儲集羣正常工做。 因爲Ceph使用Paxos算法,這須要多個Ceph監視器組成Quoram(如1,2:3,3:4,3:5,4:6等)。 向你的集羣增長2臺Ceph監視器。 [root@kevin-221 ceph]# ceph-deploy mon create {ceph-node} [root@kevin-221 ceph]# ceph-deploy mon create ceph-node2 ceph-node3 當增長Ceph監視器後,Ceph將開始同步各監視器並造成Quoram。可經過以下方式檢查Quoram狀態: [root@kevin-221 ceph]# ceph quorum_status 或者 [root@kevin-221 ceph]# ceph quorum_status --format json-pretty [root@kevin-221 ceph]# ceph quorum_status --format json-pretty { "election_epoch": 8, "quorum": [ 0, 1, 2 ], "quorum_names": [ "kevin-225", "kevin-227", "kevin-229" ], "quorum_leader_name": "kevin-225", "monmap": { "epoch": 1, "fsid": "c7ee9e13-af6f-475e-80ce-ecb4ba463540", "modified": "0.000000", "created": "0.000000", "mons": [ { "rank": 0, "name": "kevin-225", "addr": "172.17.5.225:6789\/0" }, { "rank": 1, "name": "kevin-227", "addr": "172.17.5.227:6789\/0" }, { "rank": 2, "name": "kevin-229", "addr": "172.17.5.229:6789\/0" } ] } }