9
votes

Point de contrôle / redémarrage à l'aide du vidage de noyau sous Linux

peut être mis en œuvre sur checkpoint / redémarrage à l'aide du vidage du noyau d'un processus? Le fichier principal contient une mémoire de mémoire complète du processus, donc en théorie, il devrait être possible de Restaurer le processus au même état dans lequel le noyau a été largué.


1 commentaires

En fait, je demande un processus particulier.La la table descripteur de fichier est maintenue par le noyau et ne se trouve donc pas dans l'espace d'adressage du processus, la restauration des descripteurs de fichiers peut être gênant.


4 Réponses :


6
votes

Non, ce n'est pas possible en général sans support spécial du noyau. Le noyau conserve beaucoup d'état par traitement, tel que la table descripteur de fichier, les objets IPC, etc.

Si vous étiez disposé à gagner beaucoup d'hypothèses de simplification, tels que aucun fichier ouvert, pas de prises ouvertes, pas d'objets IPC vivants, pas de régions de mémoire partagées, et plus encore, alors en théorie ce serait possible, mais dans la pratique, je ne crois pas que ce soit possible avec Linux, même avec ces concessions.


2 commentaires

Toutes les informations sont sur le DDR pourquoi n'est-il pas possible de restaurer la machine à l'état exact qu'il était avant le crash?


@ 0x90: Il est impossible de contrôler l'état entier, l'ECAUSE Les sockets, les IPCS, etc. ... dépendent non seulement du processus du point choisi, mais également de facteurs externes (autres processus, raccords Connections TCP, etc.)



10
votes

Oui, c'est possible. GNU EMACS Cela pour optimiser son temps de démarrage. Il charge un tas de fichiers LISP pour produire une image puis décharge un noyau qui peut être redémarré.

Il y a plusieurs années, j'ai créé un patch pour GNU FAIT 3,80 pour faire exactement la même chose (en utilisant le code emprunté à GNU emacs).

Avec ce correctif, vous avez une nouvelle option pour faire: make -dump . L'utilitaire lit maintenant votre Makefile , puis au lieu d'exécuter les règles, il produit un vidage de base qui peut être redémarré pour effectuer la construction réelle (évaluation de l'arborescence de règles analysée).

C'était une économie, car le projet était si important que le chargement de toutes les règles de fabrication de l'arbre source a fallu trente secondes! Avec cette optimisation, des constructions incrémentielles lancées presque instantanément, sans la pénalité de démarrage de la demi-minute.

aucun support de noyau n'est requis pour cela. Ce qui est requis, c'est la connaissance de la structure du fichier principal.

En plus de cette approche, il y avait un projet de point de contrôle de processus pour Linux il y a de nombreuses années (merveille ce qui est arrivé à cela).


3 commentaires

Pouvez-vous enrichir votre réponse avec un lien vers le code et d'autres références?


Je peux, mais cela prendrait du travail. Le patch faire n'a jamais été publié au public, afin de le trouver, je dois creuser certains disques archivés qui sont hors ligne. Le code de députage de base GNU emacs est facile à trouver dans le petit noyau de sources C.


Le non exec de EMACS ne vule pas un fichier noyau , mais mettant en œuvre des machines de tas de perstates, ce qui n'est pas exactement la même chose. L'affiche originale pourrait utiliser une bibliothèque de points de contrôle comme ftg.lbl.gov/projects/checkpointRestart Voir Aussi en.wikipedia.org/wiki/Checkperrying




0
votes

Debian a un certain nombre de packages que vous pourriez vouloir regarder:

  1. Blcr-Util - Outils d'espace utilisateur sur le point de contrôle et redémarrez des processus Linux

    Ceci est lié à la blog (Berkeley Lab Checkpoint / redémarrage), voir https://upc-bugs.lbl.gov/blcr/blcr/doc/html/faq.html#whatisblcr

    1. criu - Point de contrôle et restauration dans les utilisateurspace https://criu.org/main_page

      2.1 Docker -Supports de contrôle de contrôle dans les versions récentes, voir https://criu.org/docker

      2.1. Contenerd - Daemon pour contrôler Runc

      Ceci contient une installation de point de contrôle intéressant.

      Voir aussi Openvz qui prend en charge la migration en direct: https://openvz.org/checkpointing_and_live_migration


1 commentaires

news.ycomminator.com/item?id=12180914 Voir cet article avec beaucoup de discussion.