從Mimic或Luminous升級?
備注?
- 在從Luminous升級到Nautilus的過程中, 在monitors升級到Nautilus 之后,將無法使用Luminous ceph-osd守護進程創建新的OSD。我們建議您在升級過程中避免添加或更換任何OSD。
- 我們建議您在升級過程中避免創建任何RADOS pools。
- 您可以使用該命令
ceph versions
監視每個階段的升級進度,該命令將告訴您每種類型的守護程序正在運行哪些ceph版本。
說明?
-
如果您的群集最初安裝的是Luminous 之前的版本,請確保在運行Luminous 時至少完成了所有PG 的完全清理。如果不這樣做,將導致監視器守護程序在啟動時拒絕加入quorum,從而使它們無法正常運行。
如果您不確定您的Luminous集群是否已完成所有PG的完全清理,您可以通過運行指令來檢查集群的狀態:
# ceph osd dump | grep ^flags
為了能夠升級到Nautilus,您的OSD map必須包括的
recovery_deletes
和purged_snapdirs
標志。如果您的OSD map不包含這兩個標志,您要等待大約24-48小時,在標準群集配置中應該有足夠的時間將所有放置組至少擦洗一次,然后重復上述過程要重新檢查。
但是,如果您剛剛完成了對Luminous的升級并希望在短時間內繼續使用Mimic,則可以使用單行shell命令強制在所有放置組上進行清理,例如:
# ceph pg dump pgs_brief | cut -d " " -f 1 | xargs -n1 ceph pg scrub
您要考慮到這種強制擦洗,可能會對您的Ceph客戶端性能產生負面影響。
確保您的群集穩定且健康(無需關閉或恢復OSD)。(可選,但建議。)
-
設置
noout
升級持續時間的標志。(可選,但建議。):# ceph osd set noout
-
通過安裝新軟件包并重新啟動monitor 守護程序來升級監視器。例如,在每個monitor 主機上:
# systemctl restart ceph-mon.target
一旦所有monitor都啟動,請通過
nautilus
在mon 映射中查找字符串來驗證monitor升級是否已完成。命令:# ceph mon dump | grep min_mon_release
應顯示:
min_mon_release 14 (nautilus)
如果不是,則表示尚未升級和重新啟動一個或多個monitor和/或quorum 不包括所有monitors。
-
ceph-mgr
通過安裝新軟件包并重新啟動所有manager來升級守護程序。例如,在每位經理主持人身上:# systemctl restart ceph-mgr.target
請注意,如果您使用的是Ceph Dashboard,則可能需要在升級包后單獨安裝ceph-mgr-dashboard。安裝腳本將自動為您重新啟動管理器守護程序。所以在這種情況下,您可以跳過重啟守護進程的步驟。
ceph-mgr
通過檢查驗證守護程序是否正在運行:ceph -s
# ceph -s ... services: mon: 3 daemons, quorum foo,bar,baz mgr: foo(active), standbys: bar, baz ...
-
通過安裝新軟件包并在所有OSD主機上重新啟動ceph-osd守護程序來升級所有OSD :
# systemctl restart ceph-osd.target
您可以使用或命令監視OSD升級的進度:
`ceph versions``ceph osd versions`
ceph osd versions
{
"ceph version 13.2.5 (...) mimic (stable)": 12,
"ceph version 14.2.0 (...) nautilus (stable)": 22,
}
-
如果在使用ceph-disk部署的集群中有任何OSD(例如,幾乎所有在Mimic發布之前創建OSD),您需要告訴ceph-volume承擔啟動守護進程的責任。在每個包含OSD的主機上,確保OSD當前正在運行,然后:
# ceph-volume simple scan # ceph-volume simple activate --all
我們建議在此步驟后重新啟動每個OSD主機,以驗證OSD是否自動啟動。
請注意,ceph-volume沒有與ceph-disk相同的熱插拔功能,其中通過udev事件自動檢測新連接的磁盤。如果在運行上述
scan
命令時OSD當前未運行,或者基于ceph磁盤的OSD被移動到新主機,或者重新安裝主機OSD,或者/etc/ceph/osd
目錄丟失,則需要掃描每個ceph-disk OSD的數據分區。例如,:# ceph-volume simple scan /dev/sdb1
輸出包括啟用OSD 的appopriate 命令。
`ceph-volume simple activate`
-
升級所有CephFS MDS守護進程。對于每個CephFS文件系統,
-
將等級數減少到1.(如果您計劃稍后恢復,請先記下MDS守護進程的原始數量。):
# ceph status # ceph fs set <fs_name> max_mds 1
-
等待群集通過定期檢查狀態來停用任何非零等級:
# ceph status
-
在適當的主機上使所有備用MDS守護程序脫機:
# systemctl stop ceph-mds@<daemon_name>
-
確認只有一個MDS在線且FS為0級:
# ceph status
-
通過安裝新軟件包并重新啟動守護程序來升級最后剩余的MDS守護程序:
# systemctl restart ceph-mds.target
-
重新啟動脫機的所有備用MDS后臺駐留程序:
# systemctl start ceph-mds.target
-
恢復卷的原始值
max_mds
:# ceph fs set <fs_name> max_mds <original_max_mds>
-
-
通過升級軟件包并在所有主機上重新啟動守護程序來升級所有radosgw守護程序:
# systemctl restart radosgw.target
-
通過禁止前Nautilus OSD并啟用所有新的Nautilus功能來完成升級:
# ceph osd require-osd-release nautilus
-
如果您
noout
在開頭設置,請務必將其清除:# ceph osd unset noout
-
驗證群集是否健康。
`ceph health`
-
要啟用新的v2網絡協議,請輸入以下命令:
ceph mon enable-msgr2
這將指示綁定到舊v1協議的舊默認端口6789的所有監視器也綁定到新的3300 v2 協議端口。要查看是否所有monitors都已更新,請:
ceph mon dump
并驗證每個監視器都 列出了a v2:
和v1:
地址 。
-
對于已升級的每個主機,您應更新
ceph.conf
文件,以便它指定無監控端口(如果您在默認端口上運行監控器)或明確引用v2和v1地址和端口。如果僅列出v1 IP和端口,事情仍然有效,但每個CLI 實例化或守護進程在學習監視器之后還需要重新連接,并且還會說v2協議,減慢速度并阻止完全轉換到v2協議。這也是將任何配置選項完全轉換ceph.conf
到集群配置數據庫的好時機。在每臺主機上,您可以使用以下命令將任何選項導入monitors :ceph config assimilate-conf -i /etc/ceph/ceph.conf
您可以使用以下命令查看群集的配置數據庫:
ceph config dump
為每個主機創建一個最小但足夠的ceph.conf
:
ceph config generate-minimal-conf > /etc/ceph/ceph.conf
請確保僅在已升級到Nautilus的主機上使用此新配置,因為它可能包含一個mon_host
值,該值 包含 Nautilus只能理解的IP地址的新v2:
和v1:
前綴 。 有關更多信息,請參閱更新ceph.conf和mon_host。
-
考慮啟用telemetry module向 Ceph 上游開發人員發送匿名使用統計信息和崩潰信息。要查看將要報告的內容(實際上沒有向任何人發送任何信息),:
ceph mgr module enable telemetry ceph telemetry show
如果您對報告的數據感到滿意,則可以選擇使用以下命令自動報告高級群集元數據:
ceph telemetry on
有關telemetry module的更多信息,請參閱文檔。