鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

添加OSD

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

前提条件

  • 部署Ceph需要使用root用户。
  • 使能SPDK需要关闭IOMMU特性(Arm下为SMMU)。
    1. 重启服务器,进入BIOS界面,具体可参见《TaiShan 服务器 BIOS 参数参考(鲲鹏920处理器)》中的“进入BIOS界面”相关内容。
    2. 在BIOS界面中依次单击“Advanced”>“MISC Config”>“Support Smmu” 进入SMMU配置页。
      图1 BIOS界面
    3. “Support Smmu”设置为“Disabled”,按“F10”保存退出(永久有效)。
      图2 关闭SMMU
  • 当前部署需要在所有服务端物理节点执行。
  • 该磁盘设备必须没有分区。
  • 该磁盘设备不得具有任何LVM状态。
  • 该磁盘设备不得包含文件系统。
  • 该磁盘设备不得包含Ceph BlueStore OSD。
  • 该磁盘设备必须大于5GB。
  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