Proxmox et l’arrêt des systèmes virtuels (“shutdown” sur l’interface)…

Dans Proxmox, quand on sélectionne une machine virtuelle, on a à sa disposition quelques actions possibles sur l’état de cette machine virtuelle : “Start” (si la machine n’est pas démarrée), “Shutdown“, “Stop” et “Reset“.

Je ne m’étendrai pas sur l’action “Start” (ça serait douloureux pour elle :-) ), ça démarre une machine virtuelle arrêtée.

L’action “Shutdown” permet d’arrêter proprement une machine virtuelle (l’équivalent par exemple de Démarrer -> Arrêter des Windows, ou de shutdown -h now d’un Unix).

L’action “Stop” correspondant à une coupure électronique de la machine virtuelle, un arrêt inconditionnel et brutal, pouvant dégrader le système de fichiers.

L’action “Reset“, comme son nom l’indique, réalise un équivalent d’une pression sur le bouton “Reset” d’une machine physique provoquant un redémarrage inconditionnel et brutal (là aussi, cela peut dégrader le système de fichiers).

Techniquement, quand on clique “Shutdown” pour une machine virtuelle, on envoie un signal ACPI correspondant à l’appui court sur le bouton d’alimentation (si j’ai bien compris), le système virtuel capte ce message et comprend qu’il faut s’arrêter proprement.

Note: J’ai constaté un petit souci de cohérence quand l’interface est configurée en français : “Shutdown” devient “Eteindre“, “Start” devient “Démarrer“, mais ni “Stop” ni “Reset” ni “Remove” (dont je n’ai pas parlé, mais OSEF) ne sont traduits.

J’ai constaté que 3 de mes machines virtuelles ne semblent pas à l’action “Shutdown” : 1 Windows 2008 Serveur et 2 Linux.

1. Windows (probablement toutes versions, mais dans mon cas, serveur) :

Les versions serveur des systèmes d’exploitation de Microsoft, ces derniers n’acceptent pas par défaut une demande d’arrêt “anonyme”, c’est-à-dire sans être connecté (avoir ouvert une session, quoi). Du coup, Windows Server 2008 par exemple ignore superbement le signal ACPI, et quand on arrête la machine physique, Windows se retrouve en situation de coupure de courant (“Chéri, ça va couper”). Il faut modifier un paramètre dans les “Stratégies de Sécurité Locale”, pour autoriser l’arrêt anonyme, en modifiant Stratégies locales > Options de Sécurité > Arrêt : permet au système d’être arrêté sans avoir à se connecter pour que ce soit sur Activé.

Un rapide essai en arrêtant la machine virtuelle montre que ça fonctionne. Cependant, à l’usage, ça ne fonctionne pas lorsque j’arrête le serveur. J’ai compris pourquoi grâce au forum de Proxmox, une fois encore. Quand j’ai fait le test de “Shutdown” en interactif, je venais de fermer ma session Windows, et la page de login était donc affichée de frais. Où est le problème ? L’économiseur d’écran activé par défaut sur l’écran de Login ne s’est pas encore déclenché, et n’a pas interféré. Attendons suffisamment de temps pour que cet économiseur d’écran s’active, et une pression sur “Shutdown” ne donnera rien. Sur le forum de Proxmox, certains indiquent que presser une seconde fois sur “Shutdown” finit par lancer l’arrêt de la machine virtuelle, mais je ne l’ai pas constaté…

Il faut donc désactiver l’économiseur d’écran sur la page de Login. Pour cela, il faut éditer la base de registres, et modifier (ou créer si ça n’existe pas, ce qui était mon cas) HKEY_USERS\.DEFAULT\Control Panel\Desktop\ScreenSaveActive (attention, type REG_SZ s’il faut créer l’entrée, c’est pas un entier…) pour qu’on y trouve la valeur 0.

2. Linux :

Sur 7 machines virtuelles Linux, 2 d’entre elles ne réagissent pas au signal d’arrêt du système. Les 2 sont des Ubuntu Server 10.04.1. La solution est évidente, une fois qu’on sait comment l’arrêt propre du système fonctionne avec Proxmox, c’est-à-dire par signal ACPI.

Ubuntu Server 10.04 n’installe pas le démon acpid par défaut. Il faut donc faire ceci :

$ sudo apt-get install acpid

qui va ainsi installer le démon et le démarrer. A partir de là, le “Shutdown” va fonctionner parfaitement.

A noter que lors du reboot du serveur physique (ou de son arrêt), Proxmox lance le signal ACPI à toutes les machines virtuelles en activité, et va attendre 3 minutes que ces dernières aient terminé leur arrêt, délai au-delà duquel un “Stop” sauvage sera actionné pour terminer brutalement les quelques machines virtuelles qui n’auraient pas interprété le signal ACPI (ou n’auraient pas eu le temps de terminer le travail en 3 minutes). Je soupçonne mon serveur Windows 2008 de ne pas réussir justement à s’arrêter dans les 3 minutes, car je continue à avoir le message “d’un arrêt imprévu du serveur” (je ne sais plus exactement le message, mais c’est la première fenêtre qui s’ouvre pour indiquer la raison de cet arrêt) quand je me connecte pour la première fois après démarrage… Mais je n’ai pas réessayé depuis le changement de processeur du serveur physique, qui peut apporter du mieux à ce niveau. Quoi qu’il en soit, si le problème persiste et que je trouve un moyen d’allonger le délai, je l’indiquerai ici même.

This entry was posted in KVM, Proxmox, Technologie, Virtualisation and tagged , , . Bookmark the permalink.

Laisser un commentaire