2010-12-13 81 views
1

Si vous mettez à jour, quels types de problèmes peuvent se produire avant de redémarrer? Cela arrive particulièrement fréquemment si vous utilisez la mise à niveau sans surveillance pour appliquer des correctifs de sécurité.Mises à jour sans redémarrage - quels types de problèmes se produisent dans la pratique?

Les objets partagés sont remplacés et il est donc possible que les programmes ne soient plus synchronisés entre eux.

Combien de temps pouvez-vous aller en toute sécurité avant de redémarrer?

Précision:

Ce que je voulais dire par « programmes peuvent-ils sortir de la synchronisation avec l'autre » est que l'un binaire a la version antérieure de l'objet partagé et une instance nouvellement lancé a la version plus récente du objet partagé. Il me semble que si ces versions sont incompatibles, les deux binaires ne peuvent pas interagir correctement.

Et cela arrive-t-il souvent en pratique?

Plus clarification:

Ce que je veux en venir est plus le long des lignes que les installateurs commencent généralement/services d'arrêt qui dépendent d'une bibliothèque partagée afin qu'ils obtenir la nouvelle version d'une API. S'ils obtiennent toutes les dépendances, alors vous êtes probablement d'accord. Mais les gens voient-ils souvent les dépendances manquantes?

Si un service est écrit pour prendre en charge de manière compatible toutes les versions précédentes de l'API, cela ne posera pas de problème. Mais je soupçonne que souvent ce n'est pas fait.

S'il y a des mises à jour de noyau, particulièrement s'il y a des changements ABI incompatibles, je ne vois pas comment vous pouvez obtenir toutes les dépendances. Je cherchais de l'expérience avec la question de savoir si et comment les choses «basculeraient» et si les gens ont observé cela en pratique, que ce soit pour les mises à jour du noyau ou pour les mises à jour de bibliothèque/paquet.

Oui, cela aurait probablement dû être mis en ServerFault ...

+1

http://serverfault.com/ est le meilleur endroit pour votre question. – gertas

+1

Oups. Un moyen de le déplacer? – Traveler

Répondre

3

Il existe deux versions d'un fichier exécutable à tout moment dans le temps; celui en mémoire et celui en disque. Lorsque vous mettez à jour, celui sur le disque est remplacé; celui en mémoire est l'ancien. Si c'est un objet partagé, il reste là jusqu'à ce que chaque application qui l'utilise se ferme; Si c'est le noyau, il reste là jusqu'à ce que vous redémarriez.

Sans ambages, s'il s'agit d'une faille de sécurité pour laquelle vous mettez à jour, la vulnérabilité persiste tant que vous n'avez pas chargé la version corrigée (nous l'espérons). Donc, si c'est un noyau, vous n'êtes pas en sécurité jusqu'à ce que vous redémarriez. Si c'est un objet partagé, un redémarrage garantit la sécurité.

Fondamentalement, je dirais que cela dépend de la catégorie de la vulnérabilité. Si c'est la sécurité, redémarrez tout ce qui est affecté. Sinon, eh bien, à moins que le bug ne vous nuise, je ne m'inquiéterais pas. Si c'est le noyau, je redémarre toujours.

+1

Pour les binaires et les bibliothèques partagées, vous pouvez utiliser 'lsof /' pour déterminer quels processus ont (anciennement supprimés du disque) d'anciennes versions encore chargées en mémoire, et à partir de là, éventuellement redémarrer uniquement les services affectés. En ce qui concerne le noyau, j'utilise [Ksplice] (http://www.ksplice.com/) pour mettre à jour sans redémarrer. – ephemient

+0

Il pourrait y avoir plus de deux versions, car vous pourriez avoir plusieurs copies du même exécutable en cours d'exécution suite à plus d'une mise à jour.De même, "en mémoire" et "sur disque" est extrêmement flou face au chargement de la demande et à la mémoire virtuelle. – MarkR

+0

Oui, le redémarrage ou le redémarrage d'applications est requis pour obtenir le correctif de sécurité. Mais si quelqu'un ne redémarre pas, y a-t-il des situations où cela peut faire échouer les choses ou travailler étrangement? – Traveler