Menu Close

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

Red Hat Ceph Storage クラスターのアップグレードを開始する前に、いくつかの操作を完了する必要があります。これらのステップは、Red Hat Ceph Storage クラスターのベアメタルおよびコンテナーデプロイメントの両方に適用されます (指定がある場合)。

重要

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

重要

FileStore オブジェクトストアを使用する場合は、Red Hat Ceph Storage 3 から Red Hat Ceph Storage 4 にアップグレードした後に BlueStore に移行する必要があります。

重要

Red Hat Enterprise Linux 7 から Red Hat Enterprise Linux 8 へのアップグレード中に、ceph-ansible を使用して Red Hat Ceph Storage をアップグレードすることはできません。Red Hat Enterprise Linux 7 を使用する必要があります。オペレーティングシステムもアップグレードするには、「Red Hat Ceph Storageクラスターとオペレーティングシステムの手動アップグレード」を参照してください。

重要

Red Hat Ceph Storage 4.2z2 以降のバージョンでは、オプション bluefs_buffered_io がデフォルトで True に設定されています。このオプションは、場合によって BlueFS でバッファー読み取りができるようにし、カーネルページキャッシュが RocksDB ブロック読み取りのような読み取りの二次キャッシュとして機能できるようにします。たとえば、 OMAP の反復時にすべてのブロックを保持ほど、RocksDB のブロックキャッシュが十分にない場合には、ディスクの代わりにページキャッシュから読み出すことが可能な場合があります。これにより、osd_memory_target が小さすぎてブロックキャッシュのすべてのエントリーを保持できない場合に、パフォーマンスが劇的に向上します。現在、bluefs_buffered_io を有効にし、システムレベルのスワップを無効にすることで、パフォーマンスの低下を防いでいます。

前提条件

  • ストレージクラスター内のすべてのノードへの root レベルのアクセス。
  • バージョン 3 からアップグレードする場合、バージョン 3 クラスターが 「Red Hat Ceph Storage 3 の最新バージョンにアップグレード」されている。
  • バージョン 4 にアップグレードする前に、Prometheus ノードエクスポーターサービスが動作している場合は、サービスを停止する。

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

    重要

    これは既知の問題で、今後の Red Hat Ceph Storage のリリースで修正される予定です。この問題の詳細は、Red Hat ナレッジベースの 記事 を参照してください。

    注記

    アップグレード中にインターネットにアクセスできないベアメタル または コンテナー の Red Hat Ceph Storage クラスターノードの場合は、『Red Hat Ceph Storage Installation Guide』の「Registering Red Hat Ceph Storage nodes to the CDN and attaching subscriptions」のセクションに記載の手順に従います。

手順

  1. ストレージクラスター内のすべてのノードで root ユーザーとしてログインします。
  2. Ceph ノードが Red Hat コンテンツ配信ネットワーク (CDN) に接続されていない場合は、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 Playbook を実行して、既存の 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 管理ノードで、ansible パッケージおよび ceph-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. Playbook infrastructure-playbooks/rolling_update.yml 編集し、health_osd_check_retries および health_osd_check_delay の値をそれぞれ 50 および 30 に変更します。

    health_osd_check_retries: 50
    health_osd_check_delay: 30

    各 OSD ノードについて、この値により Ansible は最大 25 分待機し、アップグレードプロセスを続行する前に 30 秒ごとにストレージクラスターの正常性をチェックします。

    注記

    ストレージクラスターで使用されているストレージ容量に基づいて、health_osd_check_retries オプションの値をスケールアップまたはダウンします。たとえば、436 TB 未満の 218 TB (ストレージ容量の 50%) を使用している場合は、health_osd_check_retries オプションを 50 に設定します。

  7. アップグレードするストレージクラスターに 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'
  8. ストレージクラスターが 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
  9. ceph-ansible を使用してクラスターをアップグレードするには、hosts インベントリーファイルのシンボリックリンクを etc/ansible/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 は、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

関連情報