8.2. 하위 수준 오브젝트 작업 문제 해결
스토리지 관리자는 ceph-objectstore-tool
유틸리티를 사용하여 하위 수준 오브젝트 작업을 수행할 수 있습니다. ceph-objectstore-tool
유틸리티는 다음과 같은 하위 수준 오브젝트 작업을 지원합니다.
- 오브젝트의 콘텐츠 조작
- 오브젝트 제거
- 오브젝트 맵 나열(OMAP)
- OMAP 헤더를 조작
- OMAP 키 조작
- 오브젝트의 특성 나열
- 오브젝트의 특성 키 조작
개체를 조작하면 복구할 수 없는 데이터 손실이 발생할 수 있습니다. ceph-objectstore-tool
유틸리티를 사용하기 전에 Red Hat 지원에 문의하십시오.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
8.2.1. 오브젝트의 콘텐츠 조작
ceph-objectstore-tool
유틸리티를 사용하면 오브젝트에서 바이트를 가져오거나 설정할 수 있습니다.
오브젝트에서 바이트를 설정하면 복구할 수 없는 데이터 손실이 발생할 수 있습니다. 데이터 손실을 방지하려면 개체의 백업 복사본을 만듭니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬을 중지합니다.
프로세스
적절한 OSD가 다운되었는지 확인합니다.
구문
systemctl status ceph-FSID@osd.OSD_ID
예
[root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
- OSD 또는 PG(배치 그룹)의 오브젝트를 나열하여 오브젝트를 찾습니다.
OSD 컨테이너에 로그인합니다.
구문
cephadm shell --name osd.OSD_ID
예
[root@host01 ~]# cephadm shell --name osd.0
오브젝트에서 바이트를 설정하기 전에 오브젝트의 백업 및 작업 사본을 만듭니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ get-bytes > OBJECT_FILE_NAME
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \ '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ get-bytes > zone_info.default.backup [ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \ '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ get-bytes > zone_info.default.working-copy
- 작업 복사 오브젝트 파일을 편집하고 그에 따라 오브젝트 콘텐츠를 수정합니다.
오브젝트의 바이트를 설정합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ set-bytes < OBJECT_FILE_NAME
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \ '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ set-bytes < zone_info.default.working-copy
8.2.2. 오브젝트 제거
ceph-objectstore-tool
유틸리티를 사용하여 오브젝트를 제거합니다. 오브젝트를 제거하면 해당 콘텐츠 및 참조가 배치 그룹(PG)에서 제거됩니다.
오브젝트를 제거한 후에는 다시 생성할 수 없습니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬을 중지합니다.
프로세스
OSD 컨테이너에 로그인합니다.
구문
cephadm shell --name osd.OSD_ID
예
[root@host01 ~]# cephadm shell --name osd.0
오브젝트를 제거합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ remove
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \ '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ remove
8.2.3. 오브젝트 맵 나열
ceph-objectstore-tool
유틸리티를 사용하여 오브젝트 맵(OMAP)의 콘텐츠를 나열합니다. 출력에서 키 목록을 제공합니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬을 중지합니다.
프로세스
적절한 OSD가 다운되었는지 확인합니다.
구문
systemctl status ceph-osd@OSD_ID
예
[root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
OSD 컨테이너에 로그인합니다.
구문
cephadm shell --name osd.OSD_ID
예
[root@host01 ~]# cephadm shell --name osd.0
오브젝트 맵을 나열합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ list-omap
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c \ '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ list-omap
8.2.4. 오브젝트 맵 헤더 조작
ceph-objectstore-tool
유틸리티는 오브젝트의 키와 연결된 값으로OMAP(오브젝트 맵) 헤더를 출력합니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬을 중지합니다.
프로세스
적절한 OSD가 다운되었는지 확인합니다.
구문
systemctl status ceph-FSID@osd.OSD_ID
예
[root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
OSD 컨테이너에 로그인합니다.
구문
cephadm shell --name osd.OSD_ID
예
[root@host01 ~]# cephadm shell --name osd.0
오브젝트 맵 헤더를 가져옵니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ get-omaphdr > OBJECT_MAP_FILE_NAME
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ get-omaphdr > zone_info.default.omaphdr.txt
오브젝트 맵 헤더를 설정합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ get-omaphdr < OBJECT_MAP_FILE_NAME
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ set-omaphdr < zone_info.default.omaphdr.txt
8.2.5. 오브젝트 맵 키 조작
ceph-objectstore-tool
유틸리티를 사용하여 오브젝트 맵(OMAP) 키를 변경합니다. OMAP의 데이터 경로, 배치 그룹 식별자(PG ID), 오브젝트 및 키를 제공해야 합니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬을 중지합니다.
프로세스
OSD 컨테이너에 로그인합니다.
구문
cephadm shell --name osd.OSD_ID
예
[root@host01 ~]# cephadm shell --name osd.0
오브젝트 맵 키를 가져옵니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ get-omap KEY > OBJECT_MAP_FILE_NAME
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ get-omap "" > zone_info.default.omap.txt
오브젝트 맵 키를 설정합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ set-omap KEY < OBJECT_MAP_FILE_NAME
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ set-omap "" < zone_info.default.omap.txt
오브젝트 맵 키를 제거합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ rm-omap KEY
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ rm-omap ""
8.2.6. 오브젝트의 속성 나열
ceph-objectstore-tool
유틸리티를 사용하여 오브젝트의 속성을 나열합니다. 출력은 오브젝트의 키와 값을 제공합니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬을 중지합니다.
프로세스
적절한 OSD가 다운되었는지 확인합니다.
구문
systemctl status ceph-FSID@osd.OSD_ID
예
[root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
OSD 컨테이너에 로그인합니다.
구문
cephadm shell --name osd.OSD_ID
예
[root@host01 ~]# cephadm shell --name osd.0
오브젝트의 속성을 나열합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ list-attrs
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ list-attrs
8.2.7. 오브젝트 특성 키 조작
ceph-objectstore-tool
유틸리티를 사용하여 오브젝트의 속성을 변경합니다. 오브젝트의 특성을 조작하려면 데이터 경로, 배치 그룹 ID(PG ID), 오브젝트 속성의 키, 개체가 필요합니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬을 중지합니다.
프로세스
적절한 OSD가 다운되었는지 확인합니다.
구문
systemctl status ceph-FSID@osd.OSD_ID
예
[root@host01 ~]# systemctl status ceph-b404c440-9e4c-11ec-a28a-001a4a0001df@osd.0.service
OSD 컨테이너에 로그인합니다.
구문
cephadm shell --name osd.OSD_ID
예
[root@host01 ~]# cephadm shell --name osd.0
오브젝트의 속성을 가져옵니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ get-attr KEY > OBJECT_ATTRS_FILE_NAME
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ get-attr "oid" > zone_info.default.attr.txt
오브젝트의 속성을 설정합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ set-attr KEY < OBJECT_ATTRS_FILE_NAME
예
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ set-attr "oid"<zone_info.default.attr.txt
오브젝트의 속성을 제거합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ rm-attr KEY
예제
[ceph: root@host01 /]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 \ --pgid 0.1c '{"oid":"zone_info.default","key":"","snapid":-2,"hash":235010478,"max":0,"pool":11,"namespace":""}' \ rm-attr "oid"
추가 리소스
- Red Hat Ceph Storage 지원은 Red Hat 고객 포털 을 참조하십시오.