1 将osd从crush中删除,并删除对应的osd,和auth,host
ceph osd crush rm osd.X
ceph osd rm X
ceph auth del osd.X
2、将主机从集群中删除
ceph osd crush rm 主机名
3、安装ceph包
4、新建OSD,挂载数据盘到临时目录
将数据盘挂载到/var/lib/ceph/osd/tmp/mnt目录下,目录不存在就新建一个
mkdir /var/lib/ceph/tmp/mnt
mount /dev/sdb1 /var/lib/ceph/tmp/mnt
读取/var/lib/ceph/tmp/mnt目录下的fsid,whoami文件,即该磁盘对应的osd的uuid和osd-num
cat fsid whoami
f187533d-d3cd-4e40-8416-a93c9080876c
5、加入节点,读取到fsid,和osd-num后,可以利用这些信息重建osd,需要读取/etc/ceph.conf文件,保证这个文件存在并且和集群中的该文件保持一致
ceph osd create f187533d-d3cd-4e40-8416-a93c9080876c 8
如果出现如图所示的错误提示,说明没有找到keyring文件,这是集群之间的认证文件
2017-10-16 16:47:15.681089 7f84f1a80700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin: (2) No such file or directory
2017-10-16 16:47:15.681315 7f84f1a80700 -1 monclient(hunting): ERROR: missing keyring, cannot use cephx for authentication
2017-10-16 16:47:15.681404 7f84f1a80700 0 librados: client.admin initialization error (2) No such file or directory
Error connecting to cluster: ObjectNotFound
可以从集群的其他节点(主节点的/etc/ceph目录下)上将该文件复制一份过来,放到/etc/ceph目录下
scp ceph.client.admin.keyring osd2:/etc/ceph
再次创建osd
ceph osd create f187533d-d3cd-4e40-8416-a93c9080876c 8
返回8说明创建成功
新建osd挂载点
mkdir /var/lib/ceph/osd/ceph-8
卸载临时挂载目录
umount /var/lib/ceph/tmp/mnt
挂载数据盘到osd目录
mount /dev/sdb1 /var/lib/ceph/osd/ceph-8
注册此 OSD 的密钥
ceph auth add osd.8 osd 'allow *' mon 'allow rwx' -i /var/lib/ceph/osd/ceph-8/keyring
added key for osd.8
6、主机加入到机架中,
ceph osd crush add-bucket 节点名 host;
ceph osd crush move 节点名 rack=rack1(将创建的host移到rack1机架下面)
7、将OSD加入集群(需要加认证)
将新的节点加入crushmap
ceph osd crush add-bucket osd2 host
将该接点放到default根下
ceph osd crush move osd2 root=default
osd加入crushmap
ceph osd crush add osd.8 0.00980 host=osd2
这里给osd.8 的权重是0.00980,该值和集群中其他osd保持已知,权重不一致可能会导致pg的状态一直处于unclean
现在osd已经在集群中了,加入集群的osd就可以接收数据了
现在osd.8还处于down状态,因为osd.8的进程还没有启动
启动进程
systemctl start ceph-osd@8
备注:bluestore启动失败,可能需要修改/dev下分区设备的用户名和所属组,例如:
chown -R ceph.ceph /dev/sdc1