검색

10.3. 고급 오브젝트 작업 문제 해결

download PDF

스토리지 관리자는 ceph-objectstore-tool 유틸리티를 사용하여 높은 수준의 오브젝트 작업을 수행할 수 있습니다. ceph-objectstore-tool 유틸리티에서는 다음과 같은 고급 오브젝트 작업을 지원합니다.

  • 오브젝트 나열
  • 손실된 오브젝트 나열
  • 손실된 객체 수정
중요

오브젝트 조작으로 인해 복구할 수 없는 데이터 손실이 발생할 수 있습니다. ceph-objectstore-tool 유틸리티를 사용하기 전에 Red Hat 지원팀에 문의하십시오.

10.3.1. 사전 요구 사항

  • Ceph OSD 노드에 대한 루트 수준 액세스.

10.3.2. 오브젝트 나열

OSD는 0~여 개의 배치 그룹을 포함하고 PG(배포 그룹) 내의 여러 개체에 0을 포함할 수 있습니다. ceph-objectstore-tool 유틸리티를 사용하면 OSD 내에 저장된 오브젝트를 나열할 수 있습니다.

사전 요구 사항

  • 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 내에서 모든 오브젝트를 식별합니다.

    [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list

    예제

    [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list

  4. 배치 그룹 내에서 모든 오브젝트를 식별합니다.

    [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op list

    예제

    [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op list

  5. 오브젝트가 속하는 PG를 확인합니다.

    [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list OBJECT_ID

    예제

    [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list default.region

  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

추가 리소스

10.3.3. 손실된 오브젝트 나열

OSD는 오브젝트를 lost 또는 unfound 로 표시할 수 있습니다. ceph-objectstore-tool 을 사용하여 OSD에 저장된 손실되거나 unfound 오브젝트를 나열할 수 있습니다.

사전 요구 사항

  • 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 유틸리티를 사용하여 손실된 오브젝트 및 unfound 오브젝트를 나열합니다. 적절한 상황을 선택합니다.

    1. 손실된 오브젝트를 모두 나열하려면 다음을 수행합니다.

      [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list-lost

      예제

      [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list-lost

    2. 배치 그룹 내에서 손실된 모든 오브젝트를 나열하려면 다음을 수행합니다.

      [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --pgid PG_ID --op list-lost

      예제

      [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op list-lost

    3. 손실된 오브젝트를 식별자로 나열하려면 다음을 수행합니다.

      [root@osd ~]# ceph-objectstore-tool --data-path PATH_TO_OSD --op list-lost OBJECT_ID

      예제

      [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op list-lost default.region

  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.3.4. 손실된 오브젝트 수정

ceph-objectstore-tool 유틸리티를 사용하여 Ceph OSD에 저장된 손실 및 발견되지 않은 오브젝트를 나열하고 수정할 수 있습니다. 이 절차는 레거시 오브젝트에만 적용됩니다.

사전 요구 사항

  • 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 --op fix-lost --dry-run

    예제

    [root@osd ~]# ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost --dry-run

  4. ceph-objectstore-tool 유틸리티를 사용하여 ceph 사용자로 손실되거나 unfound 오브젝트를 수정합니다. 적절한 상황을 선택합니다.

    • 손실된 모든 오브젝트를 수정하려면 다음을 수행합니다.

      구문

      su - ceph -c 'ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost'

      예제

      [root@osd ~]# su - ceph -c 'ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost'

    • 배치 그룹 내에서 손실된 모든 오브젝트를 수정하려면 다음을 수행합니다.

      su - ceph -c 'ceph-objectstore-tool --data-path _PATH_TO_OSD_ --pgid _PG_ID_ --op fix-lost'

      예제

      [root@osd ~]# su - ceph -c 'ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --pgid 0.1c --op fix-lost'

    • 손실된 오브젝트를 식별자로 수정하려면 다음을 수행합니다.

      구문

      su - ceph -c 'ceph-objectstore-tool --data-path PATH_TO_OSD --op fix-lost OBJECT_ID'

      예제

      [root@osd ~]# su - ceph -c 'ceph-objectstore-tool --data-path /var/lib/ceph/osd/ceph-0 --op fix-lost default.region'

  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

추가 리소스

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.