
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.