5.8. 동일한 호스트에서 다른 하드웨어를 사용하여 OSD 배포

Ansible의 device_class 기능을 사용하여 동일한 호스트에HD 및 SSD와 같은 혼합 OSD를 배포할 수 있습니다.

사전 요구 사항

  • 유효한 고객 서브스크립션.
  • Ansible 관리 노드에 대한 루트 수준 액세스.
  • Red Hat Ceph Storage Tools 및 Ansible 리포지토리를 활성화합니다.
  • Ansible 애플리케이션과 함께 사용할 ansible 사용자 계정입니다.
  • OSD가 배포됩니다.

절차

  1. group_vars/mons.yml 파일에 crush_rules 를 만듭니다.

    예제

    crush_rule_config: true
    crush_rule_hdd:
        name: HDD
        root: default
        type: host
        class: hdd
        default: true
    crush_rule_ssd:
        name: SSD
        root: default
        type: host
        class: ssd
        default: true
    crush_rules:
          - "{{ crush_rule_hdd }}"
          - "{{ crush_rule_ssd }}"
    create_crush_tree: true

    참고

    클러스터에서 SSD 또는HD 장치를 사용하지 않는 경우 해당 장치에 대한 crush_rules 를 정의하지 마십시오.

  2. group_vars/clients.yml 파일에 crush_rules 를 생성한 상태에서 을 생성합니다.

    예제

    copy_admin_key: True
    user_config: True
    pool1:
      name: "pool1"
      pg_num: 128
      pgp_num: 128
      rule_name: "HDD"
      type: "replicated"
      device_class: "hdd"
    pools:
      - "{{ pool1 }}"

  3. 인벤토리 파일을 샘플링하여 OSD에 루트를 할당합니다.

    예제

    [mons]
    mon1
    
    [osds]
    osd1 osd_crush_location="{ 'root': 'default', 'rack': 'rack1', 'host': 'osd1' }"
    osd2 osd_crush_location="{ 'root': 'default', 'rack': 'rack1', 'host': 'osd2' }"
    osd3 osd_crush_location="{ 'root': 'default', 'rack': 'rack2', 'host': 'osd3' }"
    osd4 osd_crush_location="{ 'root': 'default', 'rack': 'rack2', 'host': 'osd4' }"
    osd5 devices="['/dev/sda', '/dev/sdb']" osd_crush_location="{ 'root': 'default', 'rack': 'rack3', 'host': 'osd5' }"
    osd6 devices="['/dev/sda', '/dev/sdb']" osd_crush_location="{ 'root': 'default', 'rack': 'rack3', 'host': 'osd6' }"
    
    [mgrs]
    mgr1
    
    [clients]
    client1

  4. 트리를 봅니다.

    구문

    [root@mon ~]# ceph osd tree

    예제

    TYPE NAME
    
    root default
         rack rack1
            host osd1
                 osd.0
                 osd.10
            host osd2
                 osd.3
                 osd.7
                 osd.12
         rack rack2
            host osd3
                 osd.1
                 osd.6
                 osd.11
            host osd4
                 osd.4
                 osd.9
                 osd.13
         rack rack3
             host osd5
                 osd.2
                 osd.8
             host osd6
                 osd.14
                 osd.15

  5. 풀을 검증합니다.

    예제

    # for i in $(rados lspools);do echo "pool: $i"; ceph osd pool get $i crush_rule;done
    
    pool: pool1
    crush_rule: HDD

추가 리소스