4.3. アップグレードの準備

ストレージ管理者は、Ceph Storage クラスターを Red Hat Ceph Storage 5 にアップグレードできます。ただし、ストレージクラスターの一部のコンポーネントは、アップグレードを行う前に特定のソフトウェアバージョンを実行している必要があります。以下は、Red Hat Ceph Storage 5 にアップグレードする前にストレージクラスターにインストールする必要のある最小のソフトウェアバージョンを示しています。

  • RHCS 4.2z2 以降。
  • Ansible 2.9
  • 最新バージョンの RHCS が同梱された Ceph-ansible
  • RHEL 8.4
  • FileStore OSD は BlueStore に移行される必要があります。OSD を FileStore から BlueStore に変換する方法については、「BlueStore」を参照してください。

RHCS 4.2z2 より前の RHCS バージョンからの直接アップグレードパスはありません。RHCS 3 からアップグレードする場合は、まず RHCS 4.2z2 以降にアップグレードしてから RHCS 5 にアップグレードする必要があります。

重要

Red Hat Ceph Storage 5 の最新バージョンにのみアップグレードできます。たとえば、バージョン 5.1 が利用可能な場合、4 から 5.0 にアップグレードすることはできません。5.1 に直接アップグレードする必要があります。

ストレージクラスターを RHCS 5 にアップグレードするには、クラスターで RHCS 4.2z2 以降を実行することを推奨します。ナレッジベースの記事「What are the Red Hat Ceph Storage Releases?」を参照してください。この記事には、Ceph パッケージと ceph-ansible の最新バージョンへのダウンロードリンクが含まれています。

アップグレードプロセスでは、Ansible Playbook を使用して、Red Hat Ceph Storage 4 ストレージクラスターを Red Hat Ceph Storage 5 にアップグレードします。Red Hat Ceph Storage 4 ストレージクラスターがコンテナー化されていないクラスターである場合、アップグレードプロセスには、クラスターをコンテナー化バージョンに変換するステップが含まれます。Red Hat Ceph Storage 5 は、コンテナー化されていないクラスターでは実行されません。

ミラーリングまたはマルチサイト設定がある場合は、一度に 1 つのクラスターをアップグレードします。別のクラスターをアップグレードする前に、アップグレードした各クラスターが適切に実行されていることを確認します。

重要

leapp は、暗号化された OSD または暗号化されたパーティションを持つ OSD のアップグレードをサポートしていません。OSD が暗号化され、ホスト OS をアップグレードする場合は、OS をアップグレードする前に ceph-ansibledmcrypt を無効にします。leapp の使用方法は、「Red Hat Enterprise Linux 7 から Red Hat Enterprise Linux 8 へのアップグレード」を参照してください。

重要

この手順の最初 3 つのステップは、ストレージクラスターが最新バージョンの RHCS 4 をまだ実行していない場合にのみ実行してください。RHCS 4 の最新バージョンは 4.2z2 以降である必要があります。

前提条件

  • 稼働中の Red Hat Ceph Storage 4 クラスター。
  • ストレージクラスター内すべてのノードへの sudo レベルのアクセス。
  • 有効なカスタマーサブスクリプションです。
  • Ansible 管理ノードへのルートレベルのアクセス。
  • Ansible アプリケーションで使用する Ansible ユーザーアカウント。
  • Red Hat Ceph Storage ツールおよび Ansible リポジトリーが有効になっている。

手順

  1. Ansible 管理ノードで Ceph および Ansible リポジトリーを有効にします。

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

  2. --extra-vars オプションを使用して infrastructure-playbooks/rolling_update.yml Playbook を更新し、health_osd_check_retrieshealth_osd_check_delay の値をそれぞれ 5030 に変更します。

    [root@admin ceph-ansible]# ansible-playbook -i hosts infrastructure-playbooks/rolling_update.yml --extra-vars "health_osd_check_retries=50 health_osd_check_delay=30"

    各 OSD ノードでは、これらの値により、ceph-ansible はストレージクラスターの健全性を 30 秒ごとに最大 50 回チェックします。つまり、ceph-ansible は OSD ごとに最大 25 分待機します。

    ストレージクラスターの使用済みのストレージ容量に基づいて、health_osd_check_retries オプションの値を上下に調整します。たとえば、436 TB のうち、ストレージ容量の 50% にあたる 218 TB を使用している場合は、health_osd_check_retries オプションを 50 に設定します。

    /etc/ansible/hosts は、Ansible インベントリーファイルのデフォルトの場所です。

  3. アップグレードするストレージクラスターに、exclusive-lock 機能を使用する Ceph Block Device イメージが含まれる場合は、すべての Ceph Block Device ユーザーにクライアントの拒否リストを作成するパーミッションがあるようにしてください。

    構文

    ceph auth caps client.ID mon 'allow r, allow command "osd blacklist"' osd 'EXISTING_OSD_USER_CAPS'

  4. ストレージクラスターが Cockpit を使用して最初にインストールされている場合は、/usr/share/ceph-ansible ディレクトリーに、Cockpit が作成したインベントリーファイルへのシンボリックリンクを /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
  5. ceph-ansible を使用してクラスターをアップグレードするには、hosts インベントリーファイルのシンボリックリンクを etc/ansible/hosts ディレクトリーに作成します。

    # ln -s /etc/ansible/hosts hosts
  6. ストレージクラスターが元々 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 を Ansible のユーザー名に置き換えます。通常のデフォルトのユーザー名は 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 を、Ansible のユーザー名に置き換えます。通常のデフォルトのユーザー名は 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

関連情報