Rook-Ceph에서 OSD 교체하는 방법

2–3분

Ceph 클러스터에서 OSD(오브젝트 스토리지 데몬)는 데이터 저장과 복제를 담당하는 중요한 컴포넌트입니다. 하지만 OSD 디스크나 노드에 문제가 발생하거나, 유지보수 또는 업그레이드 작업을 위해 OSD를 교체해야 할 때가 있습니다. 이 글에서는 Rook-Ceph 환경에서 Ceph OSD를 교체하는 방법을 단계별로 설명하겠습니다.

1. ceph-tools Pod에 Shell로 접근하기

Ceph 관련 명령어를 실행하려면 먼저 Ceph 클러스터 관리 유틸리티가 포함된 ceph-tools Pod에 접근해야 합니다. 이 Pod를 통해 클러스터의 상태를 점검하고 관리 작업을 수행할 수 있습니다.

kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash

  • n rook-ceph: Ceph가 배포된 네임스페이스를 지정합니다.
  • exec -it deploy/rook-ceph-tools -- bash: ceph-tools Pod에 bash 쉘로 접근합니다.

ceph-tools Pod에 접속한 후, Ceph 명령어를 사용하여 OSD 관련 작업을 진행할 수 있습니다.

2. Ceph OSD 상태 확인하기

먼저, 현재 클러스터의 OSD 상태를 확인해야 합니다. 이를 통해 어떤 OSD가 문제가 있는지 파악할 수 있습니다.

ceph osd tree
ceph osd stat

  • ceph osd tree: Ceph 클러스터의 OSD 트리 구조를 출력합니다. 이 명령어로 OSD가 어느 노드에 배치되어 있는지, 활성화 상태인지 확인할 수 있습니다.
  • ceph osd stat: OSD의 총 개수, 활성화된 OSD, 다운된 OSD 등 상태 정보를 제공합니다.

3. Ceph OSD 수동으로 다운시키기

교체할 OSD를 수동으로 다운시켜야 합니다. 이를 통해 Ceph가 해당 OSD를 더 이상 사용하지 않도록 할 수 있습니다.

ceph osd down <osd_id>

예를 들어, OSD ID가 3인 OSD를 다운시키려면 다음 명령어를 사용합니다:

ceph osd down 

이 명령어는 OSD를 수동으로 비활성화하고, Ceph가 데이터를 다른 OSD에 복제할 수 있도록 준비시킵니다.

4. CRUSH 맵에서 OSD 제거하기

OSD를 다운시킨 후에는 클러스터의 CRUSH 맵(Ceph의 데이터 배치 규칙을 정의하는 맵)에서 해당 OSD를 제거해야 합니다. 이를 통해 Ceph가 해당 OSD에 더 이상 데이터를 배치하지 않도록 합니다.

ceph osd crush remove osd.<osd_id>
ceph auth del osd.<osd_id>
ceph osd rm <osd_id>

예를 들어, OSD 3을 제거하는 경우:

ceph osd crush remove osd.3
ceph auth del osd.3
ceph osd rm 3

이 과정에서는 세 가지 단계가 있습니다:

  • ceph osd crush remove: CRUSH 맵에서 OSD를 제거합니다.
  • ceph auth del: OSD의 인증 정보를 삭제합니다.
  • ceph osd rm: OSD ID를 Ceph 클러스터에서 완전히 제거합니다.

5. 삭제된 OSD의 Deployment 삭제하기

Rook-Ceph 환경에서는 OSD가 Kubernetes의 Deployment로 관리되므로, 마지막으로 해당 OSD의 Deployment를 삭제해야 합니다. 이를 통해 Kubernetes에서 OSD 관련 리소스를 정리할 수 있습니다.

kubectl -n rook-ceph delete deployment rook-ceph-osd-<osd_id>

예를 들어, OSD ID가 3인 Deployment를 삭제하려면 다음 명령어를 실행합니다:

kubectl -n rook-ceph delete deployment rook-ceph-osd-3

결론

Rook-Ceph에서 OSD를 교체하는 절차는 크게 5단계로 나뉩니다: 먼저 ceph-tools Pod에 접근한 뒤, OSD 상태를 확인하고, 수동으로 OSD를 다운시킨 후 CRUSH 맵에서 제거하고, 해당 OSD의 Kubernetes Deployment를 삭제하는 과정입니다. 이 절차를 정확하게 따라하면 문제없이 OSD를 교체하고 클러스터를 정상적으로 유지할 수 있습니다.


추가로 궁금한 점이나 수정이 필요한 부분이 있으면 알려주세요!