10.4. Ceph Storage 노드에서 OSD 제거
다음 절차에서는 노드에서 OSD를 제거하는 방법을 설명합니다. 환경에 대해 다음과 같이 가정합니다.
-
서버(
ceph-storage0
)에는/dev/sde
에서 실행되는 OSD(ceph-osd@4
)가 있습니다. -
Ceph 모니터 서비스(
ceph-mon
)가controller0
에서 실행되고 있습니다. - 스토리지 클러스터가 거의 완전한 비율이 아닌지 확인하는 데 사용 가능한 OSD가 충분히 있습니다.
Ceph OSD에 대한 자세한 내용은 Red Hat Ceph Storage Operations Guide 의 Ceph OSD 를 참조하십시오.
절차
-
ceph-storage0
에 SSH로 연결하고root
로 로그인합니다. OSD 서비스를 비활성화하고 중지합니다.
[root@ceph-storage0 ~]# systemctl disable ceph-osd@4 [root@ceph-stoarge0 ~]# systemctl stop ceph-osd@4
-
ceph-storage0
에서 연결을 끊습니다. -
controller0
에 SSH로 연결하고root
로 로그인합니다. Ceph 모니터 컨테이너의 이름을 확인합니다.
[root@controller0 ~]# docker ps | grep ceph-mon ceph-mon-controller0 [root@controller0 ~]#
Ceph 모니터 컨테이너에서 원하지 않는 OSD를
밖
으로 표시하도록 활성화합니다.[root@controller0 ~]# docker exec ceph-mon-controller0 ceph osd out 4
참고이 명령을 사용하면 Ceph가 스토리지 클러스터를 재조정하고 클러스터의 다른 OSD에 데이터를 복사합니다. 클러스터는 리밸런싱이 완료될 때까지
활성+clean
상태를 일시적으로 유지합니다.다음 명령을 실행하고 스토리지 클러스터 상태가
active+clean
이 될 때까지 기다립니다.[root@controller0 ~]# docker exec ceph-mon-controller0 ceph -w
CRUSH 맵에서 OSD를 제거하여 더 이상 데이터를 수신하지 않도록 합니다.
[root@controller0 ~]# docker exec ceph-mon-controller0 ceph osd crush remove osd.4
OSD 인증 키를 제거합니다.
[root@controller0 ~]# docker exec ceph-mon-controller0 ceph auth del osd.4
OSD를 제거합니다.
[root@controller0 ~]# docker exec ceph-mon-controller0 ceph osd rm 4
-
controller0
에서 연결을 해제합니다. -
stack
사용자로 언더클라우드에 SSH로 연결하고CephAnsibleDisksConfig
매개변수를 정의한 heat 환경 파일을 찾습니다. heat 템플릿에는 4개의 OSD가 포함되어 있습니다.
parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sdb - /dev/sdc - /dev/sdd - /dev/sde osd_scenario: lvm osd_objectstore: bluestore
템플릿을 수정하여
/dev/sde
를 제거합니다.parameter_defaults: CephAnsibleDisksConfig: devices: - /dev/sdb - /dev/sdc - /dev/sdd osd_scenario: lvm osd_objectstore: bluestore
openstack overcloud deploy
를 실행하여 오버클라우드를 업데이트합니다.참고이 예에서는 OSD가 있는 모든 호스트에서
/dev/sde
장치를 제거했다고 가정합니다. 모든 노드에서 동일한 장치를 제거하지 않으면 표시된 대로 heat 템플릿을 업데이트하고 다른장치
목록으로 호스트를 정의하는 방법에 대한 정보는 5.2.5절. “디스크 레이아웃을 비Homogeneous Ceph Storage 노드에 매핑” 를 참조하십시오.