[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Comment éteindre un serveur proprement pour permettre le redémarrage automatique ?





Le 20/10/2022 à 15:27, Olivier a écrit :
Suite à une nouvelle sollicitation, je déterre ce vieux fil de discussion.

J'ai expérimenté avec un NUC, dont l'option After Power Failure du
BIOS était valorisée à Last Stateroot

1. J'exécute echo freeze > /sys/power/state
La machine s'arrête (brutalement, semble-t-il)
Je débranche puis rebranche l'alimentation (comme si un onduleur l'avait fait)
Le serveur démarre avec un boot quasi normal car il affiche
"Recovering journal".

Le freeze ne fait que mettre la machine en 'pause'.
le système ne vide pas ses caches et donc couper le courant ensuite te fera sûrement perdre des données.


Pour répondre à ton scénario en tenant compte du point 3 B, il faut changer la façon dont ton serveur répond à un signal d'avertissement de l'onduleur.

la commande shutdown a plusieurs options dont une qui arrête bien le serveur mais ne coupe pas l'alimentation:
shutdown -H ........

dans ce cas, le serveur reste allumé mais le système linux est complètement arrêté.
Quand l'onduleur coupera le courant, il n'y aura aucune 'casse'.
Et au rétablissement du courant, la machine se rallumera normalement.

Sinon, un passage en hibernation profonde est aussi valable.


2. Idem avec echo standby > /sys/power/state

normal, le système est simplement 'suspendu' et ne vide pas ses caches ni tout le reste, c'est tout aussi risqué que le freeze.


3. L'option After Power Failure est changée à StayOn et l'hibernation
est déclenché par poweroff.
La machine est dans un état inabituel: le bouton power reste allumé
mais l'écran est quasi-vide (un simple tiret en haut à gauche).
Je débranche puis rebranche l'alimentation (comme si un onduleur l'avait fait)
Le serveur démarre avec un boot normal (il n'affiche pas "Recovering journal").

Attention de bien attendre que le système ait fini sa procédure de mise en hibernation. Suivant ce qui est chargé en mémoire, ca peut prendre du temps pour tout écrire dans le swap.

Si l'hibernation s'est bien déroulée, c'est que l'acpi n'est pas correctement géré par ton système qui ne coupe alors pas l'alimentation.
Ou qu'un paramétrage est incorrect...


Un moyen de vérifier si l'hibernation fonctionne est de laisser un ou plusieurs logiciels ouverts avant l'hibernation.

Au rallumage, tu dois voir des messages indiquant une reprise suite à hibernation et le système doit te remettre exactement ce que tu avais avant d'hiberner


A. Existe-t-il une commande ou option de configuration sous Linux pour
que le passage à l'état freeze évite le "Recovering journal" ? Qu'en
pensez-vous ?


Si tu peux exécuter une commande avant, un 'sync' devrait déja améliorer la situation. Il est peut-être possible de forcer le système à vider ses caches très régulièrement, mais ce n'est clairement pas propre.

Sinon il faut démonter les systèmes de fichiers.

Jouer avec le feu ne t'amènera que des problèmes.


B. Comme l'a pointé Sébastien, un point important dans mon scenario
est que dans tous les cas, l'onduleur coupe le courant en aval une
fois qu'il a avertit d'une coupure puis respecte une temporisation
avant de le rétablir en avant, même si le courant en amont est revenu
la coupure en aval.

voir ma réponse du début (point 1)

A noter que la règle est plutôt de configurer l'onduleur pour qu'il ne rétablisse le courant qu'à partir d'un niveau de charge considéré comme 'safe'.

Si tu préfères, le niveau de charge doit garantir qu'en cas de coupure inopinée
- il y ait assez de courant pour que ton serveur ait le temps de démarrer.
- que le service NUT soit actif pour recevoir les alertes de l'onduleur
- que ton serveur ai le temps de s'arrêter
.
Je n'ai jamais eu à travailler sur ce point, mais si l'onduleur envoie un signal quand il tombe à 10 %, on peut considérer que qu'il en faut bien plus pour un rallumage en toute sécurité...



Sinon, un point qui ne concerne que l'onduleur, il faut vraiment tester la batterie: j'ai déjà eu des onduleurs qui coupaient sauvagement bien avant d'atteindre le seuil minimum.
Je n'ai pas eu le temps d'analyser le problème, mais cela pouvait venir:
- soit d'une batterie défectueuse
- soit d'un besoin de recalibrage de l'onduleur.


Reply to: