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
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
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é.
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.
É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