8.3. Ceph OSD 노드 및 운영 체제 수동 업그레이드

시스템 관리자는 Red Hat Ceph Storage 클러스터 노드와 Red Hat Enterprise Linux 운영 체제를 새로운 주요 릴리스로 수동으로 업그레이드할 수 있습니다.

중요

이 절차는 Ceph 클러스터의 각 OSD 노드에 대해 수행해야 하지만 일반적으로 한 번에 하나의 OSD 노드만 수행해야 합니다. OSD 노드의 최대 하나의 실패 도메인은 병렬로 수행할 수 있습니다. 예를 들어 요청별 복제가 사용 중인 경우 하나의 전체 랙의 OSD 노드를 병렬로 업그레이드할 수 있습니다. 데이터 액세스 문제를 방지하려면 현재 OSD 노드의 OSD가 정상 작동으로 반환되고 다음 OSD를 진행하기 전에 모든 클러스터의 PG가 active+clean 상태에 있는지 확인합니다.

중요

Leapp upgrade 유틸리티는 OSD 암호화로 업그레이드를 지원하지 않기 때문에 암호화된 OSD 파티션에서는 이 절차가 작동하지 않습니다.

중요

OSD가 ceph-disk 를 사용하여 생성되었으며 여전히 ceph-disk 로 관리되는 경우 ceph-volume 을 사용하여 관리해야 합니다. 이 내용은 아래 선택적 단계에서 다룹니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 노드는 Red Hat Enterprise Linux 7.9를 실행하고 있습니다.
  • 노드는 Red Hat Ceph Storage 버전 3.3z6 또는 4.0을 사용합니다.
  • Red Hat Enterprise Linux 8.3의 설치 소스에 액세스합니다.

절차

  1. 마이그레이션 중에 OSD noout 플래그가 표시되지 않도록 설정합니다.

    ceph osd set noout
  2. 클러스터에서 불필요한 로드를 방지하고 노드가 마이그레이션의 경우 데이터 재시프를 방지하려면 OSD nobackfill,norecover,noscrub, nodeep-scrub 플래그를 설정하여 OSD nobackfill , norebalance, noscrub 플래그를 설정합니다.

    ceph osd set nobackfill
    ceph osd set norecover
    ceph osd set norebalance
    ceph osd set noscrub
    ceph osd set nodeep-scrub
  3. 노드의 모든 OSD 프로세스를 정상적으로 종료합니다.

    [root@mon ~]# systemctl stop ceph-osd.target
  4. Red Hat Ceph Storage 3을 사용하는 경우 Red Hat Ceph Storage 3 리포지토리를 비활성화합니다.

    1. tools 리포지토리를 비활성화합니다.

      [root@mon ~]# subscription-manager repos --disable=rhel-7-server-rhceph-3-tools-rpms
    2. osd 저장소를 비활성화합니다.

      [root@mon ~]# subscription-manager repos --disable=rhel-7-server-rhceph-3-osd-rpms
  5. Red Hat Ceph Storage 4를 사용하는 경우 Red Hat Ceph Storage 4 리포지토리를 비활성화합니다.

    1. tools 리포지토리를 비활성화합니다.

      [root@mon ~]# subscription-manager repos --disable=rhel-7-server-rhceph-4-tools-rpms
    2. osd 저장소를 비활성화합니다.

      [root@mon ~]# subscription-manager repos --disable=rhel-7-server-rhceph-4-osd-rpms
  6. st app 유틸리티를 설치합니다. Red Hat Enterprise Linux 7에서 Red Hat Enterprise Linux 8로 업그레이드를 참조하십시오.
  7. stapp preupgrade 검사를 통해 실행합니다. 명령줄의 Assessing upgradability를 참조하십시오.
  8. /etc/ssh/sshd_config 에서 PermitRootLogin yes 를 설정합니다.
  9. OpenSSH SSH 데몬을 다시 시작합니다.

    [root@mon ~]# systemctl restart sshd.service
  10. Linux 커널에서 iSCSI 모듈을 제거합니다.

    [root@mon ~]# modprobe -r iscsi
  11. RHEL 7에서 RHEL 8로의 업그레이드 수행에 따라 업그레이드를 수행합니다.
  12. 노드를 재부팅합니다.
  13. Red Hat Enterprise Linux 8용 Red Hat Ceph Storage 4용 리포지토리를 활성화합니다.

    1. 툴 리포지토리를 활성화합니다.

      [root@mon ~]# subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms
    2. osd 리포지터리를 활성화합니다.

      [root@mon ~]# subscription-manager repos --enable=rhceph-4-osd-for-rhel-8-x86_64-rpms
  14. ceph-osd 패키지를 설치합니다.

    [root@mon ~]# dnf install ceph-osd
  15. leveldb 패키지를 설치합니다.

    [root@mon ~]# dnf install leveldb
  16. 아직 업그레이드되지 않은 노드 또는 이미 해당 파일이 복원된 노드에서 ceph.conf 파일을 복원합니다.
  17. noout,nobackfill,norecover,norrebalance,noscrubnodeep-scrub 플래그를 설정 해제합니다.

    # ceph osd unset noout
    # ceph osd unset nobackfill
    # ceph osd unset norecover
    # ceph osd unset norebalance
    # ceph osd unset noscrub
    # ceph osd unset nodeep-scrub
  18. 선택 사항: OSD가 ceph-disk 를 사용하여 생성되었으며 여전히 ceph-disk 로 관리되는 경우 ceph-volume 을 사용하여 관리해야 합니다.

    1. 각 오브젝트 스토리지 장치를 마운트합니다.

      구문

      /dev/DRIVE /var/lib/ceph/osd/ceph-OSD_ID

      DRIVE 를 스토리지 장치 이름 및 파티션 번호로 바꿉니다.

      OSD_ID 를 OSD ID로 교체합니다.

      예제

      [root@mon ~]# mount /dev/sdb1 /var/lib/ceph/osd/ceph-0

      ID_NUMBER 가 올바른지 확인합니다.

      구문

      cat /var/lib/ceph/osd/ceph-OSD_ID/whoami

      OSD_ID 를 OSD ID로 교체합니다.

      예제

      [root@mon ~]# cat /var/lib/ceph/osd/ceph-0/whoami
      0

      추가 오브젝트 저장소 장치에 대해 위의 단계를 반복합니다.

    2. 새로 마운트된 장치를 스캔합니다.

      구문

      ceph-volume simple scan /var/lib/ceph/osd/ceph-OSD_ID

      OSD_ID 를 OSD ID로 교체합니다.

      예제

      [root@mon ~]# ceph-volume simple scan /var/lib/ceph/osd/ceph-0
       stderr: lsblk: /var/lib/ceph/osd/ceph-0: not a block device
       stderr: lsblk: /var/lib/ceph/osd/ceph-0: not a block device
       stderr: Unknown device, --name=, --path=, or absolute path in /dev/ or /sys expected.
      Running command: /usr/sbin/cryptsetup status /dev/sdb1
      --> OSD 0 got scanned and metadata persisted to file: /etc/ceph/osd/0-0c9917f7-fce8-42aa-bdec-8c2cf2d536ba.json
      --> To take over management of this scanned OSD, and disable ceph-disk and udev, run:
      -->     ceph-volume simple activate 0 0c9917f7-fce8-42aa-bdec-8c2cf2d536ba

      추가 오브젝트 저장소 장치에 대해 위의 단계를 반복합니다.

    3. 장치를 활성화합니다.

      구문

      ceph-volume simple activate OSD_ID UUID

      OSD_ID 를 OSD ID 및 UUID 로 바꾸고 이전 스캔 출력에 표시된 UUID로 바꿉니다.

      예제

      [root@mon ~]# ceph-volume simple activate 0 0c9917f7-fce8-42aa-bdec-8c2cf2d536ba
      Running command: /usr/bin/ln -snf /dev/sdb2 /var/lib/ceph/osd/ceph-0/journal
      Running command: /usr/bin/chown -R ceph:ceph /dev/sdb2
      Running command: /usr/bin/systemctl enable ceph-volume@simple-0-0c9917f7-fce8-42aa-bdec-8c2cf2d536ba
       stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@simple-0-0c9917f7-fce8-42aa-bdec-8c2cf2d536ba.service → /usr/lib/systemd/system/ceph-volume@.service.
      Running command: /usr/bin/ln -sf /dev/null /etc/systemd/system/ceph-disk@.service
      --> All ceph-disk systemd units have been disabled to prevent OSDs getting triggered by UDEV events
      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
      --> Successfully activated OSD 0 with FSID 0c9917f7-fce8-42aa-bdec-8c2cf2d536ba

      추가 오브젝트 저장소 장치에 대해 위의 단계를 반복합니다.

  19. 선택 사항: OSD가 ceph-volume 으로 생성되었으며 이전 단계를 완료하지 않은 경우 OSD 서비스를 지금 시작합니다.

    [root@mon ~]# systemctl start ceph-osd.target
  20. OSD를 활성화합니다.

    BlueStore

    [root@mon ~]# ceph-volume lvm activate --all

  21. OSD가 up 및 인지, active+clean 상태인지 확인합니다.

    [root@mon ~]# ceph -s

    osd: 아래의 행에서 :, 모든 OSD가 실행 중인지 확인합니다.

    예제

    osd: 3 osds: 3 up (since 8s), 3 in (since 3M)

  22. 모두 업그레이드될 때까지 모든 OSD 노드에서 위의 단계를 반복합니다.
  23. Red Hat Ceph Storage 3에서 업그레이드하는 경우 사전Nautilus OSD를 허용하지 않고 broken-only 기능을 활성화합니다.

    [root@mon ~]# ceph osd require-osd-release nautilus
    참고

    이 단계를 실행하지 않으면 msgrv2 가 활성화된 후 OSD가 통신할 수 없습니다.

  24. Red Hat Ceph Storage 3에서 Red Hat Ceph Storage 4로 업그레이드한 후 모든 데몬이 업데이트되면 다음 단계를 실행하십시오.

    1. messenger v2 프로토콜, msgr2 를 활성화합니다.

      [root@mon ~]# ceph mon enable-msgr2

      그러면 이전 기본 포트 6789에 바인딩하는 모든 Ceph 모니터가 3300의 새 포트에 바인딩됩니다.

    2. 모든 노드에서 ceph.conf 파일의 구성 옵션을 스토리지 클러스터의 구성 데이터베이스로 가져옵니다.

      예제

      [root@mon ~]# ceph config assimilate-conf -i /etc/ceph/ceph.conf

      참고

      예를 들어 동일한 옵션 세트에 대해 다른 구성 값이 있는 경우 최종 결과는 파일이 동화되는 순서에 따라 달라집니다.

    3. 스토리지 클러스터의 구성 데이터베이스를 확인합니다.

      예제

      [root@mon ~]# ceph config dump