Ceph-disk手动添加OSD

Ceph-disk手动添加OSD

最近部署了L版的ceph,在进行扩容时,发现手动使用ceph-disk命令出现了问题,根据ceph官网说明,L版要用ceph-volume,然而目前生产环境并未使用这种方式来进行配置,但是L版的使用ceph-disk prepare时创建出来的osd和journal分区效果并不会像J版那样根据配置文件里面的配置来进行创建。而是在创建过程中只使用sgdisk创建了一个100M的分区,而且自动把这个分区挂载为osd,并未有创建journal分区。不知道具体是什么原因导致的。

 

尝试了多种方式,并在网上搜了一下ceph-disk prepare的执行流程。最终通过下面的方式成功完成了osd创建,而且创建后的osd和原本使用ceph-ansible推出的集群状态保持了一致。而且这种方式创建出来的osd不再像之前的文档那样,需要添加fstab进行osd分区的挂载,而是通过systemd自动管理挂载。

 

1、准备磁盘

[root@node3 ~]# sgdisk -Z -o -g /dev/sde
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities.
The operation has completed successfully.

2、对磁盘进行分区

[root@node3 ~]# sgdisk -n 2:0:+5120M -c 2:"ceph journal" -t 2:45b0969e-9b03-4f30-b4c6-b4b80ceff106 /dev/sde
The operation has completed successfully.
[root@node3 ~]# sgdisk -n 1:0:0 -c 1:"ceph data" -t 1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d /dev/sde
The operation has completed successfully.

其中-t指定的是分区类型,在ceph中两种类型分区的type code:

                        TYPE

TYPE CODE

Journal

45b0969e-9b03-4f30-b4c6-b4b80ceff106

osd   

4fbd7e29-9d25-41b8-afd0-062c0ceff05d

Ceph通过uuid来区分对应的分区是osd还是journal,然后再决定数据存放在哪里。

3、格式化osd分区

[root@node3 ~]# mkfs.xfs -f -i size=2048 /dev/sde1

4、创建osd

[root@node3 ~]# ceph osd create
11

5、创建osd数据目录

 
   
[root@node3 ~]# mkdir /var/lib/ceph/osd/ceph-11

6、挂载分区到osd的数据目录

[root@node3 ~]# mount /dev/sde1 /var/lib/ceph/osd/ceph-11/

7、初始化osd数据目录

[root@node3 ~]# ceph-osd -i 11 --mkfs --mkkey

8、指定journal分区

删除自动生成的journal文件
[root@node3 ~]# rm -rf /var/lib/ceph/osd/ceph-11/journal 
查看要用作journal分区的sde2对应的uuid
[root@node3 ~]# ll /dev/disk/by-partuuid/ | grep sde2
lrwxrwxrwx 1 root root 10 Aug 31 11:58 adc17c4e-4aa8-44dd-8351-f9a1f8895455 -> ../../sde2
把sde2的uuid创建软链为journal
[root@node3 ~]# ln -s /dev/disk/by-partuuid/adc17c4e-4aa8-44dd-8351-f9a1f8895455 /var/lib/ceph/osd/ceph-11/journal
在osd数据目录下写入journal分区的uuid
[root@node3 ~]# echo adc17c4e-4aa8-44dd-8351-f9a1f8895455 > /var/lib/ceph/osd/ceph-11/journal_uuid
创建journal
[root@node3 ~]# ceph-osd -i 11 --mkjournal

9、注册osd的认证秘钥

[root@node3 ~]# ceph auth add osd.11 mon 'allow profile osd' mgr 'allow profile osd' osd 'allow *' -i /var/lib/ceph/osd/ceph-11/keyring

10、把osd添加到crush map

[root@node3 ~]# ceph osd crush add osd.11 0.01459 host=node3
这里的权重建议跟原本的osd权重保持一致,可以通过ceph osd tree查看之前添加的osd的权重值

11、修改数据目录权限

 
   
[root@node3 ~]# chown -R ceph:ceph /var/lib/ceph/osd/ceph-11

12、激活osd

 
   
[root@node3 ~]# ceph-disk activate --mark-init systemd --mount /dev/sde1

激活完成后osd会自动启动,此时可以使用ceph osd tree查看osd的状态

 

 

你可能感兴趣的:(运维)