10.4. 낮은 수준의 오브젝트 작업 문제 해결
스토리지 관리자는 ceph-objectstore-tool
유틸리티를 사용하여 낮은 수준의 오브젝트 작업을 수행할 수 있습니다. ceph-objectstore-tool
유틸리티는 다음과 같은 낮은 수준의 오브젝트 작업을 지원합니다.
- 오브젝트의 콘텐츠를 조작합니다.
- 개체 제거
- 개체 맵 (OMAP) 나열
- AP 헤더를 조작합니다.
- AP 키를 조작합니다.
- 오브젝트의 속성 나열
- 객체의 속성 키 조작
오브젝트 조작으로 인해 복구할 수 없는 데이터 손실이 발생할 수 있습니다. ceph-objectstore-tool
유틸리티를 사용하기 전에 Red Hat 지원팀에 문의하십시오.
10.4.1. 사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
10.4.2. 오브젝트의 콘텐츠 조작
ceph-objectstore-tool
유틸리티를 사용하면 개체에서 바이트를 가져오거나 설정할 수 있습니다.
개체에서 바이트를 설정하면 복구할 수 없는 데이터 손실이 발생할 수 있습니다. 데이터 손실을 방지하려면 오브젝트의 백업 사본을 만듭니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬 중지.
절차
적절한 OSD가 다운되었는지 확인합니다.
[root@osd ~]# systemctl status ceph-osd@$OSD_NUMBER
예제
[root@osd ~]# systemctl status ceph-osd@1
컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.
클러스터에
noout
플래그를 설정합니다.예제
[root@mon ~]# ceph osd set noout
- OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
/etc/systemd/system/ceph-osd@.service
장치 파일을/root
디렉토리로 백업합니다.예제
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
/run/ceph-osd@OSD_ID.service-cid
파일을/root
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
/etc/systemd/system/ceph-osd@.service
장치 파일을 편집하고 podman 명령에-it --entrypoint /bin/bash
옵션을 추가합니다.예제
# Please do not change this file directly since it is managed by Ansible and will be overwritten [Unit] Description=Ceph OSD After=network.target [Service] EnvironmentFile=-/etc/environment ExecStartPre=-/usr/bin/rm -f /%t/%n-pid /%t/%n-cid ExecStartPre=-/usr/bin/podman rm -f ceph-osd-%i ExecStart=/usr/bin/podman run -it --entrypoint /bin/bash \ -d --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \ --rm \ --net=host \ --privileged=true \ --pid=host \ --ipc=host \ --cpus=2 \ -v /dev:/dev \ -v /etc/localtime:/etc/localtime:ro \ -v /var/lib/ceph:/var/lib/ceph:z \ -v /etc/ceph:/etc/ceph:z \ -v /var/run/ceph:/var/run/ceph:z \ -v /var/run/udev/:/var/run/udev/ \ -v /var/log/ceph:/var/log/ceph:z \ -e OSD_BLUESTORE=1 -e OSD_FILESTORE=0 -e OSD_DMCRYPT=0 \ -e CLUSTER=ceph \ -v /run/lvm/:/run/lvm/ \ -e CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \ -e CONTAINER_IMAGE=registry.redhat.io/rhceph/rhceph-4-rhel8:latest \ -e OSD_ID=%i \ -e DEBUG=stayalive \ --name=ceph-osd-%i \ \ registry.redhat.io/rhceph/rhceph-4-rhel8:latest ExecStop=-/usr/bin/sh -c "/usr/bin/podman rm -f `cat /%t/%n-cid`" KillMode=none Restart=always RestartSec=10s TimeoutStartSec=120 TimeoutStopSec=15 Type=forking PIDFile=/%t/%n-pid [Install] WantedBy=multi-user.target
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
systemctl restart ceph-osd@OSD_ID.service
OSD_ID
를 OSD의 ID로 바꿉니다.예제
[root@osd ~]# systemctl restart ceph-osd@0.service
OSD_ID
와 연결된 컨테이너에 로그인합니다.구문
podman exec -it ceph-osd-OSD_ID /bin/bash
예제
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
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
예제
[root@osd ~]# ceph-volume lvm list |grep -A15 "osd\.0"|grep "osd fsid" osd fsid 087eee15-6561-40a3-8fe4-9583ba64a4ff [root@osd ~]# ceph-volume lvm activate --bluestore 0 087eee15-6561-40a3-8fe4-9583ba64a4ff Running command: /usr/bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc --path /var/lib/ceph/osd/ceph-0 --no-mon-config Running command: /usr/bin/ln -snf /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -R ceph:ceph /dev/mapper/ceph--41c69f8f--30e2--4685--9c5c--c605898c5537-osd--data--d073e8b3--0b89--4271--af5b--83045fd000dc Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/systemctl enable ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff.service
/usr/lib/systemd/system/ceph-volume@.service. Running command: /usr/bin/systemctl enable --runtime ceph-osd@0 stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph osd@0.service /usr/lib/systemd/system/ceph-osd@.service. Running command: /usr/bin/systemctl start ceph-osd@0 stderr: Running in chroot, ignoring request: start --> ceph-volume lvm activate successful for osd ID: 0
- OSD 또는 배치 그룹(PG)의 개체를 나열하여 개체를 찾습니다.
오브젝트에서 바이트를 설정하기 전에 백업과 오브젝트 작업 복사본을 만듭니다.
[root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ get-bytes > OBJECT_FILE_NAME [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ get-bytes > OBJECT_FILE_NAME
예제
[root@osd ~]# 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 [root@osd ~]# 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
- 작업 복사본 오브젝트 파일을 편집하고 그에 따라 오브젝트 콘텐츠를 수정합니다.
오브젝트의 바이트를 설정합니다.
[root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ set-bytes < OBJECT_FILE_NAME
예제
[root@osd ~]# 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
컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.
컨테이너를 종료한 후
/root
디렉터리에서/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
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
/run/ceph-osd@OSD_ID.service-cid
파일을/tmp
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
예제
[root@osd ~]# systemctl restart ceph-osd@0.service
추가 리소스
- OSD 중지에 대한 자세한 내용은 Red Hat Ceph Storage 관리 가이드 의 Ceph 데몬 시작, 중지 및 다시 시작 섹션을 참조하십시오.
10.4.3. 오브젝트 제거
ceph-objectstore-tool
유틸리티를 사용하여 오브젝트를 제거합니다. 오브젝트를 제거하면 해당 콘텐츠와 참조가 배치 그룹(PG)에서 제거됩니다.
제거한 후에는 오브젝트를 다시 생성할 수 없습니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬 중지.
절차
적절한 OSD가 다운되었는지 확인합니다.
[root@osd ~]# systemctl status ceph-osd@$OSD_NUMBER
예제
[root@osd ~]# systemctl status ceph-osd@1
컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.
클러스터에
noout
플래그를 설정합니다.예제
[root@mon ~]# ceph osd set noout
- OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
/etc/systemd/system/ceph-osd@.service
장치 파일을/root
디렉토리로 백업합니다.예제
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
/run/ceph-osd@OSD_ID.service-cid
파일을/root
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
/etc/systemd/system/ceph-osd@.service
장치 파일을 편집하고 podman 명령에-it --entrypoint /bin/bash
옵션을 추가합니다.예제
# Please do not change this file directly since it is managed by Ansible and will be overwritten [Unit] Description=Ceph OSD After=network.target [Service] EnvironmentFile=-/etc/environment ExecStartPre=-/usr/bin/rm -f /%t/%n-pid /%t/%n-cid ExecStartPre=-/usr/bin/podman rm -f ceph-osd-%i ExecStart=/usr/bin/podman run -it --entrypoint /bin/bash \ -d --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \ --rm \ --net=host \ --privileged=true \ --pid=host \ --ipc=host \ --cpus=2 \ -v /dev:/dev \ -v /etc/localtime:/etc/localtime:ro \ -v /var/lib/ceph:/var/lib/ceph:z \ -v /etc/ceph:/etc/ceph:z \ -v /var/run/ceph:/var/run/ceph:z \ -v /var/run/udev/:/var/run/udev/ \ -v /var/log/ceph:/var/log/ceph:z \ -e OSD_BLUESTORE=1 -e OSD_FILESTORE=0 -e OSD_DMCRYPT=0 \ -e CLUSTER=ceph \ -v /run/lvm/:/run/lvm/ \ -e CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \ -e CONTAINER_IMAGE=registry.redhat.io/rhceph/rhceph-4-rhel8:latest \ -e OSD_ID=%i \ -e DEBUG=stayalive \ --name=ceph-osd-%i \ \ registry.redhat.io/rhceph/rhceph-4-rhel8:latest ExecStop=-/usr/bin/sh -c "/usr/bin/podman rm -f `cat /%t/%n-cid`" KillMode=none Restart=always RestartSec=10s TimeoutStartSec=120 TimeoutStopSec=15 Type=forking PIDFile=/%t/%n-pid [Install] WantedBy=multi-user.target
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
systemctl restart ceph-osd@OSD_ID.service
OSD_ID
를 OSD의 ID로 바꿉니다.예제
[root@osd ~]# systemctl restart ceph-osd@0.service
OSD_ID
와 연결된 컨테이너에 로그인합니다.구문
podman exec -it ceph-osd-OSD_ID /bin/bash
예제
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
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
예제
[root@osd ~]# ceph-volume lvm list |grep -A15 "osd\.0"|grep "osd fsid" osd fsid 087eee15-6561-40a3-8fe4-9583ba64a4ff [root@osd ~]# ceph-volume lvm activate --bluestore 0 087eee15-6561-40a3-8fe4-9583ba64a4ff Running command: /usr/bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc --path /var/lib/ceph/osd/ceph-0 --no-mon-config Running command: /usr/bin/ln -snf /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -R ceph:ceph /dev/mapper/ceph--41c69f8f--30e2--4685--9c5c--c605898c5537-osd--data--d073e8b3--0b89--4271--af5b--83045fd000dc Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/systemctl enable ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff.service
/usr/lib/systemd/system/ceph-volume@.service. Running command: /usr/bin/systemctl enable --runtime ceph-osd@0 stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph osd@0.service /usr/lib/systemd/system/ceph-osd@.service. Running command: /usr/bin/systemctl start ceph-osd@0 stderr: Running in chroot, ignoring request: start --> ceph-volume lvm activate successful for osd ID: 0
오브젝트를 제거합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ remove
예제
[root@osd ~]# 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
컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.
컨테이너를 종료한 후
/root
디렉터리에서/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
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
/run/ceph-osd@OSD_ID.service-cid
파일을/tmp
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
예제
[root@osd ~]# systemctl restart ceph-osd@0.service
추가 리소스
- OSD 중지에 대한 자세한 내용은 Red Hat Ceph Storage 관리 가이드 의 Ceph 데몬 시작, 중지 및 다시 시작 섹션을 참조하십시오.
10.4.4. 오브젝트 맵 나열
ceph-objectstore-tool
유틸리티를 사용하여 개체 맵(OMAP) 내용을 나열합니다. 출력에 키 목록이 제공됩니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬 중지.
절차
적절한 OSD가 다운되었는지 확인합니다.
[root@osd ~]# systemctl status ceph-osd@OSD_NUMBER
예제
[root@osd ~]# systemctl status ceph-osd@1
컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.
클러스터에
noout
플래그를 설정합니다.예제
[root@mon ~]# ceph osd set noout
- OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
/etc/systemd/system/ceph-osd@.service
장치 파일을/root
디렉토리로 백업합니다.예제
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
/run/ceph-osd@OSD_ID.service-cid
파일을/root
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
/etc/systemd/system/ceph-osd@.service
장치 파일을 편집하고 podman 명령에-it --entrypoint /bin/bash
옵션을 추가합니다.예제
# Please do not change this file directly since it is managed by Ansible and will be overwritten [Unit] Description=Ceph OSD After=network.target [Service] EnvironmentFile=-/etc/environment ExecStartPre=-/usr/bin/rm -f /%t/%n-pid /%t/%n-cid ExecStartPre=-/usr/bin/podman rm -f ceph-osd-%i ExecStart=/usr/bin/podman run -it --entrypoint /bin/bash \ -d --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \ --rm \ --net=host \ --privileged=true \ --pid=host \ --ipc=host \ --cpus=2 \ -v /dev:/dev \ -v /etc/localtime:/etc/localtime:ro \ -v /var/lib/ceph:/var/lib/ceph:z \ -v /etc/ceph:/etc/ceph:z \ -v /var/run/ceph:/var/run/ceph:z \ -v /var/run/udev/:/var/run/udev/ \ -v /var/log/ceph:/var/log/ceph:z \ -e OSD_BLUESTORE=1 -e OSD_FILESTORE=0 -e OSD_DMCRYPT=0 \ -e CLUSTER=ceph \ -v /run/lvm/:/run/lvm/ \ -e CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \ -e CONTAINER_IMAGE=registry.redhat.io/rhceph/rhceph-4-rhel8:latest \ -e OSD_ID=%i \ -e DEBUG=stayalive \ --name=ceph-osd-%i \ \ registry.redhat.io/rhceph/rhceph-4-rhel8:latest ExecStop=-/usr/bin/sh -c "/usr/bin/podman rm -f `cat /%t/%n-cid`" KillMode=none Restart=always RestartSec=10s TimeoutStartSec=120 TimeoutStopSec=15 Type=forking PIDFile=/%t/%n-pid [Install] WantedBy=multi-user.target
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
systemctl restart ceph-osd@OSD_ID.service
OSD_ID
를 OSD의 ID로 바꿉니다.예제
[root@osd ~]# systemctl restart ceph-osd@0.service
OSD_ID
와 연결된 컨테이너에 로그인합니다.구문
podman exec -it ceph-osd-OSD_ID /bin/bash
예제
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
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
예제
[root@osd ~]# ceph-volume lvm list |grep -A15 "osd\.0"|grep "osd fsid" osd fsid 087eee15-6561-40a3-8fe4-9583ba64a4ff [root@osd ~]# ceph-volume lvm activate --bluestore 0 087eee15-6561-40a3-8fe4-9583ba64a4ff Running command: /usr/bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc --path /var/lib/ceph/osd/ceph-0 --no-mon-config Running command: /usr/bin/ln -snf /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -R ceph:ceph /dev/mapper/ceph--41c69f8f--30e2--4685--9c5c--c605898c5537-osd--data--d073e8b3--0b89--4271--af5b--83045fd000dc Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/systemctl enable ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff.service
/usr/lib/systemd/system/ceph-volume@.service. Running command: /usr/bin/systemctl enable --runtime ceph-osd@0 stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph osd@0.service /usr/lib/systemd/system/ceph-osd@.service. Running command: /usr/bin/systemctl start ceph-osd@0 stderr: Running in chroot, ignoring request: start --> ceph-volume lvm activate successful for osd ID: 0
오브젝트 맵을 나열합니다.
[root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID \ OBJECT \ list-omap
예제
[root@osd ~]# 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
컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.
컨테이너를 종료한 후
/root
디렉터리에서/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
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
/run/ceph-osd@OSD_ID.service-cid
파일을/tmp
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
예제
[root@osd ~]# systemctl restart ceph-osd@0.service
추가 리소스
- OSD 중지에 대한 자세한 내용은 Red Hat Ceph Storage 관리 가이드 의 Ceph 데몬 시작, 중지 및 다시 시작 섹션을 참조하십시오.
10.4.5. 오브젝트 맵 헤더 조작
ceph-objectstore-tool
유틸리티는 개체 맵(OMAP) 헤더를 오브젝트 키와 관련된 값으로 출력합니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬 중지.
절차
컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.
클러스터에
noout
플래그를 설정합니다.예제
[root@mon ~]# ceph osd set noout
- OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
/etc/systemd/system/ceph-osd@.service
장치 파일을/root
디렉토리로 백업합니다.예제
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
/run/ceph-osd@OSD_ID.service-cid
파일을/root
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
/etc/systemd/system/ceph-osd@.service
장치 파일을 편집하고 podman 명령에-it --entrypoint /bin/bash
옵션을 추가합니다.예제
# Please do not change this file directly since it is managed by Ansible and will be overwritten [Unit] Description=Ceph OSD After=network.target [Service] EnvironmentFile=-/etc/environment ExecStartPre=-/usr/bin/rm -f /%t/%n-pid /%t/%n-cid ExecStartPre=-/usr/bin/podman rm -f ceph-osd-%i ExecStart=/usr/bin/podman run -it --entrypoint /bin/bash \ -d --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \ --rm \ --net=host \ --privileged=true \ --pid=host \ --ipc=host \ --cpus=2 \ -v /dev:/dev \ -v /etc/localtime:/etc/localtime:ro \ -v /var/lib/ceph:/var/lib/ceph:z \ -v /etc/ceph:/etc/ceph:z \ -v /var/run/ceph:/var/run/ceph:z \ -v /var/run/udev/:/var/run/udev/ \ -v /var/log/ceph:/var/log/ceph:z \ -e OSD_BLUESTORE=1 -e OSD_FILESTORE=0 -e OSD_DMCRYPT=0 \ -e CLUSTER=ceph \ -v /run/lvm/:/run/lvm/ \ -e CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \ -e CONTAINER_IMAGE=registry.redhat.io/rhceph/rhceph-4-rhel8:latest \ -e OSD_ID=%i \ -e DEBUG=stayalive \ --name=ceph-osd-%i \ \ registry.redhat.io/rhceph/rhceph-4-rhel8:latest ExecStop=-/usr/bin/sh -c "/usr/bin/podman rm -f `cat /%t/%n-cid`" KillMode=none Restart=always RestartSec=10s TimeoutStartSec=120 TimeoutStopSec=15 Type=forking PIDFile=/%t/%n-pid [Install] WantedBy=multi-user.target
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
systemctl restart ceph-osd@OSD_ID.service
OSD_ID
를 OSD의 ID로 바꿉니다.예제
[root@osd ~]# systemctl restart ceph-osd@0.service
OSD_ID
와 연결된 컨테이너에 로그인합니다.구문
podman exec -it ceph-osd-OSD_ID /bin/bash
예제
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
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
예제
[root@osd ~]# ceph-volume lvm list |grep -A15 "osd\.0"|grep "osd fsid" osd fsid 087eee15-6561-40a3-8fe4-9583ba64a4ff [root@osd ~]# ceph-volume lvm activate --bluestore 0 087eee15-6561-40a3-8fe4-9583ba64a4ff Running command: /usr/bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc --path /var/lib/ceph/osd/ceph-0 --no-mon-config Running command: /usr/bin/ln -snf /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -R ceph:ceph /dev/mapper/ceph--41c69f8f--30e2--4685--9c5c--c605898c5537-osd--data--d073e8b3--0b89--4271--af5b--83045fd000dc Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/systemctl enable ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff.service
/usr/lib/systemd/system/ceph-volume@.service. Running command: /usr/bin/systemctl enable --runtime ceph-osd@0 stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph osd@0.service /usr/lib/systemd/system/ceph-osd@.service. Running command: /usr/bin/systemctl start ceph-osd@0 stderr: Running in chroot, ignoring request: start --> ceph-volume lvm activate successful for osd ID: 0
적절한 OSD가 다운되었는지 확인합니다.
구문
systemctl status ceph-osd@OSD_NUMBER
예제
[root@osd ~]# systemctl status ceph-osd@1
오브젝트 맵 헤더를 가져옵니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ get-omaphdr > OBJECT_MAP_FILE_NAME
예제
[root@osd ~]# 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
예제
[root@osd ~]# su - ceph -c '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
컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.
컨테이너를 종료한 후
/root
디렉터리에서/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
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
/run/ceph-osd@OSD_ID.service-cid
파일을/tmp
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
예제
[root@osd ~]# systemctl restart ceph-osd@0.service
추가 리소스
- OSD 중지에 대한 자세한 내용은 Red Hat Ceph Storage 관리 가이드 의 Ceph 데몬 시작, 중지 및 다시 시작 섹션을 참조하십시오.
10.4.6. 오브젝트 맵 키 조작
ceph-objectstore-tool
유틸리티를 사용하여 개체 맵(OMAP) 키를 변경합니다. 데이터 경로, PG ID(배치 그룹 식별자), 오브젝트 및 POSIXAP의 키를 제공해야 합니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬 중지.
절차
컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.
클러스터에
noout
플래그를 설정합니다.예제
[root@mon ~]# ceph osd set noout
- OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
/etc/systemd/system/ceph-osd@.service
장치 파일을/root
디렉토리로 백업합니다.예제
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
/run/ceph-osd@OSD_ID.service-cid
파일을/root
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
/etc/systemd/system/ceph-osd@.service
장치 파일을 편집하고 podman 명령에-it --entrypoint /bin/bash
옵션을 추가합니다.예제
# Please do not change this file directly since it is managed by Ansible and will be overwritten [Unit] Description=Ceph OSD After=network.target [Service] EnvironmentFile=-/etc/environment ExecStartPre=-/usr/bin/rm -f /%t/%n-pid /%t/%n-cid ExecStartPre=-/usr/bin/podman rm -f ceph-osd-%i ExecStart=/usr/bin/podman run -it --entrypoint /bin/bash \ -d --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \ --rm \ --net=host \ --privileged=true \ --pid=host \ --ipc=host \ --cpus=2 \ -v /dev:/dev \ -v /etc/localtime:/etc/localtime:ro \ -v /var/lib/ceph:/var/lib/ceph:z \ -v /etc/ceph:/etc/ceph:z \ -v /var/run/ceph:/var/run/ceph:z \ -v /var/run/udev/:/var/run/udev/ \ -v /var/log/ceph:/var/log/ceph:z \ -e OSD_BLUESTORE=1 -e OSD_FILESTORE=0 -e OSD_DMCRYPT=0 \ -e CLUSTER=ceph \ -v /run/lvm/:/run/lvm/ \ -e CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \ -e CONTAINER_IMAGE=registry.redhat.io/rhceph/rhceph-4-rhel8:latest \ -e OSD_ID=%i \ -e DEBUG=stayalive \ --name=ceph-osd-%i \ \ registry.redhat.io/rhceph/rhceph-4-rhel8:latest ExecStop=-/usr/bin/sh -c "/usr/bin/podman rm -f `cat /%t/%n-cid`" KillMode=none Restart=always RestartSec=10s TimeoutStartSec=120 TimeoutStopSec=15 Type=forking PIDFile=/%t/%n-pid [Install] WantedBy=multi-user.target
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
systemctl restart ceph-osd@OSD_ID.service
OSD_ID
를 OSD의 ID로 바꿉니다.예제
[root@osd ~]# systemctl restart ceph-osd@0.service
OSD_ID
와 연결된 컨테이너에 로그인합니다.구문
podman exec -it ceph-osd-OSD_ID /bin/bash
예제
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
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
예제
[root@osd ~]# ceph-volume lvm list |grep -A15 "osd\.0"|grep "osd fsid" osd fsid 087eee15-6561-40a3-8fe4-9583ba64a4ff [root@osd ~]# ceph-volume lvm activate --bluestore 0 087eee15-6561-40a3-8fe4-9583ba64a4ff Running command: /usr/bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc --path /var/lib/ceph/osd/ceph-0 --no-mon-config Running command: /usr/bin/ln -snf /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -R ceph:ceph /dev/mapper/ceph--41c69f8f--30e2--4685--9c5c--c605898c5537-osd--data--d073e8b3--0b89--4271--af5b--83045fd000dc Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/systemctl enable ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff.service
/usr/lib/systemd/system/ceph-volume@.service. Running command: /usr/bin/systemctl enable --runtime ceph-osd@0 stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph osd@0.service /usr/lib/systemd/system/ceph-osd@.service. Running command: /usr/bin/systemctl start ceph-osd@0 stderr: Running in chroot, ignoring request: start --> ceph-volume lvm activate successful for osd ID: 0
오브젝트 맵 키를 가져옵니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ get-omap KEY > OBJECT_MAP_FILE_NAME
예제
[root@osd ~]# 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
예제
[root@osd ~]# 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
예제
[root@osd ~]# 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 ""
컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.
컨테이너를 종료한 후
/root
디렉터리에서/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
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
/run/ceph-osd@OSD_ID.service-cid
파일을/tmp
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
예제
[root@osd ~]# systemctl restart ceph-osd@0.service
추가 리소스
- OSD 중지에 대한 자세한 내용은 Red Hat Ceph Storage 관리 가이드 의 Ceph 데몬 시작, 중지 및 다시 시작 섹션을 참조하십시오.
10.4.7. 오브젝트의 속성 나열
ceph-objectstore-tool
유틸리티를 사용하여 오브젝트의 특성을 나열합니다. 출력에서는 오브젝트의 키와 값을 제공합니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬 중지.
절차
적절한 OSD가 다운되었는지 확인합니다.
[root@osd ~]# systemctl status ceph-osd@OSD_NUMBER
예제
[root@osd ~]# systemctl status ceph-osd@1
컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.
클러스터에
noout
플래그를 설정합니다.예제
[root@mon ~]# ceph osd set noout
- OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
/etc/systemd/system/ceph-osd@.service
장치 파일을/root
디렉토리로 백업합니다.예제
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
/run/ceph-osd@OSD_ID.service-cid
파일을/root
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
/etc/systemd/system/ceph-osd@.service
장치 파일을 편집하고 podman 명령에-it --entrypoint /bin/bash
옵션을 추가합니다.예제
# Please do not change this file directly since it is managed by Ansible and will be overwritten [Unit] Description=Ceph OSD After=network.target [Service] EnvironmentFile=-/etc/environment ExecStartPre=-/usr/bin/rm -f /%t/%n-pid /%t/%n-cid ExecStartPre=-/usr/bin/podman rm -f ceph-osd-%i ExecStart=/usr/bin/podman run -it --entrypoint /bin/bash \ -d --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \ --rm \ --net=host \ --privileged=true \ --pid=host \ --ipc=host \ --cpus=2 \ -v /dev:/dev \ -v /etc/localtime:/etc/localtime:ro \ -v /var/lib/ceph:/var/lib/ceph:z \ -v /etc/ceph:/etc/ceph:z \ -v /var/run/ceph:/var/run/ceph:z \ -v /var/run/udev/:/var/run/udev/ \ -v /var/log/ceph:/var/log/ceph:z \ -e OSD_BLUESTORE=1 -e OSD_FILESTORE=0 -e OSD_DMCRYPT=0 \ -e CLUSTER=ceph \ -v /run/lvm/:/run/lvm/ \ -e CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \ -e CONTAINER_IMAGE=registry.redhat.io/rhceph/rhceph-4-rhel8:latest \ -e OSD_ID=%i \ -e DEBUG=stayalive \ --name=ceph-osd-%i \ \ registry.redhat.io/rhceph/rhceph-4-rhel8:latest ExecStop=-/usr/bin/sh -c "/usr/bin/podman rm -f `cat /%t/%n-cid`" KillMode=none Restart=always RestartSec=10s TimeoutStartSec=120 TimeoutStopSec=15 Type=forking PIDFile=/%t/%n-pid [Install] WantedBy=multi-user.target
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
systemctl restart ceph-osd@OSD_ID.service
OSD_ID
를 OSD의 ID로 바꿉니다.예제
[root@osd ~]# systemctl restart ceph-osd@0.service
OSD_ID
와 연결된 컨테이너에 로그인합니다.구문
podman exec -it ceph-osd-OSD_ID /bin/bash
예제
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
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
예제
[root@osd ~]# ceph-volume lvm list |grep -A15 "osd\.0"|grep "osd fsid" osd fsid 087eee15-6561-40a3-8fe4-9583ba64a4ff [root@osd ~]# ceph-volume lvm activate --bluestore 0 087eee15-6561-40a3-8fe4-9583ba64a4ff Running command: /usr/bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc --path /var/lib/ceph/osd/ceph-0 --no-mon-config Running command: /usr/bin/ln -snf /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -R ceph:ceph /dev/mapper/ceph--41c69f8f--30e2--4685--9c5c--c605898c5537-osd--data--d073e8b3--0b89--4271--af5b--83045fd000dc Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/systemctl enable ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff.service
/usr/lib/systemd/system/ceph-volume@.service. Running command: /usr/bin/systemctl enable --runtime ceph-osd@0 stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph osd@0.service /usr/lib/systemd/system/ceph-osd@.service. Running command: /usr/bin/systemctl start ceph-osd@0 stderr: Running in chroot, ignoring request: start --> ceph-volume lvm activate successful for osd ID: 0
오브젝트의 특성을 나열합니다.
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ list-attrs
예제
[root@osd ~]# 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
컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.
컨테이너를 종료한 후
/root
디렉터리에서/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
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
/run/ceph-osd@OSD_ID.service-cid
파일을/tmp
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
예제
[root@osd ~]# systemctl restart ceph-osd@0.service
추가 리소스
- OSD 중지에 대한 자세한 내용은 Red Hat Ceph Storage 관리 가이드 의 Ceph 데몬 시작, 중지 및 다시 시작 섹션을 참조하십시오.
10.4.8. 개체 속성 키 조작
ceph-objectstore-tool
유틸리티를 사용하여 오브젝트의 특성을 변경합니다. 오브젝트의 특성을 조작하려면 데이터 및 저널 경로, 배치 그룹 식별자(PG ID), 개체 및 개체 특성에 있는 키가 필요합니다.
사전 요구 사항
- Ceph OSD 노드에 대한 루트 수준 액세스.
-
ceph-osd
데몬 중지.
절차
적절한 OSD가 다운되었는지 확인합니다.
[root@osd ~]# systemctl status ceph-osd@$OSD_NUMBER
예제
[root@osd ~]# systemctl status ceph-osd@1
컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.
클러스터에
noout
플래그를 설정합니다.예제
[root@mon ~]# ceph osd set noout
- OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
/etc/systemd/system/ceph-osd@.service
장치 파일을/root
디렉토리로 백업합니다.예제
[root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup
/run/ceph-osd@OSD_ID.service-cid
파일을/root
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /root
/etc/systemd/system/ceph-osd@.service
장치 파일을 편집하고 podman 명령에-it --entrypoint /bin/bash
옵션을 추가합니다.예제
# Please do not change this file directly since it is managed by Ansible and will be overwritten [Unit] Description=Ceph OSD After=network.target [Service] EnvironmentFile=-/etc/environment ExecStartPre=-/usr/bin/rm -f /%t/%n-pid /%t/%n-cid ExecStartPre=-/usr/bin/podman rm -f ceph-osd-%i ExecStart=/usr/bin/podman run -it --entrypoint /bin/bash \ -d --conmon-pidfile /%t/%n-pid --cidfile /%t/%n-cid \ --rm \ --net=host \ --privileged=true \ --pid=host \ --ipc=host \ --cpus=2 \ -v /dev:/dev \ -v /etc/localtime:/etc/localtime:ro \ -v /var/lib/ceph:/var/lib/ceph:z \ -v /etc/ceph:/etc/ceph:z \ -v /var/run/ceph:/var/run/ceph:z \ -v /var/run/udev/:/var/run/udev/ \ -v /var/log/ceph:/var/log/ceph:z \ -e OSD_BLUESTORE=1 -e OSD_FILESTORE=0 -e OSD_DMCRYPT=0 \ -e CLUSTER=ceph \ -v /run/lvm/:/run/lvm/ \ -e CEPH_DAEMON=OSD_CEPH_VOLUME_ACTIVATE \ -e CONTAINER_IMAGE=registry.redhat.io/rhceph/rhceph-4-rhel8:latest \ -e OSD_ID=%i \ -e DEBUG=stayalive \ --name=ceph-osd-%i \ \ registry.redhat.io/rhceph/rhceph-4-rhel8:latest ExecStop=-/usr/bin/sh -c "/usr/bin/podman rm -f `cat /%t/%n-cid`" KillMode=none Restart=always RestartSec=10s TimeoutStartSec=120 TimeoutStopSec=15 Type=forking PIDFile=/%t/%n-pid [Install] WantedBy=multi-user.target
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
systemctl restart ceph-osd@OSD_ID.service
OSD_ID
를 OSD의 ID로 바꿉니다.예제
[root@osd ~]# systemctl restart ceph-osd@0.service
OSD_ID
와 연결된 컨테이너에 로그인합니다.구문
podman exec -it ceph-osd-OSD_ID /bin/bash
예제
[root@osd ~]# podman exec -it ceph-osd-0 /bin/bash
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
예제
[root@osd ~]# ceph-volume lvm list |grep -A15 "osd\.0"|grep "osd fsid" osd fsid 087eee15-6561-40a3-8fe4-9583ba64a4ff [root@osd ~]# ceph-volume lvm activate --bluestore 0 087eee15-6561-40a3-8fe4-9583ba64a4ff Running command: /usr/bin/mount -t tmpfs tmpfs /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/ceph-bluestore-tool --cluster=ceph prime-osd-dir --dev /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc --path /var/lib/ceph/osd/ceph-0 --no-mon-config Running command: /usr/bin/ln -snf /dev/ceph-41c69f8f-30e2-4685-9c5c-c605898c5537/osd-data-d073e8b3-0b89-4271-af5b-83045fd000dc /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -h ceph:ceph /var/lib/ceph/osd/ceph-0/block Running command: /usr/bin/chown -R ceph:ceph /dev/mapper/ceph--41c69f8f--30e2--4685--9c5c--c605898c5537-osd--data--d073e8b3--0b89--4271--af5b--83045fd000dc Running command: /usr/bin/chown -R ceph:ceph /var/lib/ceph/osd/ceph-0 Running command: /usr/bin/systemctl enable ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-087eee15-6561-40a3-8fe4-9583ba64a4ff.service
/usr/lib/systemd/system/ceph-volume@.service. Running command: /usr/bin/systemctl enable --runtime ceph-osd@0 stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph osd@0.service /usr/lib/systemd/system/ceph-osd@.service. Running command: /usr/bin/systemctl start ceph-osd@0 stderr: Running in chroot, ignoring request: start --> ceph-volume lvm activate successful for osd ID: 0
오브젝트의 특성을 가져옵니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ get-attrs KEY > OBJECT_ATTRS_FILE_NAME
예제
[root@osd ~]# 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-attrs "oid" > zone_info.default.attr.txt
오브젝트의 특성을 설정합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ set-attrs KEY < OBJECT_ATTRS_FILE_NAME
예제
[root@osd ~]# 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-attrs "oid" < zone_info.default.attr.txt
오브젝트의 속성을 제거합니다.
구문
ceph-objectstore-tool --data-path PATH_TO_OSD \ --pgid PG_ID OBJECT \ rm-attrs KEY
예제
[root@osd ~]# 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-attrs "oid"
컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.
컨테이너를 종료한 후
/root
디렉터리에서/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
systemd
관리자 구성을 다시 로드합니다.예제
[root@osd ~]# systemctl daemon-reload
/run/ceph-osd@OSD_ID.service-cid
파일을/tmp
로 이동합니다.예제
[root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp
OSD_ID
와 연결된 OSD 서비스를 다시 시작합니다.구문
[root@osd ~]# systemctl restart ceph-osd@OSD_ID.service
예제
[root@osd ~]# systemctl restart ceph-osd@0.service
추가 리소스
- OSD 중지에 대한 자세한 내용은 Red Hat Ceph Storage 관리 가이드 의 Ceph 데몬 시작, 중지 및 다시 시작 섹션을 참조하십시오.