最近部署了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分区的挂载。

1、准备磁盘
  1. # sgdisk -Z -o -g /dev/sde
  2. GPT data structures destroyed! You may now partition the disk using fdisk or
  3. other utilities.
  4. The operation has completed successfully.
2、对磁盘进行分区
  1. # sgdisk -n 2:0:+5120M -c 2:"ceph journal" -t 2:45b0969e-9b03-4f30-b4c6-b4b80ceff106 /dev/sde
  2. The operation has completed successfully.
  3. # sgdisk -n 1:0:0 -c 1:"ceph data" -t 1:4fbd7e29-9d25-41b8-afd0-062c0ceff05d /dev/sde
  4. The operation has completed successfully.

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

TYPE TYPE CODE
Journal 45b0969e-9b03-4f30-b4c6-b4b80ceff106
osd 4fbd7e29-9d25-41b8-afd0-062c0ceff05d

3、格式化osd分区

  1. # mkfs.xfs -f -i size=2048 /dev/sde1
4、创建osd
  1. # ceph osd create
  2. 11
5、创建osd数据目录
  1. # mkdir /var/lib/ceph/osd/ceph-11
6、挂载分区到osd的数据目录
  1. # mount /dev/sde1 /var/lib/ceph/osd/ceph-11/
7、初始化osd数据目录
  1. # ceph-osd -i 11 --mkfs --mkkey
8、指定journal分区
  1. 删除自动生成的journal文件
  2. # rm -rf /var/lib/ceph/osd/ceph-11/journal
  3. 查看要用作journal分区的sde2对应的uuid
  4. # ll /dev/disk/by-partuuid/ | grep sde2
  5. lrwxrwxrwx 1 root root 10 Aug 31 11:58 adc17c4e-4aa8-44dd-8351-f9a1f8895455 -> ../../sde2
  6. sde2uuid创建软链为journal
  7. # ln -s /dev/disk/by-partuuid/adc17c4e-4aa8-44dd-8351-f9a1f8895455 /var/lib/ceph/osd/ceph-11/journal
  8. osd数据目录下写入journal分区的uuid
  9. # echo adc17c4e-4aa8-44dd-8351-f9a1f8895455 > /var/lib/ceph/osd/ceph-11/journal_uuid
  10. 创建journal
  11. # ceph-osd -i 11 --mkjournal
9、注册osd的认证秘钥
  1. # 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
  1. # ceph osd crush add osd.11 0.01459 host=node3
11、修改数据目录权限
  1. # chown -R ceph:ceph /var/lib/ceph/osd/ceph-11
12、激活osd
  1. # ceph-disk activate --mark-init systemd --mount /dev/sde1