IP-KVM via QEMU

IP-KVM via QEMU

Résoudre les problèmes de démarrage du système d'exploitation sur les serveurs sans KVM n'est pas une tâche facile. Nous créons nous-mêmes un KVM sur IP via une image de récupération et une machine virtuelle.

En cas de problèmes avec le système d'exploitation sur un serveur distant, l'administrateur télécharge l'image de récupération et effectue le travail nécessaire. Cette méthode fonctionne très bien lorsque la cause de l'échec est connue et que l'image de récupération et le système d'exploitation installés sur le serveur appartiennent à la même famille. Si la cause de l'échec n'est pas encore connue, vous devez surveiller la progression du chargement du système d'exploitation.

KVM à distance

Vous pouvez accéder à la console du serveur à l'aide d'outils intégrés tels que IPMI ou Intel® vPro™, ou via des périphériques externes appelés IP-KVM. Il existe des situations dans lesquelles toutes les technologies répertoriées ne sont pas disponibles. Cependant, ce n’est pas la fin. Si le serveur peut être redémarré à distance dans une image de récupération basée sur un système d'exploitation Linux, le KVM sur IP peut alors être rapidement organisé.

L'image de récupération est un système d'exploitation à part entière situé dans la RAM. Ainsi, nous pouvons exécuter n'importe quel logiciel, y compris les machines virtuelles (VM). Autrement dit, vous pouvez lancer une machine virtuelle dans laquelle le système d'exploitation du serveur s'exécutera. L'accès à la console VM peut être organisé, par exemple, via VNC.

Pour exécuter le système d'exploitation du serveur dans une machine virtuelle, vous devez spécifier les disques du serveur en tant que disques de machine virtuelle. Dans les systèmes d'exploitation de la famille Linux, les disques physiques sont représentés par des périphériques blocs de la forme / dev / sdX, avec lesquels vous pouvez travailler comme des fichiers normaux.

Certains hyperviseurs, tels que QEMU et VirtualBox, vous permettent de stocker les données de la VM sous une forme « brute », c'est-à-dire uniquement les données de stockage sans métadonnées de l'hyperviseur. Ainsi, la VM peut être lancée en utilisant les disques physiques du serveur.

Cette méthode nécessite des ressources pour lancer l'image de récupération et la VM qu'elle contient. Cependant, si vous disposez de quatre Go ou plus de RAM, cela ne posera pas de problème.

Préparation de l'environnement

Vous pouvez utiliser un programme léger et simple comme machine virtuelle QEMU, qui le plus souvent ne fait pas partie de l'image de récupération et doit donc être installé séparément. L'image de récupération que nous proposons aux clients est basée sur Arch Linux, qui utilise un gestionnaire de paquets pacman.

La première chose que vous devez faire est de vous assurer que l'image de récupération utilise la dernière version du logiciel. Vous pouvez vérifier et mettre à jour tous les composants du système d'exploitation avec la commande suivante :

pacman -Suy

Après la mise à jour, vous devez installer QEMU. La commande d'installation via pacman ressemblera à ceci :

pacman -S qemu

Vérifions que qemu est correctement installé :

root@sel-rescue ~ # qemu-system-x86_64 --version
QEMU emulator version 4.0.0
Copyright (c) 2003-2019 Fabrice Bellard and the QEMU Project developers

Si tout est ainsi, l'image de récupération est prête à fonctionner.

Démarrer une machine virtuelle

Tout d'abord, vous devez décider de la quantité de ressources allouées à la VM et connaître les chemins d'accès aux disques physiques. Dans notre cas, nous allouerons deux cœurs et deux gigaoctets de RAM à la machine virtuelle, et les disques seront localisés en cours de route / Dev / sda и / Dev / sdb. Démarrons la VM :

qemu-system-x86_64
-m 2048M
-net nic -net user
-enable-kvm
-cpu host,nx
-M pc
-smp 2
-vga std
-drive file=/dev/sda,format=raw,index=0,media=disk
-drive file=/dev/sdb,format=raw,index=1,media=disk
-vnc :0,password
-monitor stdio

Un peu plus de détails sur la signification de chacun des paramètres :

  • -m 2048M — allouer 2 Go de RAM à la VM ;
  • -net nic -net utilisateur — ajout d'une simple connexion au réseau via un hyperviseur utilisant NAT (Network Address Translation) ;
  • -activer-kvm — activer la virtualisation complète KVM (Kernel Virtual Machine) ;
  • -hôte du processeur — nous disons au processeur virtuel d'obtenir toutes les fonctionnalités du processeur du serveur ;
  • -M PC — le type d'équipement informatique ;
  • -smp2 — le processeur virtuel doit être dual-core ;
  • -vga standard — choisissez une carte vidéo standard qui ne prend pas en charge les résolutions grand écran ;
  • -drive file=/dev/sda,format=raw,index=0,media=disque
    • fichier=/dev/sdX — chemin vers le périphérique bloc représentant le disque du serveur ;
    • format=brut — nous notons que dans le fichier spécifié toutes les données sont sous forme « brute », c'est-à-dire comme sur un disque ;
    • index = 0 — le numéro de disque doit augmenter de un pour chaque disque suivant ;
    • média=disque — la machine virtuelle doit reconnaître ce stockage comme un disque ;
  • -vnc :0, mot de passe — démarrez le serveur VNC par défaut à 0.0.0.0:5900, utilisez un mot de passe comme autorisation ;
  • -moniteur stdio — la communication entre l'administrateur et qemu se fera via des flux d'entrée/sortie standard.

Si tout est en ordre, le moniteur QEMU démarrera :

QEMU 4.0.0 monitor - type 'help' for more information
(qemu)

Nous avons indiqué que l'autorisation s'effectue à l'aide d'un mot de passe, mais n'avons pas indiqué le mot de passe lui-même. Cela peut être fait en envoyant la commande change vnc password au moniteur QEMU. Remarque importante : le mot de passe ne peut pas contenir plus de huit caractères.

(qemu) change vnc password
Password: ******

Après cela, nous pouvons nous connecter à n'importe quel client VNC, par exemple Remmina, en utilisant l'adresse IP de notre serveur avec le mot de passe que nous avons spécifié.

IP-KVM via QEMU

IP-KVM via QEMU

Désormais, nous voyons non seulement les erreurs possibles au stade du chargement, mais nous pouvons également les gérer.

Lorsque vous avez terminé, vous devez arrêter la machine virtuelle. Cela peut être fait soit à l'intérieur du système d'exploitation en envoyant un signal d'arrêt, soit en donnant la commande système_powerdown dans le moniteur QEMU. Cela équivaudra à appuyer une fois sur le bouton d’arrêt : le système d’exploitation à l’intérieur de la machine virtuelle s’arrêtera en douceur.

Installation du système d'exploitation

La machine virtuelle a un accès complet aux disques du serveur et peut donc être utilisée pour installer manuellement le système d'exploitation. La seule limitation est la quantité de RAM : l'image ISO ne peut pas toujours être placée en RAM. Allouons quatre gigaoctets de RAM pour stocker l'image dans / mnt:

mount -t tmpfs -o size=4G tmpfs /mnt

Nous téléchargerons également l'image d'installation du système d'exploitation FreeBSD 12.0 :

wget -P /mnt ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-bootonly.iso

Vous pouvez maintenant démarrer la VM :

qemu-system-x86_64
-m 2048M
-net nic -net user
-enable-kvm
-cpu host,nx
-M pc
-smp 2
-vga std
-drive file=/dev/sda,format=raw,index=0,media=disk
-drive file=/dev/sdb,format=raw,index=1,media=disk
-vnc :0,password
-monitor stdio
-cdrom /mnt/FreeBSD-12.0-RELEASE-amd64-bootonly.iso
-boot d

Drapeau -boot d installe le démarrage à partir du lecteur de CD. Nous nous connectons avec un client VNC et voyons le chargeur de démarrage FreeBSD.

IP-KVM via QEMU

Étant donné que l'obtention d'une adresse via DHCP a été utilisée pour accéder à Internet, après la configuration, il peut être nécessaire de démarrer le système nouvellement installé et de corriger les paramètres réseau. Dans certains cas, il peut être nécessaire d'installer des pilotes de carte réseau, car la carte réseau installée sur le serveur et celle émulée dans la VM sont différentes.

Conclusion

Cette méthode d'organisation de l'accès à distance à la console du serveur consomme une partie des ressources du serveur, cependant, elle n'impose aucune exigence particulière sur le matériel du serveur et peut donc être mise en œuvre dans presque toutes les conditions. L'utilisation de cette solution facilite grandement le diagnostic des pannes logicielles et la restauration des fonctionnalités d'un serveur distant.

Source: habr.com

Ajouter un commentaire