8.3. Ceph OSD ノードとそのオペレーティングシステムの手動によるアップグレード

システム管理者は、Red Hat Ceph Storage クラスターノードおよび Red Hat Enterprise Linux オペレーティングシステム上の Ceph OSD ソフトウェアを、同時に新しいメジャーリリースに手動でアップグレードできます。

重要

この手順は、Ceph クラスターの各 OSD ノードに対して実行する必要がありますが、通常は一度に 1 つの OSD ノードに対してのみ実行してください。OSD ノードに相当する最大 1 つ障害ドメインを並行して実行することが可能です。たとえば、ラックごとのレプリケーションが使用されている場合は、ラックの OSD ノード全体を並行してアップグレードできます。データへのアクセスの問題を防ぐには、現在の OSD ノードの OSD が正常な動作に戻り、クラスターの PG が すべて次の OSD に進む active+clean 状態にあることを確認します。

重要

Leapp アップグレードユーティリティーは 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 フラグを設定して、移行中に OSD がダウンとマークされないようにします。

    ceph osd set noout
  2. クラスター上で不要な負荷を回避するには、OSD nobackfill フラグ、norecover フラグ、norrebalance フラグ、noscrub フラグ、および nodeep-scrub フラグを設定し、ノードが移行のためにダウンした場合にデータの再起動を回避します。

    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. leapp ユーティリティーをインストールします。Red Hat Enterprise Linux 7 から Red Hat Enterprise Linux 8 へのアップグレード を参照してください。
  7. leapp のアップグレード前チェックを実行します。コマンドラインからのアップグレード可能性の評価 を参照してください。
  8. /etc/ssh/sshd_configPermitRootLogin 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. tools リポジトリーを有効にします。

      [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. nooutnobackfillnorecovernorrebalancenoscrub、および nodeep-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. 既存の CRUSH バケットを、最新のバケットタイプ straw2 に切り替えます。

    # ceph osd getcrushmap -o backup-crushmap
    # ceph osd crush set-all-straw-buckets-to-straw2
  19. 必要に応じて、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

      追加のオブジェクトストアデバイスに対して上記の手順を繰り返します。

  20. 必要に応じて、OSD が ceph-volume で作成され、直前の手順を完了していない場合は、ここで OSD サービスを起動します。

    [root@mon ~]# systemctl start ceph-osd.target
  21. OSD をアクティベートします。

    BlueStore

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

  22. OSD が up および in になっていること、ならびに、active+clean 状態にあることを確認します。

    [root@mon ~]# ceph -s

    services: サービス下の osd: 行で、すべての OSD が up および in であることを確認します。

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

  23. すべての OSD ノードがアップグレードされるまで、上記の手順をすべての OSD ノードで繰り返します。
  24. Red Hat Ceph Storage 3 からアップグレードする場合は、pre-Nautilus OSD は使用できず、Nautilus 専用機能を有効にします。

    [root@mon ~]# ceph osd require-osd-release nautilus
    注記

    このステップの実行に失敗すると、msgrv2 が有効になってからは OSD の通信ができなくなります。

  25. Red Hat Ceph Storage 3 から Red Hat Ceph Storage 4 にアップグレードした後、すべてのデーモンが更新されたら、以下のステップを実行します。

    1. Specify v2 プロトコル msgr2 を有効にします。

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

      これにより、古いデフォルトポート 6789 にバインドされるすべての Ceph Monitor が新しいポート 3300 にバインドされるように指示します。

    2. すべてのノードで、ceph.conf ファイルの設定オプションをストレージクラスターの設定データベースにインポートします。

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

      注記

      同じオプションセットに異なる設定値が設定されている場合など、モニターに設定をシミュレーションする場合、最終的な結果は、ファイルがシミュレートされる順序によって異なります。

    3. ストレージクラスターの設定データベースを確認します。

      [root@mon ~]# ceph config dump