6.9. 고급 서비스 사양을 사용하여 Ceph OSD 배포

OSD 유형의 서비스 사양은 디스크의 속성을 사용하여 클러스터 레이아웃을 설명하는 방법입니다. 이는 사용자에게 장치 이름 및 경로의 세부 사항을 모르는 상태에서 필요한 구성으로 OSD로 전환해야 하는 디스크를 Ceph에 알리는 추상적인 방법을 제공합니다.

yaml 파일 또는 json 파일을 정의하여 각 장치 및 각 호스트의 OSD를 배포할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 호스트는 클러스터에 추가됩니다.
  • 모든 관리자 및 모니터 데몬이 배포됩니다.

절차

  1. 모니터 노드에서 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. 간단한 시나리오: 이 경우 모든 노드는 LVM 계층 없이 원시 모드로 생성된 OSD 장치와 동일한 설정을 갖습니다.

      예제

      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_hiera 키에 따라 다른 호스트에 다른 OSD 사양을 적용합니다.

      예제

      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. ID별 OSD의 경우 다음 세부 사항을 포함하도록 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

추가 리소스