Summary
Proxmox VE Ceph Quincy(17.x) to Reef(18.x)のupgradeメモが出てきたので置いておきます。
基本は公式のアップグレード手順通り。
https://pve.proxmox.com/wiki/Ceph_Quincy_to_Reef
実際に作業したのは2024年11月末くらいのはず。
Cephのリリースノートは https://docs.ceph.com/en/latest/releases/reef/ ですね。
Note
ceph
コマンドは全ノードに適用されるので、どれか1つのノードで実行すればよいです。
Check versions
1
2
3
4
5
6
7
8
9
10
11
|
root@pve01:~# ceph mon dump
epoch 10
fsid 379c9ad8-dd15-4bf1-b9fc-f5206a75fe3f
last_changed 2023-11-27T11:41:43.050564+0900
created 2017-11-24T23:57:30.396282+0900
min_mon_release 17 (quincy)
election_strategy: 1
0: [v2:192.168.122.26:3300/0,v1:192.168.122.26:6789/0] mon.pve01
1: [v2:192.168.122.27:3300/0,v1:192.168.122.27:6789/0] mon.pve02
2: [v2:192.168.122.28:3300/0,v1:192.168.122.28:6789/0] mon.pve03
dumped monmap epoch 10
|
Set the ’noout’ flag
Package upgrade
これは全ノードで実施します。なお、Ceph以外のアップデートが入り込まないように、Cephのバージョン更新前にシステム側のアップデートを終えてから作業する方が安全でしょう。
1
2
3
4
5
|
root@pve01:~# sed -i 's/quincy/reef/' /etc/apt/sources.list.d/ceph.list
root@pve01:~# cat /etc/apt/sources.list.d/ceph.list
deb http://download.proxmox.com/debian/ceph-reef bookworm no-subscription
root@pve01:~# apt update
root@pve01:~# apt full-upgrade
|
Restart the monitor daemon
再起動前の状態を確認します。placement groupsの警告は動作自体にはさほど影響しないので無視します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
root@pve01:~# ceph -s
cluster:
id: 379c9ad8-dd15-4bf1-b9fc-f5206a75fe3f
health: HEALTH_WARN
noout flag(s) set
2 pools have too many placement groups
services:
mon: 3 daemons, quorum pve01,pve02,pve03 (age 21h)
mgr: pve01(active, since 21h), standbys: pve02, pve03
mds: 1/1 daemons up, 2 standby
osd: 3 osds: 3 up (since 21h), 3 in (since 2y)
flags noout
data:
volumes: 1/1 healthy
pools: 4 pools, 129 pgs
objects: 253.54k objects, 952 GiB
usage: 2.2 TiB used, 3.2 TiB / 5.5 TiB avail
pgs: 129 active+clean
io:
client: 341 B/s rd, 989 KiB/s wr, 0 op/s rd, 36 op/s wr
|
monitorを再起動して、1台ずつ問題ないことを確認しながら進めます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
root@pve01:~# systemctl restart ceph-mon.target
root@pve01:~# systemctl status ceph-mon.target
● ceph-mon.target - ceph target allowing to start/stop all ceph-mon@.service instances at once
Loaded: loaded (/lib/systemd/system/ceph-mon.target; enabled; preset: enabled)
Active: active since Fri 2024-11-29 22:28:51 JST; 17s ago
Nov 29 22:28:51 pve01 systemd[1]: Reached target ceph-mon.target - ceph target allowing to start/stop all ceph-mon@.service >
root@pve01:~# ceph -s
cluster:
id: 379c9ad8-dd15-4bf1-b9fc-f5206a75fe3f
health: HEALTH_WARN
noout flag(s) set
2 pools have too many placement groups
services:
mon: 3 daemons, quorum pve01,pve02,pve03 (age 1.1534s)
mgr: pve01(active, since 21h), standbys: pve02, pve03
mds: 1/1 daemons up, 2 standby
osd: 3 osds: 3 up (since 21h), 3 in (since 2y)
flags noout
data:
volumes: 1/1 healthy
pools: 4 pools, 129 pgs
objects: 253.54k objects, 952 GiB
usage: 2.2 TiB used, 3.2 TiB / 5.5 TiB avail
pgs: 129 active+clean
io:
client: 1.3 KiB/s rd, 572 KiB/s wr, 0 op/s rd, 18 op/s wr
root@pve01:~# ceph versions
{
"mon": {
"ceph version 17.2.7 (eccf199d63457659c09677399928203b7903c888) quincy (stable)": 2,
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 1
},
"mgr": {
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 3
},
"osd": {
"ceph version 17.2.7 (eccf199d63457659c09677399928203b7903c888) quincy (stable)": 3
},
"mds": {
"ceph version 17.2.7 (eccf199d63457659c09677399928203b7903c888) quincy (stable)": 3
},
"overall": {
"ceph version 17.2.7 (eccf199d63457659c09677399928203b7903c888) quincy (stable)": 8,
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 4
}
}
|
ここまで全部終わると、mon/mgrが18.2.4になります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
root@pve03:~# ceph versions
{
"mon": {
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 3
},
"mgr": {
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 3
},
"osd": {
"ceph version 17.2.7 (eccf199d63457659c09677399928203b7903c888) quincy (stable)": 3
},
"mds": {
"ceph version 17.2.7 (eccf199d63457659c09677399928203b7903c888) quincy (stable)": 3
},
"overall": {
"ceph version 17.2.7 (eccf199d63457659c09677399928203b7903c888) quincy (stable)": 6,
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 6
}
}
root@pve03:~# ceph mon dump | grep min_mon_release
dumped monmap epoch 11
min_mon_release 18 (reef)
|
Restart the OSD daemon on all nodes
次にOSDを再起動していきます。これはCephの実データ保存場所が一旦ダウンするので、回復には少しかかります。私の環境だと30秒くらいでしょうか。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
root@pve01:~# systemctl restart ceph-osd.target
root@pve01:~# systemctl status ceph-osd.target
● ceph-osd.target - ceph target allowing to start/stop all ceph-osd@.service instances at once
Loaded: loaded (/lib/systemd/system/ceph-osd.target; enabled; preset: enabled)
Active: active since Fri 2024-11-29 22:32:31 JST; 22s ago
Nov 29 22:32:31 pve01 systemd[1]: Reached target ceph-osd.target - ceph target allowing to start/stop all ceph-osd@.service >
root@pve01:~# ceph -s
cluster:
id: 379c9ad8-dd15-4bf1-b9fc-f5206a75fe3f
health: HEALTH_WARN
noout flag(s) set
1 osds down
1 host (1 osds) down
Degraded data redundancy: 253542/760626 objects degraded (33.333%), 112 pgs degraded
2 pools have too many placement groups
services:
mon: 3 daemons, quorum pve01,pve02,pve03 (age 2m)
mgr: pve01(active, since 3m), standbys: pve03, pve02
mds: 1/1 daemons up, 2 standby
osd: 3 osds: 2 up (since 10s), 3 in (since 2y)
flags noout
data:
volumes: 1/1 healthy
pools: 4 pools, 129 pgs
objects: 253.54k objects, 952 GiB
usage: 2.2 TiB used, 3.2 TiB / 5.5 TiB avail
pgs: 253542/760626 objects degraded (33.333%)
112 active+undersized+degraded
17 active+undersized
io:
client: 308 B/s rd, 2.0 MiB/s wr, 0 op/s rd, 69 op/s wr
recovery: 21 KiB/s, 1 objects/s
|
以下くらいの出力になるまで待てば良いでしょう。
1
2
3
4
5
|
root@pve01:~# ceph -s | grep -A3 health:
health: HEALTH_WARN
noout flag(s) set
2 pools have too many placement groups
|
全ノードで対応が完了したら、osdのバージョンも18.2.4で統一されたことが確認できました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
root@pve03:~# ceph versions
{
"mon": {
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 3
},
"mgr": {
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 3
},
"osd": {
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 3
},
"mds": {
"ceph version 17.2.7 (eccf199d63457659c09677399928203b7903c888) quincy (stable)": 3
},
"overall": {
"ceph version 17.2.7 (eccf199d63457659c09677399928203b7903c888) quincy (stable)": 3,
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 9
}
}
|
Disallow pre-Reef OSDs and enable all new Reef-only functionality
古いOSDが参加できないように、reef以上のバージョンを必須にしておきます。
Ceph 17.x以前しかサポートしていないノードをクラスタに参加させておきたい場合は指定しないケースもあるかもしれません。
1
|
ceph osd require-osd-release reef
|
Upgrade all CephFS MDS daemons
これはCephFSで使用しているファイルシステムで1つ1つ実行する必要があります。
1
2
|
root@pve01:~# ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
|
standby_replay
オプションを無効にします。
1
|
ceph fs set cephfs allow_standby_replay false
|
max_mds
を一時的に1に減らす必要があるらしいのですが、私の環境では max_mds
は1なのでそのままです。
1
2
|
root@pve01:~# ceph fs get cephfs | grep max_mds
max_mds 1
|
standby状態のMDS daemonsを停止します。
1
2
3
4
5
6
7
8
9
10
11
12
|
root@pve01:~# ceph fs status
cephfs - 3 clients
======
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active pve03 Reqs: 0 /s 878 46 17 16
POOL TYPE USED AVAIL
cephfs_metadata metadata 40.3M 1005G
cephfs_data data 49.8G 1005G
STANDBY MDS
pve02
pve01
MDS version: ceph version 17.2.7 (eccf199d63457659c09677399928203b7903c888) quincy (stable)
|
STANDBY MDSは pve01
と pve02
なので、その2台でMDSを停止します。
1
2
|
root@pve01:~# systemctl stop ceph-mds@pve01.service
root@pve02:~# systemctl stop ceph-mds@pve02.service
|
ACTIVEなMDS daemonsが1つだけ、RANKが0になっていることを確認して、残ったノードのMDS daemonを再起動します。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
root@pve03:~# ceph fs status
cephfs - 3 clients
======
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active pve03 Reqs: 0 /s 878 46 17 16
POOL TYPE USED AVAIL
cephfs_metadata metadata 40.3M 1005G
cephfs_data data 49.8G 1005G
MDS version: ceph version 17.2.7 (eccf199d63457659c09677399928203b7903c888) quincy (stable)
root@pve03:~# systemctl restart ceph-mds.target
root@pve03:~# ceph fs status
cephfs - 3 clients
======
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active pve03 Reqs: 0 /s 878 46 17 15
POOL TYPE USED AVAIL
cephfs_metadata metadata 40.4M 1005G
cephfs_data data 49.8G 1005G
MDS version: ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)
|
ACTIVEなMDS daemonsが18.2.4に更新されたので、最後にstopしていたMDS daemonsを起動します。
1
2
|
root@pve01:~# systemctl restart ceph-mds.target
root@pve02:~# systemctl restart ceph-mds.target
|
STANDBY MDSが復帰してきたら完了です。
1
2
3
4
5
6
7
8
9
10
11
12
|
root@pve03:~# ceph fs status
cephfs - 3 clients
======
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active pve03 Reqs: 0 /s 878 46 17 15
POOL TYPE USED AVAIL
cephfs_metadata metadata 40.4M 1005G
cephfs_data data 49.8G 1005G
STANDBY MDS
pve01
pve02
MDS version: ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)
|
Unset the ’noout’ flag and Completed!!
最後に noout
オプションを解除して、ステータスとバージョンに異状が無いことを確認したら完了です。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
root@pve01:~# ceph osd unset noout
noout is unset
root@pve01:~# ceph -s
cluster:
id: 379c9ad8-dd15-4bf1-b9fc-f5206a75fe3f
health: HEALTH_WARN
2 pools have too many placement groups
services:
mon: 3 daemons, quorum pve01,pve02,pve03 (age 25m)
mgr: pve01(active, since 27m), standbys: pve03, pve02
mds: 1/1 daemons up, 2 standby
osd: 3 osds: 3 up (since 19m), 3 in (since 2y)
data:
volumes: 1/1 healthy
pools: 4 pools, 129 pgs
objects: 253.55k objects, 952 GiB
usage: 2.2 TiB used, 3.2 TiB / 5.5 TiB avail
pgs: 129 active+clean
io:
client: 341 B/s rd, 1.3 MiB/s wr, 0 op/s rd, 33 op/s wr
root@pve01:~# ceph versions
{
"mon": {
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 3
},
"mgr": {
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 3
},
"osd": {
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 3
},
"mds": {
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 3
},
"overall": {
"ceph version 18.2.4 (2064df84afc61c7e63928121bfdd74c59453c893) reef (stable)": 12
}
}
|
お疲れ様でした。