Quand un redémarrage est-il nécessaire?

27

Outre la mise à niveau du noyau, y a-t-il des changements dans un système Linux qui nécessitent un redémarrage? Je sais qu'il y a des situations où un redémarrage facilite les choses, mais y en a-t-il qui ne peuvent être accomplies qu'avec un redémarrage?

Pour clarifier: je pense à un système de bureau ou de serveur typique qui ne souffre pas d'un dysfonctionnement matériel.

marque
la source
3
tout peut être fait sans redémarrage. même changer le noyau peut être fait en utilisant ksplice afin que vous puissiez échanger à chaud votre noyau. La seule chose que vous devez prendre en compte est le fait que tout faire sans redémarrer peut être très complexe
Kiwy
4
Votre question est très large, car "système Linux" peut signifier beaucoup de choses très différentes.
Zrin
"Tout changement" peut également signifier beaucoup de situations différentes. La récupération à partir d'un disque dur défaillant faisant partie d'un miroir MD est-elle un tel changement? Si oui, alors - malheureusement - cela nécessitera parfois un redémarrage, car par exemple, certaines pannes de disque dur (sur certains contrôleurs de disque dur) peuvent rendre le système insensible. Mais vous ne demandez probablement pas de tels "changements" ...
Zrin
3
@Kiwy Techniquement, ksplice ne change pas le noyau . Ksplice permet de patcher un noyau en cours d'exécution pendant qu'il est en cours d'exécution. Vous pensez peut-être à kexec , qui permet de charger une nouvelle image du noyau "sur" un noyau en cours d'exécution en mémoire.
Thomas Nyman
Cela me rappelle que Windows XP (je ne suis jamais allé au-delà) ne ferme jamais le redémarrage même s'il vient de mettre à jour IE8 (ou n'importe quel numéro) qui n'a pas été ouvert depuis 4 ans, depuis l'installation de Windows et donc la nécessité de télécharger un navigateur.
Shahbaz

Réponses:

44

Quelques choses me viennent à l'esprit:

  • Récupérer d'une panique du noyau

    Une panique du noyau, par définition, ne peut pas être récupérée sans redémarrer le noyau.

  • Récupérez des blocages qui vous laissent sans accès au terminal

    Si le système ne répond pas et que vous êtes bloqué sans moyen d'émettre des commandes pour récupérer, la seule chose que vous pourriez faire est de redémarrer. En règle générale, vous souhaiterez éviter les cycles d'alimentation manuels. Pour ces types de situations, le noyau Linux prend en charge Magic SysRq qui peut être utilisé pour redémarrer la machine en cas d'urgence.

    Tant que l' CONFIG_MAGIC_SYSRQoption a été activée dans la configuration du noyau et que l' kernel.sysrq sysctloption est activée, vous pouvez émettre des commandes directement vers le noyau avec des combinaisons de touches SysRq magiques:

    Notez que Alt+ SysRqci-dessous signifie appuyer et maintenir enfoncé Alt , puis appuyer et maintenir SysRq (généralement la PrintScrntouche).

    1. Alt+ SysRq+ r: reprendre le contrôle du clavier
    2. Alt+ SysRq+ e: envoyer SIGTERMà tous les processus, sauf initen leur donnant une chance de se terminer avec élégance
    3. Alt+ SysRq+ i: envoyer SIGKILLà tous les processus, sauf initen les forçant à se terminer
    4. Alt+ SysRq+ s: tentative de synchronisation de tous les systèmes de fichiers montés
    5. Alt+ SysRq+ u: remonter tous les systèmes de fichiers en lecture seule
    6. Alt+ SysRq+ b: redémarrer, ou

      Alt+ SysRq+ o: arrêt

    Un mnémonique pour les combinaisons de touches SysRq magiques pour tenter un redémarrage gracieux est:

    " R eboot E ven I f S ystem U tterly B roke "

    Pour les serveurs sans tête, il existe même une cible iptables permettant des séquences SysRq distantes sur un réseau.

  • Récupérer de l'état non amorçable

    Si le système a déjà été amené dans un état où un démarrage normal n'est pas possible (par exemple à la suite d'une mise à niveau du système échouée, d'un système de fichiers corrompu, etc.), la seule façon d'accéder à une console de récupération sur le système peut être de redémarrer en utilisant les options de démarrage appropriées.

  • Modifier les paramètres du noyau au démarrage

    Certains paramètres du noyau (par exemple auditpour activer / désactiver l'audit du noyau) ne peuvent être définis que lorsque le noyau est chargé au démarrage.

Thomas Nyman
la source
3
"Redémarrer même si le système est complètement cassé" Je préfère cette question au cas où, mais je ne pense pas que je l'oublierai jamais.
embedded.kyle
1
Il est peut-être intéressant de noter que vous pouvez sortir d'une panique en utilisant un kexec et éviter un redémarrage complet. Cela s'applique également à la sortie du point d'état non amorçable. (ce n'est en aucun cas la même chose, du moins sur un système x86). Cependant +1 pour le reste de cette réponse.
Vality
@Vality Merci pour votre commentaire. Si kexec implique un redémarrage, cela dépend peut-être dans une certaine mesure de son point de vue. La documentation de kdump, par exemple, décrit kexec-on-panic comme un redémarrage qui préserve l'image mémoire du noyau système. Quant au point sur l'état non amorçable, j'ai également considéré des choses comme une mauvaise configuration du chargeur de démarrage (par exemple, l'échec du chargement du noyau en premier lieu), où kexec n'aide pas. Étant donné la nature de la question, je pense qu'une certaine divergence d'opinion concernant la sémantique est inévitable.
Thomas Nyman
@ThomasNyman Merci pour votre réponse détaillée, en regardant la question que vous avez raison je pense. Je pense que parler de kexec compliquera probablement inutilement les choses pour le public cible ou cette question. Et vous faites également un bon point concernant les erreurs du chargeur de démarrage.
Vality
Je n'avais jamais remarqué ce petit SysRq écrit sous écran d'impression! C'est génial. J'aimerais avoir su cela quand j'apprenais la programmation des modules du noyau!
Shahbaz
2

Il y a deux fois où je peux penser où je voudrais redémarrer:

  1. Quand je dois m'assurer que le système peut démarrer dans le bon état.

    J'ai déjà travaillé sur un système sur lequel un démon avait été configuré pendant son fonctionnement. Après avoir fonctionné pendant quelques années, une panne de courant l'a fait redémarrer, mais le démon ne faisait pas partie du processus de démarrage et personne ne savait comment il avait été configuré des années plus tôt. Le système était en panne pendant des jours pendant que nous trouvions comment le reconfigurer.

    En fait, le redémarrage est le seul moyen de savoir avec certitude que votre système redémarrera correctement après une panne de courant.

  2. Lorsqu'une bibliothèque système a été mise à jour.

    Disons qu'une faille de sécurité majeure a été découverte dans une bibliothèque partagée avec de nombreuses applications / serveurs du système. Vous pouvez mettre à jour la bibliothèque sans redémarrer, mais combien de processus sont toujours en cours d'exécution avec la bibliothèque non sécurisée chargée? Vous pouvez minutieusement redémarrer n'importe quoi en utilisant l'ancienne bibliothèque (si vous pouvez le comprendre), mais cela est sujet aux erreurs et peut prendre plus de temps que le redémarrage.

    Le redémarrage est le meilleur moyen de s'assurer que tous les processus en cours d'exécution n'utilisent toujours pas l'ancienne bibliothèque de bogues.

Gabe
la source
Il existe de meilleures façons de trouver tous les binaires en fonction d'une certaine bibliothèque si vous utilisez un bon gestionnaire de packages. revdep-rebuilt de Gentoo me vient à l'esprit.
Spidey
1
@Spidey: Une fois que vous avez reconstruit ces fichiers binaires, comment vous assurez-vous qu'aucun ancien processus ne s'exécute avec la bibliothèque de bogues?
Gabe
1
Comment savez-vous quels démons ont les bibliothèques incriminées chargées?
Gabe
1
@Gabe Vous pouvez par exemple vérifier quels processus ont les bibliothèques mappées à leur espace mémoire lsofavant de mettre à niveau les bibliothèques.
Thomas Nyman
1
@Gabe Bien sûr, et bien que je convienne que c'est une très bonne raison de redémarrer, l'OP ne demande pas explicitement dans quels cas un redémarrage est plus conventient, mais quand un redémarrage est absolument nécessaire .
Thomas Nyman
0

Si vous voulez dire des changements prévus dans la configuration logicielle et supposez un matériel fonctionnant parfaitement (je ne l'ai pas encore vu) et un logiciel sans bogue (vous savez ...), alors seul un bogue dans le noyau ou un pilote vous forcerait à redémarrer. :)

A part ça ... Je ne sais pas s'il serait possible de remplacer initsans passer en mode mono-utilisateur et faire de la magie qui n'est pas très différente d'un redémarrage.

Zrin
la source