环境准备
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