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


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.

Ă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
