環境准備
1.三台服務器
-
cephnode01 192.168.254.83
-
cephnode02 192.168.254.84
-
cephnode03 192.168.254.85
2.基本環境配置
- 設置主機名
#192.168.254.83
hostnamectl set-hostname cephnode01
#192.168.254.84
hostnamectl set-hostname cephnode02
#192.168.254.85
hostnamectl set-hostname cephnode03
-
添加hosts綁定
在每個服務器上添加host綁定,確保可以通過域名進行訪問
192.168.254.83 cephnode01
192.168.254.84 cephnode02
192.168.254.85 cephnode03
- 關閉防火牆
systemctl stop firewalld.service
systemctl disable firewalld.service
- 禁用selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
setenforce 0
- 時間更新同步
yum install ntpdate -y
ntpdate asia.pool.ntp.org
- 做免密鑰認證
在管理節點上生成密鑰,並復制到其他節點
安裝ceph
- 安裝ceph管理工具ceph-deploy
yum install -y ceph-deploy
- 創建工作目錄
mkdir /ceph ; cd /ceph
- 安裝ceph客戶端
在每台主機上安裝ceph
yum install -y ceph
或者 在管理節點上之行
ceph-deploy install cephnode01 cephnode02 cephnode03
- 在管理主機上操作
啟動一個新的ceph集群,並設置初始監控節點
ceph-deploy new cephnode01 cephnode02 cephnode03 建議是奇數
激活監控節點
ceph-deploy mon create-initial
磁盤操作
ceph-deploy disk zap cephnode01:/dev/sdb1 cephnode02:/dev/sdb1 cephnode03:/dev/sdb1 #擦出盤所有數據
ceph-deploy osd prepare cephnode01:/dev/sdb1 cephnode02:/dev/sdb1 cephnode03:/dev/sdb1 #格式化盤
ceph-deploy osd activate cephnode01:/dev/sdb1 cephnode02:/dev/sdb1 cephnode03:/dev/sdb1 #激活盤
也可以使用create完成,但是有bug
ceph-deploy osd create node4:sdb node2:sdb node4:sdc node2:sdc node3:sdb node3:sdc
確認集群狀態,顯示OK則正常
ceph -s
- 創建相關的池
ceph osd pool create image 64
ceph建好后默認有個rbd池,可以考慮刪除
ceph osd pool delete rbd rbd --yes-i-really-really-mean-it
創建一個鏡像,-p參數指定池的名稱,-size單位為M
rbd create test --size 1024 -p image
如果安裝中途有什么問題,可以推到重來
ceph-deploy purge 節點1 節點2 ....
ceph-deploy purgedata 節點1 節點2 ....
ceph-deploy forgetkeys
其他命令
rados lspools 查看池子
ceph -s 或 ceph status 查看集群狀態
ceph -w 觀察集群健康狀態
ceph quorum_status --format json-pretty 檢查ceph monitor仲裁狀態
ceph df 檢查集群使用情況
ceph mon stat 檢查monitor狀態
ceph osd stat 檢查osd狀態
ceph pg stat 檢查pg配置組狀態
ceph pg dump 列出PG
ceph osd lspools 列出存儲池
ceph osd tree 檢查osd的crush map
ceph auth list 列出集群的認證密鑰
ceph 獲取每個osd上pg的數量
ceph pg dump | awk '
/^pg_stat/ { col=1; while($col!="up") {col++}; col++ }
/^[0-9a-f]+\.[0-9a-f]+/ { match($0,/^[0-9a-f]+/); pool=substr($0, RSTART, RLENGTH); poollist[pool]=0;
up=$col; i=0; RSTART=0; RLENGTH=0; delete osds; while(match(up,/[0-9]+/)>0) { osds[++i]=substr(up,RSTART,RLENGTH); up = substr(up, RSTART+RLENGTH) }
for(i in osds) {array[osds[i],pool]++; osdlist[osds[i]];}
}
END {
printf("\n");
printf("pool :\t"); for (i in poollist) printf("%s\t",i); printf("| SUM \n");
for (i in poollist) printf("--------"); printf("----------------\n");
for (i in osdlist) { printf("osd.%i\t", i); sum=0;
for (j in poollist) { printf("%i\t", array[i,j]); sum+=array[i,j]; poollist[j]+=array[i,j] }; printf("| %i\n",sum) }
for (i in poollist) printf("--------"); printf("----------------\n");
printf("SUM :\t"); for (i in poollist) printf("%s\t",poollist[i]); printf("|\n");
}'
啟動osd服務:
/usr/bin/systemctl start ceph-osd@0