2.1 向ceph集群添加OSD
2.1.1 自动部署
1 磁盘准备
root@ceph0:~/my-cluster# ceph-deploy osd prepare ceph0:/dev/vdb1 ceph1:/dev/vdb1 ceph2:/dev/vdb1
2 设置权限
root@ceph0:~/my-cluster# chown ceph:ceph /dev/vdb1
root@ceph0:~/my-cluster# ssh ceph1 'chown ceph:ceph /dev/vdb1'
root@ceph0:~/my-cluster# ssh ceph2 'chown ceph:ceph /dev/vdb1'
3 启动OSD
root@ceph0:~/my-cluster# ceph-deploy osd activate ceph0:/dev/vdb1 ceph1:/dev/vdb1 ceph2:/dev/vdb1
运行ceph -s,可以看到3个osd节点已经加入。
root@ceph0:~/my-cluster# ceph -s
cluster 4d7e1b04-2a4c-45aa-b6fe-a98241db0c2f
health HEALTH_WARN
too few PGs per OSD (12 < min 30)
monmap e1: 3 mons at {ceph0=172.20.0.196:6789/0,ceph1=172.20.0.197:6789/0,ceph2=172.20.0.198:6789/0}
election epoch 4, quorum 0,1,2 ceph0,ceph1,ceph2
osdmap e80: 3 osds: 3 up, 3 in
flags sortbitwise
pgmap v181: 64 pgs, 1 pools, 0 bytes data, 0 objects
525 MB used, 2792 GB / 2792 GB avail
64 active+clean
2.1.2 手动部署
以手动部署 osd.0 为例,手动过程如下:
1、创建OSD目录,并把磁盘挂载到该目录
mkdir /var/lib/ceph/osd/ceph-0
mkfs -t xfs -d name=/dev/sda1 -f
mount -noatime /dev/sda1 /var/lib/ceph/osd/ceph-0/
2、初始化OSD数据目录
ceph-osd -i 0 --mkfs --mkkey
3、注册OSD的key权限
ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring
4、添加OSD节点到 crush map中
ceph create osd
ceph osd crush add osd.0 1.0 host=ceph01
5、启动OSD
start ceph-osd id=0
2.2 启动/停止/重启
1 启动
sudo start ceph-osd id={osd-num}
一旦你启动了 OSD ,其状态就由 down 变成 up。
2 停止
sudo stop ceph-osd id={osd-num}
停止 OSD 后,状态变为 down 。
3 重启
sudo restart ceph-osd id={osd-num}
2.3 暂停/开启OSD
1、暂停OSD,暂停后整个集群不再接收数据
ceph osd pause
2、开启后再次接收数据
ceph osd unpause
2.4 踢出/加入集群
把 OSD 踢出集群
删除 OSD 前,它通常是 up 且 in 的,要先把它踢出集群,以使 Ceph 启动重新均衡、把数据拷贝到其他 OSD 。
ceph osd out {osd-num}
同样的,把OSD加入集群
ceph osd in {osd-num}
2.5 删除OSD
此步骤依次把一个 OSD 移出集群 CRUSH 图、删除认证密钥、删除 OSD 图条目:
1、删除 CRUSH 图的对应 OSD 条目,它就不再接收数据了。
ceph osd crush remove {name} // ex: name = osd.0
2、删除 OSD 认证密钥:
ceph auth del osd.{osd-num}
3、ceph-{osd-num} 路径里的 ceph 值是 $cluster-$id ,如果集群名字不是 ceph ,这里要更改。
删除 OSD 。
ceph osd rm {osd-num}