Dans un cluster Proxmox disposant d'un stockage distribué avec Ceph, il est important de respecter certaines étapes de préparation pour éviter la casse. La procédure ci-dessous a été jouée de nombreuses fois depuis 2020 sur différents clusters Proxmox (5 à 8) entre 2020 et 2025, avec les versions Ceph 14 à 18.

Avant tout, n'oubliez pas de sauvegarder régulièrement vos données et de tester la restauration. La procédure ci-dessous n'est pas infaillible, prenez donc vos précautions. Je remercie Matthieu avec qui j'ai découvert et validé cette procédure dans les années 2020-2021.

Préparer Ceph : activer des "global flags"

Pour activer les flags (qui sont des options pour le cluster Ceph), vous avez le choix entre la ligne de commande et l'interface web de Proxmox. Effectuez l'intégralité des manipulations avec une seule méthode, soit via l'interface web sinon par ligne de commandes, pour éviter des conflits ou une redondance dans les actions.

Interface web Proxmox

Depuis l'interface web d'un des nœuds Proxmox de votre cluster, activez les deux flags globaux suivants, dans le menu "Ceph > OSD > bouton "Manage Global Flags" :

  • noout : empêche Ceph de marquer les OSD indisponibles comme étant "out", évitant ainsi de déclencher une redistribution massive. C'est nécessaire puisque lorsque des serveurs sont éteints, leurs OSD sont hors ligne.
  • norebalance : désactive la redistribution des PG (Placement Groups) entre les OSD. En présence de moins d'OSD disponibles, Ceph va automatiquement rééquilibrer les PG, ce qui entraînerait une surcharge inutile et un risque accru en cas de sur-provisionnement du stockage.

Remarque : l'activation de ces options mettra votre cluster Ceph en état "HEALTH_WARN" pour signaler à la fois la présence de ces options et l'indisponibilité des OSD/hosts. C'est une information qui n'est pas critique à notre niveau, n'hésitez pas à aller voir les logs de Ceph pendant l'opération de maintenance pour vous assurer qu'aucune autre alerte se glisse en même temps.

Ligne de commande

Via SSH, connectez-vous en tant que root sur un serveur Proxmox de votre cluster. Deux commandes sont à effectuer uniquement sur un nœud du cluster proxmox pour activer ces flags à l'ensemble de votre cluster Ceph : ceph osd set noout et ceph osd set norebalance. Les options n'ont pas de sortie, effectuez alors la commande ceph status pour voir l'état du cluster Ceph. Celui-ci doit être désormais dans l'état "HEALTH_WARN".

Procédure de redémarrage

Comme Proxmox ne dispose pas (encore) d’un mode maintenance intégré, procédez de la manière suivante :

  1. Redémarrez les serveurs Proxmox un par un si vous avez des petits clusters (de 3 à 8 nœuds), soit en cliquant sur le bouton "reboot" depuis l'interface web, sinon via SSH en saisissant reboot. Ne redémarrez pas tous les serveurs en même temps, vous risquez de casser le quorum (outil corosync) et de mettre en défaut votre infrastructure. Attendez de voir de nouveau "up" le serveur redémarré dans l'interface web (ou via la ligne de commande pvecm status).
  2. Après chaque redémarrage, vérifiez que tous les OSD du serveur redémarré sont opérationnels (chaque OSD doit avoir le status "up" et "in"). Vous pouvez voir l'information soit depuis l'interface web (dans Proxmox, sélectionnez un serveur, puis cliquez sur "ceph" > "osd"), soit en ligne de commande ceph osd tree.
  3. Répétez les étapes 1 et 2 pour chaque serveur à redémarrer.

Finalisation

L'opération peut être fastidieuse si vous avez des clusters Proxmox disposant de nombreux serveurs. Lorsque vous avez plusieurs dizaines de machines, vous pouvez redémarrer plusieurs nœuds en même temps, mais surveillez bien l'état de corosync et de ceph.

Une fois tous les serveurs Proxmox redémarrés, désactivez les "global flags". Comme au début de l'article, effectuez la manipulation soit par l'interface web, sinon par ligne de commande en saisissant ceph osd unset noout puis
ceph osd unset norebalance.

Surveillez l'état du cluster Ceph pendant qu'il effectue un rééquilibrage rapide, via la commande ceph status. L'information est aussi visible dans le tableau de bord Ceph de l'interface web Proxmox. À la fin de la procédure, vous devez retrouver un état "HEALTH_OK".

Cette procédure doit être effectuée régulièrement pour maintenir vos clusters à jour. Les VM continueront de fonctionner normalement, sans interruption de service. Une fois le rebalance terminé, le cluster retourne à un état stable sans pertes de données ni surcharge inutile.

Share this post