10.2. 컨테이너화된 환경의 Ceph 오브젝트 문제 해결
OSD 컨테이너는 복구/유지 관리 모드로 시작하여 OSD 노드에 Ceph 패키지를 설치하지 않고도 Red Hat Ceph Storage 4에서 OSD를 복구할 수 있습니다.
ceph-bluestore-tool
을 사용하여 fsck
명령으로 일관성 검사를 실행하거나 복구 명령으로 일관성 검사를 실행하고 오류를 복구할
수 있습니다.
이 절차는 컨테이너화된 배포에만 적용됩니다. 베어 메탈 배포에는 이 섹션 건너뛰기
사전 요구 사항
- 실행 중인 Red Hat Ceph Storage 클러스터.
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬 중지.
절차
클러스터에
noout
플래그를 설정합니다.예제
ceph osd set noout
[root@mon ~]# ceph osd set noout
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
/etc/systemd/system/ceph-osd@.service
장치 파일을/root
디렉토리로 백업합니다.예제
cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /run/ceph-osd@OSD_ID.service-cid
파일을/root
로 이동합니다.예제
mv /run/ceph-osd@0.service-cid /root
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /etc/systemd/system/ceph-osd@.service
장치 파일을 편집하고 podman 명령에-it --entrypoint /bin/bash
옵션을 추가합니다.예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd
관리자 구성을 다시 로드합니다.예제
systemctl daemon-reload
[root@osd ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
systemctl restart ceph-osd@OSD_ID.service
systemctl restart ceph-osd@OSD_ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_ID
를 OSD의 ID로 바꿉니다.예제
systemctl restart ceph-osd@0.service
[root@osd ~]# systemctl restart ceph-osd@0.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_ID
와 연결된 컨테이너에 로그인합니다.구문
podman exec -it ceph-osd-OSD_ID /bin/bash
podman exec -it ceph-osd-OSD_ID /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
podman exec -it ceph-osd-0 /bin/bash
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow osd fsid
를 가져오고 OSD를 활성화하여 OSD의 논리 볼륨(LV)을 마운트합니다.구문
ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid" ceph-volume lvm activate --bluestore OSD_ID OSD_FSID
ceph-volume lvm list |grep -A15 "osd\.OSD_ID"|grep "osd fsid" ceph-volume lvm activate --bluestore OSD_ID OSD_FSID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow fsck
를 실행하고복구
명령을 실행합니다.구문
ceph-bluestore-tool fsck --path /var/lib/ceph/osd/ceph-OSD_ID ceph-bluestore-tool repair --path /var/lib/ceph/osd/ceph-OSD_ID
ceph-bluestore-tool fsck --path /var/lib/ceph/osd/ceph-OSD_ID ceph-bluestore-tool repair --path /var/lib/ceph/osd/ceph-OSD_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
ceph-bluestore-tool fsck --path /var/lib/ceph/osd/ceph-0
[root@osd ~]# ceph-bluestore-tool fsck --path /var/lib/ceph/osd/ceph-0 fsck success
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ceph-bluestore-tool repair --path /var/lib/ceph/osd/ceph-0
[root@osd ~]# ceph-bluestore-tool repair --path /var/lib/ceph/osd/ceph-0 repair success
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨테이너를 종료한 후
/root
디렉터리에서/etc/systemd/system/ceph-osd@.service
장치 파일을 복사합니다.예제
cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.modified cp /root/ceph-osd@.service.backup /etc/systemd/system/ceph-osd@.service
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.modified [root@osd ~]# cp /root/ceph-osd@.service.backup /etc/systemd/system/ceph-osd@.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemd
관리자 구성을 다시 로드합니다.예제
systemctl daemon-reload
[root@osd ~]# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /run/ceph-osd@OSD_ID.service-cid
파일을/tmp
로 이동합니다.예제
mv /run/ceph-osd@0.service-cid /tmp
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
systemctl restart ceph-osd@OSD_ID.service
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제
systemctl restart ceph-osd@0.service
[root@osd ~]# systemctl restart ceph-osd@0.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow