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 데몬 중지.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    [root@osd ~]# systemctl status ceph-osd@$OSD_NUMBER

    예제

    [root@osd ~]# systemctl status ceph-osd@1

  2. 컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.

    1. 클러스터에 noout 플래그를 설정합니다.

      예제

      [root@mon ~]# ceph osd set noout

    2. OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
    3. /etc/systemd/system/ceph-osd@.service 장치 파일을 /root 디렉토리로 백업합니다.

      예제

      [root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup

    4. /run/ceph-osd@OSD_ID.service-cid 파일을 /root 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /root

    5. /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

    6. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    7. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      systemctl restart ceph-osd@OSD_ID.service

      OSD_ID 를 OSD의 ID로 바꿉니다.

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

    8. OSD_ID 와 연결된 컨테이너에 로그인합니다.

      구문

      podman exec -it ceph-osd-OSD_ID /bin/bash

      예제

      [root@osd ~]# podman exec -it ceph-osd-0 /bin/bash

    9. 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

  3. OSD 또는 배치 그룹(PG)의 개체를 나열하여 개체를 찾습니다.
  4. 오브젝트에서 바이트를 설정하기 전에 백업과 오브젝트 작업 복사본을 만듭니다.

    [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

  5. 작업 복사본 오브젝트 파일을 편집하고 그에 따라 오브젝트 콘텐츠를 수정합니다.
  6. 오브젝트의 바이트를 설정합니다.

    [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

  7. 컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.

    1. 컨테이너를 종료한 후 /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

    2. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    3. /run/ceph-osd@OSD_ID.service-cid 파일을 /tmp 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp

    4. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      [root@osd ~]# systemctl restart ceph-osd@OSD_ID.service

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

추가 리소스

10.4.3. 오브젝트 제거

ceph-objectstore-tool 유틸리티를 사용하여 오브젝트를 제거합니다. 오브젝트를 제거하면 해당 콘텐츠와 참조가 배치 그룹(PG)에서 제거됩니다.

중요

제거한 후에는 오브젝트를 다시 생성할 수 없습니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    [root@osd ~]# systemctl status ceph-osd@$OSD_NUMBER

    예제

    [root@osd ~]# systemctl status ceph-osd@1

  2. 컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.

    1. 클러스터에 noout 플래그를 설정합니다.

      예제

      [root@mon ~]# ceph osd set noout

    2. OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
    3. /etc/systemd/system/ceph-osd@.service 장치 파일을 /root 디렉토리로 백업합니다.

      예제

      [root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup

    4. /run/ceph-osd@OSD_ID.service-cid 파일을 /root 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /root

    5. /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

    6. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    7. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      systemctl restart ceph-osd@OSD_ID.service

      OSD_ID 를 OSD의 ID로 바꿉니다.

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

    8. OSD_ID 와 연결된 컨테이너에 로그인합니다.

      구문

      podman exec -it ceph-osd-OSD_ID /bin/bash

      예제

      [root@osd ~]# podman exec -it ceph-osd-0 /bin/bash

    9. 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

  3. 오브젝트를 제거합니다.

    구문

    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

  4. 컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.

    1. 컨테이너를 종료한 후 /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

    2. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    3. /run/ceph-osd@OSD_ID.service-cid 파일을 /tmp 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp

    4. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      [root@osd ~]# systemctl restart ceph-osd@OSD_ID.service

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

추가 리소스

10.4.4. 오브젝트 맵 나열

ceph-objectstore-tool 유틸리티를 사용하여 개체 맵(OMAP) 내용을 나열합니다. 출력에 키 목록이 제공됩니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    [root@osd ~]# systemctl status ceph-osd@OSD_NUMBER

    예제

    [root@osd ~]# systemctl status ceph-osd@1

  2. 컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.

    1. 클러스터에 noout 플래그를 설정합니다.

      예제

      [root@mon ~]# ceph osd set noout

    2. OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
    3. /etc/systemd/system/ceph-osd@.service 장치 파일을 /root 디렉토리로 백업합니다.

      예제

      [root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup

    4. /run/ceph-osd@OSD_ID.service-cid 파일을 /root 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /root

    5. /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

    6. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    7. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      systemctl restart ceph-osd@OSD_ID.service

      OSD_ID 를 OSD의 ID로 바꿉니다.

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

    8. OSD_ID 와 연결된 컨테이너에 로그인합니다.

      구문

      podman exec -it ceph-osd-OSD_ID /bin/bash

      예제

      [root@osd ~]# podman exec -it ceph-osd-0 /bin/bash

    9. 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

  3. 오브젝트 맵을 나열합니다.

    [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

  4. 컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.

    1. 컨테이너를 종료한 후 /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

    2. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    3. /run/ceph-osd@OSD_ID.service-cid 파일을 /tmp 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp

    4. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      [root@osd ~]# systemctl restart ceph-osd@OSD_ID.service

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

추가 리소스

10.4.5. 오브젝트 맵 헤더 조작

ceph-objectstore-tool 유틸리티는 개체 맵(OMAP) 헤더를 오브젝트 키와 관련된 값으로 출력합니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.

    1. 클러스터에 noout 플래그를 설정합니다.

      예제

      [root@mon ~]# ceph osd set noout

    2. OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
    3. /etc/systemd/system/ceph-osd@.service 장치 파일을 /root 디렉토리로 백업합니다.

      예제

      [root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup

    4. /run/ceph-osd@OSD_ID.service-cid 파일을 /root 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /root

    5. /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

    6. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    7. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      systemctl restart ceph-osd@OSD_ID.service

      OSD_ID 를 OSD의 ID로 바꿉니다.

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

    8. OSD_ID 와 연결된 컨테이너에 로그인합니다.

      구문

      podman exec -it ceph-osd-OSD_ID /bin/bash

      예제

      [root@osd ~]# podman exec -it ceph-osd-0 /bin/bash

    9. 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

  2. 적절한 OSD가 다운되었는지 확인합니다.

    구문

    systemctl status ceph-osd@OSD_NUMBER

    예제

    [root@osd ~]# systemctl status ceph-osd@1

  3. 오브젝트 맵 헤더를 가져옵니다.

    구문

    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

  4. 오브젝트 맵 헤더를 설정합니다.

    구문

    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

  5. 컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.

    1. 컨테이너를 종료한 후 /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

    2. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    3. /run/ceph-osd@OSD_ID.service-cid 파일을 /tmp 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp

    4. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      [root@osd ~]# systemctl restart ceph-osd@OSD_ID.service

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

추가 리소스

10.4.6. 오브젝트 맵 키 조작

ceph-objectstore-tool 유틸리티를 사용하여 개체 맵(OMAP) 키를 변경합니다. 데이터 경로, PG ID(배치 그룹 식별자), 오브젝트 및 POSIXAP의 키를 제공해야 합니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.

    1. 클러스터에 noout 플래그를 설정합니다.

      예제

      [root@mon ~]# ceph osd set noout

    2. OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
    3. /etc/systemd/system/ceph-osd@.service 장치 파일을 /root 디렉토리로 백업합니다.

      예제

      [root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup

    4. /run/ceph-osd@OSD_ID.service-cid 파일을 /root 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /root

    5. /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

    6. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    7. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      systemctl restart ceph-osd@OSD_ID.service

      OSD_ID 를 OSD의 ID로 바꿉니다.

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

    8. OSD_ID 와 연결된 컨테이너에 로그인합니다.

      구문

      podman exec -it ceph-osd-OSD_ID /bin/bash

      예제

      [root@osd ~]# podman exec -it ceph-osd-0 /bin/bash

    9. 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

  2. 오브젝트 맵 키를 가져옵니다.

    구문

    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

  3. 오브젝트 맵 키를 설정합니다.

    구문

    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 ""

  4. 컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.

    1. 컨테이너를 종료한 후 /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

    2. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    3. /run/ceph-osd@OSD_ID.service-cid 파일을 /tmp 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp

    4. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      [root@osd ~]# systemctl restart ceph-osd@OSD_ID.service

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

추가 리소스

10.4.7. 오브젝트의 속성 나열

ceph-objectstore-tool 유틸리티를 사용하여 오브젝트의 특성을 나열합니다. 출력에서는 오브젝트의 키와 값을 제공합니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    [root@osd ~]# systemctl status ceph-osd@OSD_NUMBER

    예제

    [root@osd ~]# systemctl status ceph-osd@1

  2. 컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.

    1. 클러스터에 noout 플래그를 설정합니다.

      예제

      [root@mon ~]# ceph osd set noout

    2. OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
    3. /etc/systemd/system/ceph-osd@.service 장치 파일을 /root 디렉토리로 백업합니다.

      예제

      [root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup

    4. /run/ceph-osd@OSD_ID.service-cid 파일을 /root 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /root

    5. /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

    6. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    7. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      systemctl restart ceph-osd@OSD_ID.service

      OSD_ID 를 OSD의 ID로 바꿉니다.

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

    8. OSD_ID 와 연결된 컨테이너에 로그인합니다.

      구문

      podman exec -it ceph-osd-OSD_ID /bin/bash

      예제

      [root@osd ~]# podman exec -it ceph-osd-0 /bin/bash

    9. 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

  3. 오브젝트의 특성을 나열합니다.

    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

  4. 컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.

    1. 컨테이너를 종료한 후 /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

    2. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    3. /run/ceph-osd@OSD_ID.service-cid 파일을 /tmp 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp

    4. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      [root@osd ~]# systemctl restart ceph-osd@OSD_ID.service

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

추가 리소스

10.4.8. 개체 속성 키 조작

ceph-objectstore-tool 유틸리티를 사용하여 오브젝트의 특성을 변경합니다. 오브젝트의 특성을 조작하려면 데이터 및 저널 경로, 배치 그룹 식별자(PG ID), 개체 및 개체 특성에 있는 키가 필요합니다.

사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.
  • ceph-osd 데몬 중지.

절차

  1. 적절한 OSD가 다운되었는지 확인합니다.

    [root@osd ~]# systemctl status ceph-osd@$OSD_NUMBER

    예제

    [root@osd ~]# systemctl status ceph-osd@1

  2. 컨테이너화된 배포의 경우 bluestore 툴에 액세스하려면 다음 단계를 따르십시오.

    1. 클러스터에 noout 플래그를 설정합니다.

      예제

      [root@mon ~]# ceph osd set noout

    2. OSD 컨테이너를 호스팅하는 노드에 로그인합니다.
    3. /etc/systemd/system/ceph-osd@.service 장치 파일을 /root 디렉토리로 백업합니다.

      예제

      [root@osd ~]# cp /etc/systemd/system/ceph-osd@.service /root/ceph-osd@.service.backup

    4. /run/ceph-osd@OSD_ID.service-cid 파일을 /root 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /root

    5. /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

    6. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    7. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      systemctl restart ceph-osd@OSD_ID.service

      OSD_ID 를 OSD의 ID로 바꿉니다.

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

    8. OSD_ID 와 연결된 컨테이너에 로그인합니다.

      구문

      podman exec -it ceph-osd-OSD_ID /bin/bash

      예제

      [root@osd ~]# podman exec -it ceph-osd-0 /bin/bash

    9. 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

  3. 오브젝트의 특성을 가져옵니다.

    구문

    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

  4. 오브젝트의 특성을 설정합니다.

    구문

    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

  5. 오브젝트의 속성을 제거합니다.

    구문

    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"

  6. 컨테이너화된 배포의 경우 변경 사항을 되돌리려면 다음 단계를 따르십시오.

    1. 컨테이너를 종료한 후 /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

    2. systemd 관리자 구성을 다시 로드합니다.

      예제

      [root@osd ~]# systemctl daemon-reload

    3. /run/ceph-osd@OSD_ID.service-cid 파일을 /tmp 로 이동합니다.

      예제

      [root@osd ~]# mv /run/ceph-osd@0.service-cid /tmp

    4. OSD_ID 와 연결된 OSD 서비스를 다시 시작합니다.

      구문

      [root@osd ~]# systemctl restart ceph-osd@OSD_ID.service

      예제

      [root@osd ~]# systemctl restart ceph-osd@0.service

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.