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 のインストールソースにアクセスできる。
手順
OSD の
noout
フラグを設定して、移行中に OSD がダウンとマークされないようにします。ceph osd set noout
クラスター上で不要な負荷を回避するには、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
ノード上のすべての OSD プロセスを正常にシャットダウンします。
[root@mon ~]# systemctl stop ceph-osd.target
Red Hat Ceph Storage 3 を使用している場合は、Red Hat Ceph Storage 3 リポジトリーを無効にします。
tools リポジトリーを無効にします。
[root@mon ~]# subscription-manager repos --disable=rhel-7-server-rhceph-3-tools-rpms
osd リポジトリーを無効にします。
[root@mon ~]# subscription-manager repos --disable=rhel-7-server-rhceph-3-osd-rpms
Red Hat Ceph Storage 4 を使用している場合は、Red Hat Ceph Storage 4 リポジトリーを無効にします。
tools リポジトリーを無効にします。
[root@mon ~]# subscription-manager repos --disable=rhel-7-server-rhceph-4-tools-rpms
osd リポジトリーを無効にします。
[root@mon ~]# subscription-manager repos --disable=rhel-7-server-rhceph-4-osd-rpms
-
leapp
ユーティリティーをインストールします。Red Hat Enterprise Linux 7 から Red Hat Enterprise Linux 8 へのアップグレード を参照してください。 - leapp のアップグレード前チェックを実行します。コマンドラインからのアップグレード可能性の評価 を参照してください。
-
/etc/ssh/sshd_config
にPermitRootLogin yes
を設定します。 OpenSSH SSH デーモンを再起動します。
[root@mon ~]# systemctl restart sshd.service
Linux カーネルから iSCSI モジュールを削除します。
[root@mon ~]# modprobe -r iscsi
- RHEL 7 から RHEL 8 へのアップグレードの実行 に従って、アップグレードを実行します。
- ノードを再起動します。
Red Hat Enterprise Linux 8 用の Red Hat Ceph Storage 4 用のリポジトリーを有効にします。
tools リポジトリーを有効にします。
[root@mon ~]# subscription-manager repos --enable=rhceph-4-tools-for-rhel-8-x86_64-rpms
osd リポジトリーを有効にします。
[root@mon ~]# subscription-manager repos --enable=rhceph-4-osd-for-rhel-8-x86_64-rpms
ceph-osd
パッケージをインストールします。[root@mon ~]# dnf install ceph-osd
leveldb
パッケージをインストールします。[root@mon ~]# dnf install leveldb
-
まだアップグレードされていないノードから、またはそれらのファイルがすでに復元されているノードから、
ceph.conf
ファイルを復元します。 noout
、nobackfill
、norecover
、norrebalance
、noscrub
、および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
既存の CRUSH バケットを、最新のバケットタイプ
straw2
に切り替えます。# ceph osd getcrushmap -o backup-crushmap # ceph osd crush set-all-straw-buckets-to-straw2
必要に応じて、OSD が
ceph-disk
を使用して作成されていて、ceph-disk
で引き続き管理されている場合には、ceph-volume
を使用してそれらの管理を引き継ぐ必要があります。各オブジェクトのストレージデバイスをマウントします。
構文
/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
追加のオブジェクトストアデバイスに対して上記の手順を繰り返します。
新たにマウントしたデバイスをスキャンします。
構文
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
追加のオブジェクトストアデバイスに対して上記の手順を繰り返します。
デバイスをアクティベートします。
構文
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
追加のオブジェクトストアデバイスに対して上記の手順を繰り返します。
必要に応じて、OSD が
ceph-volume
で作成され、直前の手順を完了していない場合は、ここで OSD サービスを起動します。[root@mon ~]# systemctl start ceph-osd.target
OSD をアクティベートします。
BlueStore
[root@mon ~]# ceph-volume lvm activate --all
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)
- すべての OSD ノードがアップグレードされるまで、上記の手順をすべての OSD ノードで繰り返します。
Red Hat Ceph Storage 3 からアップグレードする場合は、pre-Nautilus OSD は使用できず、Nautilus 専用機能を有効にします。
[root@mon ~]# ceph osd require-osd-release nautilus
注記このステップの実行に失敗すると、
msgrv2
が有効になってからは OSD の通信ができなくなります。Red Hat Ceph Storage 3 から Red Hat Ceph Storage 4 にアップグレードした後、すべてのデーモンが更新されたら、以下のステップを実行します。
Specify v2 プロトコル
msgr2
を有効にします。[root@mon ~]# ceph mon enable-msgr2
これにより、古いデフォルトポート 6789 にバインドされるすべての Ceph Monitor が新しいポート 3300 にバインドされるように指示します。
すべてのノードで、
ceph.conf
ファイルの設定オプションをストレージクラスターの設定データベースにインポートします。例
[root@mon ~]# ceph config assimilate-conf -i /etc/ceph/ceph.conf
注記同じオプションセットに異なる設定値が設定されている場合など、モニターに設定をシミュレーションする場合、最終的な結果は、ファイルがシミュレートされる順序によって異なります。
ストレージクラスターの設定データベースを確認します。
例
[root@mon ~]# ceph config dump
関連情報
- 詳細は、インストールガイド の Red Hat Ceph Storage クラスターおよびオペレーティングシステムを手動でアップグレード を参照してください。
- 詳細は、RHEL 7 から RHEL 8 へのアップグレード を参照してください。