IP-KVM via QEMU

IP-KVM via QEMU

Le dépannage du système d'exploitation sur des serveurs sans KVM n'est pas une tâche facile. Nous créons un KVM-over-IP via une image de récupération et une machine virtuelle.

En cas de problème avec le système d'exploitation sur le serveur distant, l'administrateur charge l'image de récupération et effectue les travaux nécessaires. 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é sur le serveur appartiennent à la même famille. Si la cause de l'échec n'est pas encore connue, il est nécessaire d'observer le processus de démarrage du système d'exploitation.

KVM distant

L'accès à la console du serveur peut être obtenu via des outils intégrés tels que IPMI ou Intel® vPro™, ou avec des dispositifs externes appelés IP-KVM. Il y a des situations où toutes ces technologies ne sont pas disponibles. Cependant, ce n'est pas la fin. Si le serveur peut être redémarré à distance avec une image de récupération basée sur une distribution Linux, il est possible d'organiser rapidement un KVM-over-IP.

L'image de récupération représente un système d'exploitation complet qui est placé en mémoire vive. Ainsi, nous pouvons exécuter n'importe quel logiciel, y compris des machines virtuelles (VM). Cela signifie que nous pouvons lancer une VM, à l'intérieur de laquelle le système d'exploitation du serveur fonctionnera. L'accès à la console de la VM peut être organisé, par exemple, via VNC.

Pour lancer le système d'exploitation du serveur à l'intérieur de la VM, il est nécessaire de spécifier les disques du serveur comme disques de la VM. Dans les systèmes d'exploitation de la famille Linux, les disques physiques sont représentés par des dispositifs de bloc de type /dev/sdX, avec lesquels on peut travailler comme avec des fichiers ordinaires.

Certains hyperviseurs, tels que QEMU et VirtualBox, permettent de stocker les données de la VM au format « brut », c'est-à-dire uniquement les données de stockage sans les 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 exécuter l'image de récupération et la VM à l'intérieur. Cependant, avec quatre gigaoctets ou plus de mémoire vive, cela ne posera pas de problème.

Préparation de l'environnement

Comme machine virtuelle, vous pouvez utiliser un programme léger et simple QEMU, qui n'est le plus souvent pas inclus dans l'image de récupération et doit donc être installé séparément. L'image de récupération que nous proposons à nos clients est basée sur Arch Linux, qui utilise le gestionnaire de packages pacman.

Tout d'abord, il est nécessaire de s'assurer que l'image de récupération utilise les dernières versions des logiciels. 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, il est nécessaire d'installer QEMU. La commande pour l'installation via pacman sera la suivante :

pacman -S qemu

Vérifions que QEMU a été installé correctement :

root@sel-rescue ~ # qemu-system-x86_64 --version
Version de l'émulateur QEMU 4.0.0
Droits d'auteur (c) 2003-2019 Fabrice Bellard et les développeurs du projet QEMU

Si tout est en ordre, l'image de récupération est prête à être utilisée.

Démarrer la machine virtuelle

Tout d'abord, il est nécessaire de déterminer la quantité de ressources allouées à la machine virtuelle et de comprendre les chemins vers les disques physiques. Dans notre cas, nous allouerons deux cœurs et deux gigaoctets de mémoire vive à la machine virtuelle, et les disques se trouvent sur le chemin /dev/sda et /dev/sdb. Démarrons la machine virtuelle :

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 ce que signifie chacun des paramètres :

  • -m 2048M — nous allouons 2 Go de mémoire vive à la machine virtuelle ;
  • -net nic -net user — nous ajoutons une connexion simple au réseau via l'hyperviseur en utilisant NAT (Network Address Translation) ;
  • -enable-kvm — nous activons la virtualisation complète KVM (Kernel Virtual Machine) ;
  • -cpu host — nous indiquons au processeur virtuel d'obtenir toutes les fonctionnalités du processeur du serveur ;
  • -M pc — type de matériel PC ;
  • -smp 2 — le processeur virtuel doit être bicœur ;
  • -vga std — nous choisissons une carte graphique standard qui ne prend pas en charge les résolutions d'écran élevées ;
  • -drive file=/dev/sda,format=raw,index=0,media=disk
    • file=\/dev\/sdX — chemin vers le dispositif de bloc représentant le disque du serveur ;
    • format=raw — nous indiquons que dans le fichier spécifié, toutes les données sont dans un format « brut », c'est-à-dire comme sur le disque ;
    • index=0 — numéro du disque, qui doit être augmenté de un pour chaque disque suivant ;
    • media=disk — la machine virtuelle doit reconnaître ce stockage comme un disque ;
  • -vnc :0, password — nous démarrons le serveur VNC par défaut sur 0.0.0.0:5900, en utilisant un mot de passe pour l'authentification ;
  • -monitor stdio — l'interaction de l'administrateur avec QEMU se fera via les flux d'entrée/sortie standard.

Si tout va bien, le moniteur QEMU démarrera :

Moniteur QEMU 4.0.0 - tapez 'help' pour plus d'informations
(qemu)

Nous avons indiqué que l'authentification se fait par mot de passe, mais nous n'avons pas spécifié le mot de passe lui-même. Vous pouvez le faire en envoyant la commande change vnc password dans le moniteur QEMU. Remarque importante : le mot de passe ne peut pas dépasser huit caractères.

(qemu) changer le mot de passe vnc
Mot de passe : ******

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

IP-KVM via QEMU

IP-KVM via QEMU

Nous pouvons maintenant non seulement voir les erreurs possibles lors du démarrage, mais aussi les résoudre.

À la fin des travaux, il est nécessaire d'arrêter la machine virtuelle. Cela peut être fait à l'intérieur du système d'exploitation en envoyant un signal d'arrêt, ou en donnant la commande system_powerdown dans le moniteur QEMU. Cela sera équivalent à une pression unique 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 le système d'exploitation manuellement. La seule restriction concerne la quantité de mémoire vive : il n'est pas toujours possible de stocker l'image ISO en mémoire vive. Réservons quatre Go en mémoire vive 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

Maintenant, nous pouvons 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 la charge à partir du lecteur CD. Nous nous connectons avec un client VNC et voyons le chargeur de FreeBSD.

IP-KVM via QEMU

Étant donné que l'accès Internet a été obtenu en obtenant une adresse par DHCP, il se peut qu'après la configuration, il soit nécessaire de démarrer dans le système fraîchement installé et de corriger les paramètres réseau. Dans certains cas, l'installation de pilotes pour l'adaptateur réseau peut être nécessaire, car la carte réseau installée sur le serveur et celle émulated dans la VM diffèrent.

Conclusion

Cette méthode d'organisation d'un accès distant à la console du serveur consomme une partie des ressources du serveur, mais ne présente aucune exigence particulière en matière de matériel, et peut donc être mise en œuvre dans pratiquement n'importe quelles conditions. L'utilisation d'une telle solution permet de faciliter considérablement le diagnostic des pannes logicielles et la restauration du bon fonctionnement du serveur distant.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster