Mise à niveau de version Ceph¶
Objectif : passer Ceph d'une version majeure à la suivante sans interruption de service, en redémarrant les démons dans l'ordre imposé : MON, puis MGR, puis OSD (un nœud à la fois), puis MDS, sous drapeau noout. Exemple de référence : Reef 18.2 → Squid 19.2 (étape obligatoire sur PVE 8 avant de passer à PVE 9). Le passage Squid 19.2 → Tentacle 20.2 sur PVE 9.1+ suit le même schéma. Une mise à niveau majeure de Ceph est réalisée par le MSP en N2 et N3 ; en N1, le client l'exécute avec le conseil du support. Les mises à jour mineures (19.2.x) suivent RB-08.
Avant de toucher la prod
- Lire le guide officiel de la version visée : Ceph Reef to Squid ou Ceph Squid to Tentacle, et les notes de version Ceph.
- Versions minimales atteintes (
pveversion -v) : pour Reef → Squid, PVE 8.2+,pve-manager8.2.8+, Ceph 18.2.4-pve3+ ; pour Squid → Tentacle, PVE 9.1+,pve-manager9.1.4+, Ceph 19.2.3-pve3+. -
ceph -senHEALTH_OK, 100 %active+clean, aucunRECENT_CRASHnon expliqué. -
ceph versions: tous les démons sur la même version mineure de départ. - Sauvegardes PBS récentes et vérifiées des VMs critiques ; synchronisation MSP à jour.
- Fenêtre de maintenance validée ; dépôt cible accessible (abonnement actif pour enterprise).
- Testé au préalable sur un cluster de lab, ou validé par le MSP.
Étapes¶
Les commandes ceph … se lancent une seule fois, depuis n'importe quel nœud. Les commandes sed, apt et systemctl se lancent sur chaque nœud.
1. Poser le drapeau noout¶
2. Changer le dépôt Ceph et mettre à jour les paquets (chaque nœud)¶
# Reef → Squid (PVE 8) : fichier ceph.list (format une ligne) ou ceph.sources (deb822)
sed -i 's/reef/squid/' /etc/apt/sources.list.d/ceph.list
# Squid → Tentacle (PVE 9) : format deb822
sed -i 's/squid/tentacle/' /etc/apt/sources.list.d/ceph.sources
apt update
apt full-upgrade
Les démons continuent de tourner avec l'ancienne version tant qu'ils ne sont pas redémarrés. Une erreur 401 sur le dépôt enterprise se corrige par pvesubscription update --force.
3. Redémarrer les moniteurs, un nœud à la fois¶
Nœud → Ceph → Monitor → sélectionner le MON de pve01 → Restart. Attendre le quorum complet, puis pve02, puis pve03.
4. Redémarrer les managers¶
systemctl restart ceph-mgr.target # sur chaque nœud portant un MGR
ceph -s # mgr: un actif, des standbys
5. Redémarrer les OSD, un nœud à la fois¶
Nœud → Ceph → OSD → sélectionner chaque OSD du nœud → Restart. Attendre le retour de tous les PG en active+clean (seul noout reste signalé) avant le nœud suivant.
6. Verrouiller la nouvelle version des OSD¶
Uniquement quand tous les OSD tournent la nouvelle version. Sur Reef → Squid, le guide le place avant les MDS ; sur Squid → Tentacle, après.
7. Mettre à niveau les MDS (si CephFS)¶
ceph fs ls
ceph fs get cephfs | grep -E 'max_mds|allow_standby_replay' # noter les valeurs
ceph fs set cephfs allow_standby_replay false
ceph fs set cephfs max_mds 1 # si plusieurs MDS actifs
systemctl stop ceph-mds.target # sur les nœuds des MDS en attente
systemctl restart ceph-mds.target # sur le nœud du dernier MDS actif
systemctl start ceph-mds.target # relancer les MDS en attente
ceph fs set cephfs max_mds <valeur notée>
ceph fs set cephfs allow_standby_replay <valeur notée>
8. Retirer noout¶
Vérifications
ceph versions # mon, mgr, osd, mds : une seule version, 19.2.x (ou 20.2.x)
ceph -s # HEALTH_OK, aucun drapeau noout
ceph osd dump | grep require_osd_release # require_osd_release squid (ou tentacle)
ceph crash ls-new # vide
Migrer à chaud une VM de test entre deux nœuds et vérifier ses I/O.
Rollback
Il n'existe pas de retour arrière vers l'ancienne version une fois les MON redémarrés en nouvelle version, et encore moins après require-osd-release. Avant l'étape 3, on peut revenir au dépôt d'origine sans impact (les démons tournent encore l'ancienne version). Après, en cas de problème : laisser noout, ne pas poursuivre sur les autres nœuds, ouvrir un ticket P1/P2. La protection ultime reste la sauvegarde PBS et sa copie au MSP.
Pièges vus en support
- Redémarrer les OSD avant les MON : ordre interdit, risque de démons incompatibles.
- Redémarrer les OSD de deux nœuds en même temps : PG inactifs, VMs figées.
- Lancer
require-osd-releasealors qu'un OSD tourne encore l'ancienne version : il ne pourra plus rejoindre le cluster. - Oublier
ceph osd unset noout: les futures pannes de disque ne déclencheront plus de reconstruction. - Lancer
pve8to9avec Ceph encore en Reef : PVE 9 exige Squid au minimum, mettre Ceph à niveau d'abord. - Squid → Tentacle : sur des OSD créés en Octopus ou avant, la métadonnée (colonne META de
ceph osd df) peut gonfler ; consulter la section Known issues du wiki.
Quand ouvrir un ticket iTop
Planification de la mise à niveau (contrat N2/N3, ou conseil en N1) : P4, au moins deux semaines avant la fenêtre. MON qui ne rejoint pas le quorum, OSD qui ne redémarre pas, PG bloqués pendant l'opération : P1. Joindre ceph -s, ceph versions, ceph health detail, pveversion -v, journalctl -u ceph-osd@<id> -n 200.