添加OSD

OSD是Ceph集群数据管理服务。添加OSD的磁盘需满足以下所有条件。

前提条件

  1. 可选:修改大页类型。

    部署SPDK需要操作系统支持大页,若大页类型不为2M,按照下方步骤修改即可。

    1. 打开“/boot/efi/EFI/openEuler/grub.cfg”文件。
      vim /boot/efi/EFI/openEuler/grub.cfg
    2. “i”进入编辑模式,找到内核启动参数,补充“default_hugepagesz=2M hugepagesz=2M hugepages=1024”。
    3. “Esc”键退出编辑模式,输入:wq!,按“Enter”键保存退出文件

  2. 配置大页内存数量。

    1
    echo 20480 > /sys/devices/system/node/node0/hugepages/hugepages-2048kB/nr_hugepages
    

  3. NVMe SSD切换到用户态驱动。

    1
    cephadm shell -v /lib/modules:/lib/modules -e DRIVER_OVERRIDE=uio_pci_generic sh /var/lib/ceph/spdk_lib/scripts/setup.sh
    

  4. 23中的命令写入“/etc/rc.d/rc.local”持久化保存,开机自启动。

    1
    2
    vim /etc/rc.d/rc.local
    chmod +x /etc/rc.d/rc.local
    

  5. 查看系统可用磁盘设备。

    1
    cephadm shell sh /var/lib/ceph/spdk_lib/scripts/setup.sh status
    

  6. 关闭OSD内存自动调节。

    cephadm shell ceph config set osd osd_memory_target_autotune false

  7. 添加OSD(各节点仅支持启动自身的OSD)。

    • 方式1:仅指定bdfs号添加OSD。
      1
      2
      3
      4
      5
      # 创建OSD
      cephadm spdkosd --bstr 0000:82:00.0;0000:83:00.0;0000:84:00.0 init
      
      # 启动守护进程
      cephadm spdkosd deploy
      
    • 方式2:一键式使用配置文件添加OSD。

      通过.yaml配置文件,启动一个部署OSD的服务,通过此方式部署OSD服务有以下优势:

      • 可以指定设备。
      • 可以指定OSD的ID。
      1. 编写osd.yaml文件,在文件中添加如下内容,指定可用设备。
        1. 打开osd.yaml文件。
          1
          vi osd.yaml
          
        2. “i”进入编辑模式,添加如下内容。
          1
          2
          3
          4
          5
          6
          - osd_id: 0 # osd_id
            bdfs: "0000:82:00.0" 
          - osd_id: 1
            bdfs: "0000:83:00.0"
          - osd_id: 2
            bdfs: "0000:84:00.0"
          
          • osd_id:OSD服务ID,字段必须保持集群唯一性,不能与集群中已有的OSD服务ID重复。
          • bdfs字段选择的设备必须由uio驱动接管。参考5中的命令,查看NVMe设备的Driver驱动是否是uio_pci_generic。如果不是,则说明当前设备还未由uio驱动接管,需要执行3中的命令,切换驱动。
        3. “Esc”键退出编辑模式,输入:wq!,“Enter”键保存退出文件
      2. 启动OSD服务。
        1
        2
        3
        4
        5
        6
        7
        8
        9
        cephadm spdkosd --b osd.yaml create
        
        # 其他启动方式说明:
        cephadm spdkosd create  # 将自动选择可用的设备和osd编号,使用默认配置创建启动OSD服务
        cephadm spdkosd --b osd.yaml --c osd.conf create # 指定设备和配置创建启动OSD服务
        
        # 其他启动参数说明
        -vv :用于podman 启动守护进程时,配置是否保存更多详细的OSD守护进程的日志到文件中,默认False。
        参考示例,开启保存更多日志:cephadm spdkosd -vv create
        
        • 内部使用了“/mnt/osd_xx”目录来挂载大页使能SPDK,需要确保物理机上的“/mnt”目录具有写入权限,注意检查“/mnt”目录是否挂载了镜像变成只读权限。
        • 该命令需要在ceph1~ceph3节点依次执行启动。

  8. 调整ceph 1、ceph2、ceph3节点OSD内存上限为20GB。

    cephadm shell ceph config set osd/host:ceph1 osd_memory_target 20G
    cephadm shell ceph config set osd/host:ceph2 osd_memory_target 20G
    cephadm shell ceph config set osd/host:ceph3 osd_memory_target 20G

  9. 查看集群状态。

    1
    2
    cephadm shell
    ceph -s
    

    1
    ceph orch ps