LoginSignup
3
2

Ceph QuincyからReefへのアップグレード@ProxmoxVE

Last updated at Posted at 2023-12-05

Proxmox VE 8.1と一緒にリリースされたCeph Reefにアップグレードを実施しました。
その時の手順メモになります。

ProxmoxVEでのCephについて

環境

  • バージョンアップ前:Ceph Quincy 17.2.7
  • バージョンアップ後:Ceph Reef 18.2.0

公式手順
Proxmox VE 8.1-1 のダウンロード

手順

msgrv2 が有効になっていることを確認

ceph mon dump
~省略~
0: [v2:192.168.0.7:3300/0,v1:192.168.0.7:6789/0] mon.pve7
1: [v2:192.168.0.5:3300/0,v1:192.168.0.5:6789/0] mon.pve5
2: [v2:192.168.0.6:3300/0,v1:192.168.0.6:6789/0] mon.pve6
3: [v2:192.168.0.8:3300/0,v1:192.168.0.8:6789/0] mon.pve8
4: [v2:192.168.0.9:3300/0,v1:192.168.0.9:6789/0] mon.pve9

上記のようにv1とv2の両方が、各モニターにリストされていることを確認します。
もし有効になっていなければ下記のコマンドで有効にします。

ceph mon enable-msgr2

Cephリポジトリの修正

各ノードで以下のコマンドを実行し、リポジトリをQuincyからReefに変更します。

sed -i 's/quincy/reef/' /etc/apt/sources.list.d/ceph.list

nooutフラグをセット

アップグレード中にリバランスなどが発生して負荷がかからないようにnooutフラグを有効化します。
必須ではないですが推奨されています。
GUIのOSDタブのGlobal Flags設定からできます。
または、以下のコマンドでも可能です。

ceph osd set noout

パッケージアップグレード

各ノードで以下のコマンドを実行し、Cephのパッケージをアップグレードします。

apt update
apt full-upgrade

途中の画面

image.png

モニターデーモンの再起動

全てのノードでアップグレードした後に、
モニターが実行されている各ノードでモニターを再起動します。

systemctl restart ceph-mon.target

一度に 1 ノードずつ実行します。
再起動するたびに待機し、クラスターのステータスを下記のコマンドで定期的に確認します。

ceph -s

HEALTH_OK のステータスか、以下のステータスになるまで待ちます。

HEALTH_WARN
noout flag(s) set

すべてのモニターが起動したら、モニターのアップグレードが完了したことを確認します。
以下のコマンドでmin_mon_release 18 (reef)と出力されることを確認します。

ceph mon dump | grep min_mon_release

マネージャーデーモンの再起動

マネージャーがモニターとともに自動的に再起動しなかった場合は、すべてのノードでマネージャーを再起動します。
今回は自動的に再起動しましたので省略しますが、再起動する場合は以下のコマンドを各ノードで実行します。

systemctl restart ceph-mgr.target

実施するときはモニターデーモンの時と同様に1ノードずつステータスを確認しながら行います。

OSDデーモンの再起動

すべての OSD を以下のコマンドで再起動します。
データの冗長性の損失を避けるため、OSD は一度に 1 つのノードでのみ再起動します。

systemctl restart ceph-osd.target

再起動するたびに待機し、クラスターのステータスを下記のコマンドで定期的に確認します。

ceph status

HEALTH_OK のステータスか、以下のステータスになるまで待ちます。

HEALTH_WARN
noout flag(s) set

image.png

Reef 以前の OSD を禁止し、すべての新しい Reef 専用機能を有効にする

以下のコマンドを実行します。

ceph osd require-osd-release reef

CephFS MDS デーモンのアップグレード

CephFS ファイル システムごとに、次の手順を実施します。
ファイルシステムはWebUIまたはceph fs lsで確認できます。
今回ファイルシステムの名前はcephfsです。環境に合わせて読み替えてください。

  • standby_replayを無効化します。
ceph fs set cephfs allow_standby_replay false
  • max_mdsを1よりも増やしている場合は1に設定する必要があります。
    以下のコマンドでmax_mdsの設定値を確認します。
ceph status
    mds: 1/1 daemons up, 4 standby
ceph fs get cephfs | grep max_mds
max_mds 1

今回は1なのでこのまま進みます。
1に設定する必要がある場合は以下のコマンドを実行します。

ceph fs set <fs_name> max_mds 1
  • すべてのスタンバイMDS デーモンを停止します。
    WebUI の CephFS パネルから行うか、次の CLI コマンドを使用して行うことができます。
systemctl stop ceph-mds@ID.service

これはWebUIの方がどれがスタンバイか分かりやすいのでそちらで実施しました。

  • 1 つの MDS だけがオンラインであり、FS のランク 0 にあることを確認します。
ceph status
    mds: 1/1 daemons up
  • 下記のコマンドで最初にアクティブなMDSを再起動します。(瞬停します)
    その後残っている全てのスタンバイのMDSを再起動します。
systemctl restart ceph-mds.target
  • max_mdsを1よりも大きく設定していた場合は、設定を元に戻します。
    今回は1でしたので省略します。
    実施する場合は以下のコマンドで行います。
ceph fs set <fs_name> max_mds <original_max_mds>

nooutフラグを元に戻す

GUIのOSDタブのGlobal Flags設定からフラグ設定を解除するか、
以下のコマンドを実行します。

ceph osd unset noout

正常性確認して完了

オールグリーンを確認してアップグレード完了です!

image.png

本家もQuincy と Reef のパフォーマンス比較をするようなことを言っていますが、性能がUPしているようなので余裕があれば実際に測定してみたいです。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2