6.11. Ceph Orchestrator를 사용하여 OSD 교체

디스크가 실패하면 물리적 스토리지 장치를 교체하고 동일한 OSD ID를 재사용하여 CRUSH 맵을 재구성할 필요가 없습니다.

--replace 옵션을 사용하여 클러스터의 OSD를 교체할 수 있습니다.

참고

단일 OSD를 교체하려면 특정 장치 및 호스트에 Ceph OSD 배포를 참조하십시오. 사용 가능한 모든 장치에 OSD를 배포하려면 사용 가능한 모든 장치에 Ceph OSD 배포를 참조하십시오.

이 옵션은 ceph orch rm 명령을 사용하여 OSD ID를 유지합니다. OSD는 CRUSH 계층에서 영구적으로 제거되지 않지만 삭제 플래그가 할당됩니다. 이 플래그는 다음 OSD 배포에서 재사용할 수 있는 OSD ID를 결정하는 데 사용됩니다. 삭제된 플래그는 다음 OSD 배포에서 재사용되는 OSD ID를 결정하는 데 사용됩니다.

rm 명령과 유사하게 클러스터에서 OSD를 교체하려면 다음 두 단계가 필요합니다.

  • 클러스터에서 모든 배치 그룹(PG)을 비우십시오.
  • 클러스터에서 PG가 없는 OSD 제거.

배포에 OSD 사양을 사용하는 경우 교체 중인 디스크의 OSD ID가 삽입되는 즉시 새로 추가된 디스크에 자동으로 할당됩니다.

참고

OSD를 제거한 후 OSD를 다시 사용할 수 있게 되면 cephadm' 에서 기존 드라이브 그룹 사양과 일치하는 경우 이러한 드라이브에 OSD를 자동으로 배포하려고 할 수 있습니다. 사양을 사용하여 제거할 OSD를 배포하고 제거 후 새 OSD가 드라이브에 배포되지 않도록 하려면 제거하기 전에 drivegroup 사양을 수정합니다. OSD를 배포하는 동안 --all-available-devices 옵션을 사용한 경우 새 드라이브를 전혀 사용하지 않도록 unmanaged: true 를 설정합니다. 다른 배포의 경우 사양을 수정합니다. 자세한 내용은 고급 서비스 사양을 사용하여 Ceph OSD 배포를 참조하십시오.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 호스트는 클러스터에 추가됩니다.
  • 모니터, 관리자 및 OSD 데몬이 스토리지 클러스터에 배포됩니다.
  • 제거된 OSD를 대체하는 새 OSD는 OSD가 제거된 동일한 호스트에서 생성해야 합니다.

절차

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell

  2. 향후 참조를 위해 OSD 구성 매핑을 덤프하고 저장해야 합니다.

    예제

    [ceph: root@node /]# ceph osd metadata -f plain | grep device_paths
    "device_paths": "sde=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:1,sdi=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:1",
    "device_paths": "sde=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:1,sdf=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:1",
    "device_paths": "sdd=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:2,sdg=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:2",
    "device_paths": "sdd=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:2,sdh=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:2",
    "device_paths": "sdd=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:2,sdk=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:2",
    "device_paths": "sdc=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:3,sdl=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:3",
    "device_paths": "sdc=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:3,sdj=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:3",
    "device_paths": "sdc=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:0:0:3,sdm=/dev/disk/by-path/pci-0000:03:00.0-scsi-0:1:0:3",
    [.. output omitted ..]

  3. OSD를 교체해야 하는 장치 및 노드를 확인합니다.

    예제

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

  4. cephadm 관리 클러스터에서 OSD를 제거합니다.

    중요

    스토리지 클러스터에 health_warn 또는 기타 오류가 연결된 경우 OSD를 교체하기 전에 오류를 확인하고 수정하여 데이터 손실을 방지합니다.

    구문

    ceph orch osd rm OSD_ID --replace [--force]

    --force 옵션은 스토리지 클러스터에서 지속적인 작업이 있을 때 사용할 수 있습니다.

    예제

    [ceph: root@host01 /]# ceph orch osd rm 0 --replace

  5. 다음 OSD 사양을 적용하여 새 OSD를 다시 생성합니다.

    예제

    service_type: osd
    service_id: osd
    placement:
      hosts:
      - myhost
    data_devices:
      paths:
      - /path/to/the/device

  6. OSD 교체 상태를 확인합니다.

    예제

    [ceph: root@host01 /]# ceph orch osd rm status

  7. 오케스트레이터를 중지하여 기존 OSD 사양을 적용합니다.

    예제

    [ceph: root@node /]# ceph orch pause
    [ceph: root@node /]# ceph orch status
    Backend: cephadm
    Available: Yes
    Paused: Yes

  8. 제거된 OSD 장치를 zap합니다.

    예제

    [ceph: root@node /]# ceph orch device zap node.example.com /dev/sdi --force
    zap successful for /dev/sdi on node.example.com
    
    [ceph: root@node /]# ceph orch device zap node.example.com /dev/sdf --force
    zap successful for /dev/sdf on node.example.com

  9. 일시 중지 모드에서 Orcestrator를 다시 시작

    예제

    [ceph: root@node /]# ceph orch resume

  10. OSD 교체 상태를 확인합니다.

    예제

    [ceph: root@node /]# ceph osd tree
    ID  CLASS  WEIGHT   TYPE NAME      STATUS  REWEIGHT  PRI-AFF
    -1         0.77112  root default
    -3         0.77112      host node
     0    hdd  0.09639          osd.0      up   1.00000  1.00000
     1    hdd  0.09639          osd.1      up   1.00000  1.00000
     2    hdd  0.09639          osd.2      up   1.00000  1.00000
     3    hdd  0.09639          osd.3      up   1.00000  1.00000
     4    hdd  0.09639          osd.4      up   1.00000  1.00000
     5    hdd  0.09639          osd.5      up   1.00000  1.00000
     6    hdd  0.09639          osd.6      up   1.00000  1.00000
     7    hdd  0.09639          osd.7      up   1.00000  1.00000
     [.. output omitted ..]

검증

  • Ceph OSD가 교체되는 장치 및 노드의 세부 정보를 확인합니다.

    예제

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

    동일한 호스트에서 실행을 교체한 것과 동일한 ID가 있는 OSD가 표시됩니다.

  • 새로 배포된 OSD의 db_device가 교체된 db_device인지 확인합니다.

    예제

    [ceph: root@host01 /]# ceph osd metadata 0 | grep bluefs_db_devices
    "bluefs_db_devices": "nvme0n1",
    
    [ceph: root@host01 /]# ceph osd metadata 1 | grep bluefs_db_devices
    "bluefs_db_devices": "nvme0n1",