7.2. 업그레이드 준비

Red Hat Ceph Storage 클러스터 업그레이드를 시작하기 전에 완료해야 할 사항이 몇 가지 있습니다. 이 단계는 하나 이상의 다른 항목에 지정하지 않는 한 Red Hat Ceph Storage 클러스터의 베어 메탈 및 컨테이너 배포에 모두 적용됩니다.

중요

최신 Red Hat Ceph Storage 4 버전으로만 업그레이드할 수 있습니다. 예를 들어 버전 4.1을 사용할 수 있는 경우 3에서 4.0으로 업그레이드할 수 없습니다. 4.1로 직접 이동해야 합니다.

중요

Red Hat Ceph Storage 3에서 Red Hat Ceph Storage 4로 업그레이드한 후 FileStore 오브젝트 저장소를 사용하는 경우 BlueStore로 마이그레이션해야 합니다.

중요

ceph-ansible 을 사용하여 Red Hat Ceph Storage를 업그레이드하는 동시에 Red Hat Enterprise Linux 7을 Red Hat Enterprise Linux 8로 업그레이드할 수는 없습니다. Red Hat Enterprise Linux 7을 그대로 유지해야 합니다. 운영 체제를 업그레이드하려면 Red Hat Ceph Storage 클러스터 및 운영 체제 수동 업그레이드를 참조하십시오.

중요

Red Hat Ceph Storage 4.2z2 이상 버전에서는 기본적으로 bluefs_buffered_io 옵션이 True 로 설정됩니다. 이 옵션을 사용하면 BlueFS에서 버퍼링된 읽기를 수행할 수 있으며 커널 페이지 캐시가 MigsDB 블록 읽기와 같은 읽기에 대한 보조 캐시 역할을 할 수 있습니다. 예를 들어, OMAP 반복 중에 모든 블록을 보관할 수 있을 만큼 충분히 크지 않은 경우 디스크 대신 페이지 캐시에서 해당 블록을 읽을 수 있습니다. 이로 인해 osd_memory_target 이 블록 캐시의 모든 항목을 유지하기에 너무 작으면 성능이 크게 향상될 수 있습니다. 현재 bluefs_buffered_io 를 활성화하고 시스템 수준 스왑을 비활성화하면 성능이 저하됩니다.

사전 요구 사항

  • 스토리지 클러스터의 모든 노드에 대한 루트 수준 액세스.
  • 스토리지 클러스터의 모든 노드의 시스템 클럭이 동기화됩니다. 모니터 노드가 동기화되지 않으면 업그레이드 프로세스가 제대로 완료되지 않을 수 있습니다.
  • 버전 3에서 업그레이드하는 경우 버전 3 클러스터는 Red Hat Ceph Storage 3의 최신 버전으로 업그레이드 됩니다.
  • 버전 4로 업그레이드하기 전에 Prometheus 노드 내보내기 서비스가 실행 중인 경우 서비스를 중지합니다.

    예제

    [root@mon ~]# systemctl stop prometheus-node-exporter.service

    중요

    이는 Red Hat Ceph Storage 향후 릴리스에서 수정될 알려진 문제입니다. 이 문제에 대한 자세한 내용은 Red Hat Knowledgebase 문서 를 참조하십시오.

    참고

    업그레이드 중 인터넷에 액세스할 수 없는 베어 메탈 또는 컨테이너 Red Hat Ceph Storage 클러스터 노드의 경우, Red Hat Ceph Storage 노드를 CDN에 등록하고 Red Hat Ceph Storage 설치 가이드 의 서브스크립션 연결 섹션의 절차에 따라 다음 절차를 따르십시오.

절차

  1. 스토리지 클러스터의 모든 노드에 root 사용자로 로그인합니다.
  2. Ceph 노드가 Red Hat CDN(Content Delivery Network)에 연결되어 있지 않은 경우 ISO 이미지를 사용하여 Red Hat Ceph Storage의 최신 버전으로 로컬 리포지토리를 업데이트하여 Red Hat Ceph Storage를 업그레이드할 수 있습니다.
  3. Red Hat Ceph Storage를 버전 3에서 버전 4로 업그레이드하는 경우 기존 Ceph 대시보드 설치를 제거합니다.

    1. Ansible 관리 노드에서 cephmetrics-ansible 디렉터리로 변경합니다.

      [root@admin ~]# cd /usr/share/cephmetrics-ansible
    2. purge.yml 플레이북을 실행하여 기존 Ceph 대시보드 설치를 제거합니다.

      [root@admin cephmetrics-ansible]# ansible-playbook -v purge.yml
  4. Red Hat Ceph Storage를 버전 3에서 버전 4로 업그레이드하는 경우 Ansible 관리 노드에서 Ceph 및 Ansible 리포지토리를 활성화합니다.

    Red Hat Enterprise Linux 7

    [root@admin ~]# subscription-manager repos --enable=rhel-7-server-rhceph-4-tools-rpms --enable=rhel-7-server-ansible-2.9-rpms

    Red Hat Enterprise Linux 8

    [root@admin ~]# subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms --enable=ansible-2.9-for-rhel-8-x86_64-rpms

  5. Ansible 관리 노드에서 최신 버전의 ansibleceph-ansible 패키지가 설치되어 있는지 확인합니다.

    Red Hat Enterprise Linux 7

    [root@admin ~]# yum update ansible ceph-ansible

    Red Hat Enterprise Linux 8

    [root@admin ~]# dnf update ansible ceph-ansible

  6. infrastructure-playbooks/rolling_update.yml 플레이북을 편집하고 health_osd_check_retrieshealth_osd_check_delay 값을 각각 5030 으로 변경합니다.

    health_osd_check_retries: 50
    health_osd_check_delay: 30

    각 OSD 노드에서 이러한 값은 Ansible이 최대 25분 동안 기다린 후 30초마다 스토리지 클러스터 상태를 확인하고 업그레이드 프로세스를 계속하기 전에 대기합니다.

    참고

    스토리지 클러스터의 사용된 스토리지 용량에 따라 health_osd_check_retries 옵션 값을 up 또는 down으로 조정합니다. 예를 들어, 436TB 중 218TB를 사용하는 경우 기본적으로 스토리지 용량의 50%를 사용하는 경우 health_osd_check_retries 옵션을 50 으로 설정합니다.

  7. 업그레이드하려는 스토리지 클러스터에 배타적 잠금 기능을 사용하는 Ceph Block Device 이미지가 포함된 경우 모든 Ceph 블록 장치 사용자에게 블랙리스트를 지정할 수 있는 권한이 있는지 확인하십시오.

    ceph auth caps client.ID mon 'allow r, allow command "osd blacklist"' osd 'EXISTING_OSD_USER_CAPS'
  8. Cockpit을 사용하여 스토리지 클러스터를 원래 설치한 경우, Cockpit이 생성한 인벤토리 파일에 /usr/share/ceph-ansible 디렉터리에 심볼릭 링크를 만듭니다. /usr/share/ansible-runner-service/inventory/hosts:

    1. /usr/share/ceph-ansible 디렉토리로 변경합니다.

      # cd /usr/share/ceph-ansible
    2. 심볼릭 링크를 만듭니다.

      # ln -s /usr/share/ansible-runner-service/inventory/hosts hosts
  9. ceph-ansible 을 사용하여 클러스터를 업그레이드하려면 etc/ansible/hosts 디렉터리에 hosts 인벤토리 파일로 심볼릭 링크를 생성합니다.

    # ln -s /etc/ansible/hosts hosts
  10. Cockpit을 사용하여 스토리지 클러스터를 원래 설치한 경우 Cockpit 생성된 SSH 키를 Ansible 사용자의 ~/.ssh 디렉터리에 복사합니다.

    1. 키를 복사합니다.

      # cp /usr/share/ansible-runner-service/env/ssh_key.pub /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub
      # cp /usr/share/ansible-runner-service/env/ssh_key /home/ANSIBLE_USERNAME/.ssh/id_rsa

      ANSIBLE_USERNAME 을 일반적으로 admin 의 사용자 이름으로 바꿉니다.

      예제

      # cp /usr/share/ansible-runner-service/env/ssh_key.pub /home/admin/.ssh/id_rsa.pub
      # cp /usr/share/ansible-runner-service/env/ssh_key /home/admin/.ssh/id_rsa

    2. 키 파일에 적절한 소유자, 그룹 및 권한을 설정합니다.

      # chown ANSIBLE_USERNAME:_ANSIBLE_USERNAME_ /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub
      # chown ANSIBLE_USERNAME:_ANSIBLE_USERNAME_ /home/ANSIBLE_USERNAME/.ssh/id_rsa
      # chmod 644 /home/ANSIBLE_USERNAME/.ssh/id_rsa.pub
      # chmod 600 /home/ANSIBLE_USERNAME/.ssh/id_rsa

      ANSIBLE_USERNAME 을 일반적으로 admin 의 사용자 이름으로 바꿉니다.

      예제

      # chown admin:admin /home/admin/.ssh/id_rsa.pub
      # chown admin:admin /home/admin/.ssh/id_rsa
      # chmod 644 /home/admin/.ssh/id_rsa.pub
      # chmod 600 /home/admin/.ssh/id_rsa

추가 리소스