Proxmox VE 8.1と一緒にリリースされたCeph Reefにアップグレードを実施しました。
その時の手順メモになります。
環境
- バージョンアップ前:Ceph Quincy 17.2.7
- バージョンアップ後:Ceph Reef 18.2.0
手順
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
途中の画面
モニターデーモンの再起動
全てのノードでアップグレードした後に、
モニターが実行されている各ノードでモニターを再起動します。
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
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
正常性確認して完了
オールグリーンを確認してアップグレード完了です!
本家もQuincy と Reef のパフォーマンス比較をするようなことを言っていますが、性能がUPしているようなので余裕があれば実際に測定してみたいです。