6.9. 使用高级服务规格部署 Ceph OSD

类型 OSD 的服务规格是利用磁盘属性描述集群布局的方法。它为用户提供了一种抽象的方式,告知 Ceph 哪个磁盘应该切换到带有所需配置的 OSD,而不必了解具体的设备名称和路径。

您可以通过定义 yaml 文件或 json 文件,为每个设备和每个主机部署 OSD。

先决条件

  • 一个正在运行的 Red Hat Ceph Storage 集群。
  • 主机添加到集群中。
  • 所有管理器和监控守护进程都已部署。

流程

  1. 在 monitor 节点上,创建 osd_spec.yaml 文件:

    示例

    [root@host01 ~]# touch osd_spec.yaml

  2. 编辑 osd_spec.yaml 文件,使其包含以下详情:

    语法

    service_type: osd
    service_id: SERVICE_ID
    placement:
      host_pattern: '*' # optional
    data_devices: # optional
      model: DISK_MODEL_NAME # optional
      paths:
      - /DEVICE_PATH
    osds_per_device: NUMBER_OF_DEVICES # optional
    db_devices: # optional
      size: # optional
      all: true # optional
      paths:
       - /DEVICE_PATH
    encrypted: true

    1. 简单情况:在这些情况下,所有节点都具有相同的设置。

      示例

      service_type: osd
      service_id: osd_spec_default
      placement:
        host_pattern: '*'
      data_devices:
        all: true
        paths:
        - /dev/sdb
      encrypted: true

      示例

      service_type: osd
      service_id: osd_spec_default
      placement:
        host_pattern: '*'
      data_devices:
        size: '80G'
      db_devices:
        size: '40G:'
        paths:
         - /dev/sdc

    2. 简单情况:在这种情况下,所有节点都具有与原始模式中创建的 OSD 设备相同的设置,而没有 LVM 层。

      示例

      service_type: osd
      service_id: all-available-devices
      encrypted: "true"
      method: raw
      placement:
        host_pattern: "*"
      data_devices:
        all: "true"

    3. 高级情景:这会将所有 HDD 用作 data_devices,并将两个 SSD 分配为专用 DB 或 WAL 设备来创建所需的布局。剩余的 SSD 是将 NVMEs 供应商分配给专用 DB 或 WAL 设备的 data_devices

      示例

      service_type: osd
      service_id: osd_spec_hdd
      placement:
        host_pattern: '*'
      data_devices:
        rotational: 0
      db_devices:
        model: Model-name
        limit: 2
      ---
      service_type: osd
      service_id: osd_spec_ssd
      placement:
        host_pattern: '*'
      data_devices:
        model: Model-name
      db_devices:
        vendor: Vendor-name

    4. 非统一节点的高级场景:这会根据 host_pattern 键将不同的 OSD specs 应用到不同的主机。

      示例

      service_type: osd
      service_id: osd_spec_node_one_to_five
      placement:
        host_pattern: 'node[1-5]'
      data_devices:
        rotational: 1
      db_devices:
        rotational: 0
      ---
      service_type: osd
      service_id: osd_spec_six_to_ten
      placement:
        host_pattern: 'node[6-10]'
      data_devices:
        model: Model-name
      db_devices:
        model: Model-name

    5. 使用专用 WAL 和 DB 设备的高级场景:

      示例

      service_type: osd
      service_id: osd_using_paths
      placement:
        hosts:
          - host01
          - host02
      data_devices:
        paths:
          - /dev/sdb
      db_devices:
        paths:
          - /dev/sdc
      wal_devices:
        paths:
          - /dev/sdd

    6. 每个设备有多个 OSD 的高级场景:

      示例

      service_type: osd
      service_id: multiple_osds
      placement:
        hosts:
          - host01
          - host02
      osds_per_device: 4
      data_devices:
        paths:
          - /dev/sdb

    7. 对于预先创建的卷,请编辑 osd_spec.yaml 文件,使其包含以下详情:

      语法

      service_type: osd
      service_id: SERVICE_ID
      placement:
        hosts:
          - HOSTNAME
      data_devices: # optional
        model: DISK_MODEL_NAME # optional
        paths:
        - /DEVICE_PATH
      db_devices: # optional
        size: # optional
        all: true # optional
        paths:
         - /DEVICE_PATH

      示例

      service_type: osd
      service_id: osd_spec
      placement:
        hosts:
          - machine1
      data_devices:
        paths:
          - /dev/vg_hdd/lv_hdd
      db_devices:
        paths:
          - /dev/vg_nvme/lv_nvme

    8. 对于 OSD 按 ID,编辑 osd_spec.yaml 文件,使其包含以下详情:

      注意

      此配置适用于 Red Hat Ceph Storage 5.3z1 及更新的版本。对于早期版本,请使用预先创建的 lvm。

      语法

      service_type: osd
      service_id: OSD_BY_ID_HOSTNAME
      placement:
        hosts:
          - HOSTNAME
      data_devices: # optional
        model: DISK_MODEL_NAME # optional
        paths:
        - /DEVICE_PATH
      db_devices: # optional
        size: # optional
        all: true # optional
        paths:
         - /DEVICE_PATH

      示例

      service_type: osd
      service_id: osd_by_id_host01
      placement:
        hosts:
          - host01
      data_devices:
        paths:
          - /dev/disk/by-id/scsi-0QEMU_QEMU_HARDDISK_drive-scsi0-0-0-5
      db_devices:
        paths:
          - /dev/disk/by-id/nvme-nvme.1b36-31323334-51454d55204e564d65204374726c-00000001

    9. 对于 OSD 通过路径,编辑 osd_spec.yaml 文件,使其包含以下详情:

      注意

      此配置适用于 Red Hat Ceph Storage 5.3z1 及更新的版本。对于早期版本,请使用预先创建的 lvm。

      语法

      service_type: osd
      service_id: OSD_BY_PATH_HOSTNAME
      placement:
        hosts:
          - HOSTNAME
      data_devices: # optional
        model: DISK_MODEL_NAME # optional
        paths:
        - /DEVICE_PATH
      db_devices: # optional
        size: # optional
        all: true # optional
        paths:
         - /DEVICE_PATH

      示例

      service_type: osd
      service_id: osd_by_path_host01
      placement:
        hosts:
          - host01
      data_devices:
        paths:
          - /dev/disk/by-path/pci-0000:0d:00.0-scsi-0:0:0:4
      db_devices:
        paths:
          - /dev/disk/by-path/pci-0000:00:02.0-nvme-1

  3. 将 YAML 文件挂载到容器中的一个目录下:

    示例

    [root@host01 ~]# cephadm shell --mount osd_spec.yaml:/var/lib/ceph/osd/osd_spec.yaml

  4. 进入该目录:

    示例

    [ceph: root@host01 /]# cd /var/lib/ceph/osd/

  5. 在部署 OSD 前,先执行空运行:

    注意

    此步骤提供部署预览,无需部署守护进程。

    示例

    [ceph: root@host01 osd]# ceph orch apply -i osd_spec.yaml --dry-run

  6. 使用服务规格部署 OSD:

    语法

    ceph orch apply -i FILE_NAME.yml

    示例

    [ceph: root@host01 osd]# ceph orch apply -i osd_spec.yaml

验证

  • 列出服务:

    示例

    [ceph: root@host01 /]# ceph orch ls osd

  • 查看节点和设备的详情:

    示例

    [ceph: root@host01 /]# ceph osd tree

其它资源