IP-KVM via QEMU



Le dépannage lors du chargement du systÚme d'exploitation sur des serveurs sans KVM n'est pas une tùche facile. Nous créons KVM sur IP à l'aide d'une image de récupération et d'une machine virtuelle.

En cas de problĂšme avec le systĂšme d'exploitation sur le serveur distant , l'administrateur tĂ©lĂ©charge l'image de rĂ©cupĂ©ration et effectue le travail nĂ©cessaire. Cette mĂ©thode fonctionne correctement 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 sont de 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 distant


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

L'image de rĂ©cupĂ©ration est un systĂšme d'exploitation Ă  part entiĂšre qui rĂ©side dans la RAM. Ainsi, nous pouvons exĂ©cuter n'importe quel logiciel, y compris les machines virtuelles (VM). Autrement dit, vous pouvez dĂ©marrer la machine virtuelle, Ă  l'intĂ©rieur de laquelle le systĂšme d'exploitation du serveur fonctionnera. L'accĂšs Ă  la console VM peut ĂȘtre organisĂ©, par exemple, via le VNC.

Pour dĂ©marrer le systĂšme d'exploitation du serveur Ă  l'intĂ©rieur de la machine virtuelle, vous devez spĂ©cifier les disques de serveur en tant que disques de machine virtuelle. Sur la famille Linux de systĂšmes d'exploitation, les disques physiques sont reprĂ©sentĂ©s comme des pĂ©riphĂ©riques blocs de la forme / dev / sdX , qui peuvent ĂȘtre traitĂ©s comme des fichiers normaux.

Certains hyperviseurs, tels que QEMU et VirtualBox, vous permettent de stocker des donnĂ©es de machine virtuelle sous une forme brute, c'est-Ă -dire uniquement des donnĂ©es de stockage sans mĂ©tadonnĂ©es d'hyperviseur. Ainsi, une machine virtuelle peut ĂȘtre dĂ©marrĂ©e Ă  l'aide des disques physiques du serveur.

Cette méthode nécessite des ressources pour exécuter l'image de récupération et la machine virtuelle à l'intérieur. Cependant, avec quatre gigaoctets ou plus de RAM, ce ne sera pas un problÚme.

Préparation de l'environnement


En tant que machine virtuelle, vous pouvez utiliser le programme QEMU lĂ©ger et simple, qui le plus souvent ne fait pas partie de l'image de rĂ©cupĂ©ration, il 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 le gestionnaire de paquets pacman .

Vous devez d'abord vous assurer que l'image de récupération utilise le dernier 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érifiez que qemu est installé correctement:

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 c'est le cas, l'image de rĂ©cupĂ©ration est prĂȘte Ă  fonctionner.

Démarrage de la machine virtuelle


Vous devez d'abord dĂ©terminer la quantitĂ© de ressources allouĂ©es Ă  la machine virtuelle et trouver 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 sont situĂ©s sur les chemins / dev / sda et / dev / sdb . ExĂ©cutez 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 sur la signification de chacun des paramĂštres:

  • -m 2048M - alloue 2 Go de RAM par VM;
  • -net nic -net user - ajoute une simple connexion rĂ©seau via un hyperviseur utilisant NAT (Network Address Translation);
  • -enable-kvm - active la virtualisation KVM complĂšte (Kernel Virtual Machine);
  • -cpu host - indique au processeur virtuel d'obtenir toutes les fonctionnalitĂ©s du processeur de serveur;
  • -M pc - type d'Ă©quipement PC;
  • -smp 2 - le processeur virtuel doit ĂȘtre dual-core;
  • -vga std - sĂ©lectionnez une carte vidĂ©o standard qui ne prend pas en charge les rĂ©solutions de grand Ă©cran;
  • -drive file = / dev / sda, format = raw, index = 0, media = disk
    • file = / dev / sdX - chemin vers le pĂ©riphĂ©rique de bloc reprĂ©sentant le disque du serveur;
    • format = raw - marque que dans le fichier spĂ©cifiĂ© toutes les donnĂ©es sont sous la forme "brute", c'est-Ă -dire comme sur le disque;
    • index = 0 - numĂ©ro de disque, devrait augmenter de un pour chaque disque suivant;
    • media = disk - la machine virtuelle doit reconnaĂźtre ce stockage comme un disque;
  • -vnc: 0, mot de passe - exĂ©cutez le serveur VNC par dĂ©faut Ă  0.0.0.0:5900, utilisez le mot de passe comme autorisation;
  • -monitor stdio - l'administrateur communiquera avec qemu via des flux d'entrĂ©e / sortie standard.

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

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


Nous avons indiquĂ© que l'autorisation a lieu avec un 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 au moniteur QEMU. Remarque importante: le mot de passe ne doit pas comporter plus de huit caractĂšres.

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


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





Maintenant, non seulement nous voyons des erreurs possibles au stade du chargement, mais nous pouvons les combattre.

À la fin du travail, vous devez terminer la machine virtuelle. Cela peut ĂȘtre fait soit Ă  l'intĂ©rieur du systĂšme d'exploitation en envoyant un signal d'arrĂȘt, soit vous pouvez donner la commande system_powerdown au moniteur QEMU. Cela Ă©quivaudra Ă  une simple pression 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: pas toujours l'image ISO peut ĂȘtre placĂ©e dans la RAM. Nous sĂ©lectionnons quatre gigaoctets de RAM pour stocker l'image dans / mnt :

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

Nous chargeons é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


L' indicateur -boot d définit le démarrage à partir du lecteur de CD. Nous sommes connectés par le client VNC et nous voyons le chargeur FreeBSD.



Étant donnĂ© que DHCP a Ă©tĂ© utilisĂ© pour accĂ©der Ă  Internet, il est possible qu'aprĂšs la configuration, il soit nĂ©cessaire de dĂ©marrer sur 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 Ă©mulĂ©e dans la machine virtuelle est diffĂ©rente.

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 au composant matĂ©riel du serveur et peut donc ĂȘtre effectuĂ©e dans presque toutes les conditions. L'utilisation de cette solution peut considĂ©rablement faciliter le diagnostic des pannes logicielles et restaurer la santĂ© d'un serveur distant.

Source: https://habr.com/ru/post/fr464565/


All Articles