IP-KVM über QEMU

IP-KVM über QEMU

Die Fehlersuche beim Booten des Betriebssystems auf Servern ohne KVM ist eine anspruchsvolle Aufgabe. Wir erstellen uns KVM-over-IP über ein Wiederherstellungs-Image und eine virtuelle Maschine.

Im Falle von Problemen mit dem Betriebssystem auf einem entfernten Server, lädt der Administrator das Wiederherstellungs-Image und führt die erforderlichen Arbeiten durch. Diese Methode funktioniert hervorragend, wenn die Ursache des Ausfalls bekannt ist und das Wiederherstellungs-Image und das installierte Betriebssystem auf dem Server derselben Familie angehören. Wenn die Ursache des Ausfalls noch unbekannt ist, muss der Bootvorgang des Betriebssystems beobachtet werden.

Entferntes KVM

Der Zugriff auf die Serverkonsole kann durch integrierte Mittel wie IPMI oder Intel® vPro™ oder durch externe Geräte, die als IP-KVM bezeichnet werden, erfolgen. Es gibt Situationen, in denen alle genannten Technologien nicht verfügbar sind. Das bedeutet jedoch nicht das Ende. Wenn der Server remote in ein Wiederherstellungs-Image auf Linux-Basis neu gestartet werden kann, lässt sich KVM-over-IP schnell einrichten.

Das Wiederherstellungs-Image ist ein vollwertiges Betriebssystem, das im Arbeitsspeicher abgelegt wird. Auf diese Weise können wir jede Software ausführen, einschließlich virtueller Maschinen (VM). Das bedeutet, dass eine VM gestartet werden kann, in der das Betriebssystem des Servers läuft. Der Zugriff auf die VM-Konsole kann beispielsweise über VNC organisiert werden.

Um das Betriebssystem des Servers innerhalb der VM zu starten, müssen die Serverlaufwerke als VM-Laufwerke angegeben werden. In Betriebssystemen der Linux-Familie werden physische Laufwerke als Blockgeräte präsentiert /dev/sdX, mit denen wie mit normalen Dateien gearbeitet werden kann.

Einige Hypervisoren wie QEMU und VirtualBox ermöglichen es, VM-Daten im 'rohen' Format zu speichern, das heißt, nur die Speicherdaten ohne Hypervisor-Metadaten. Auf diese Weise kann die VM mit physischen Serverlaufwerken gestartet werden.

Diese Methode erfordert Ressourcen zum Starten des Wiederherstellungs-Images und der darin enthaltenen VM. Bei vier oder mehr Gigabyte RAM wird dies jedoch kein Problem darstellen.

Vorbereitung der Umgebung

Als virtuelle Maschine kann ein leichtes und einfaches Programm verwendet werden QEMU, die meistens nicht Teil des Wiederherstellungsabbilds ist, daher separat installiert werden muss. Das Wiederherstellungsabbild, das wir unseren Kunden anbieten, basiert auf Arch Linux, das den Paketmanager verwendet pacman.

Zuerst muss sichergestellt werden, dass das Wiederherstellungsabbild die neuesten Softwareversionen verwendet. Die Überprüfung und Aktualisierung aller Betriebssystemkomponenten kann mit folgendem Befehl durchgeführt werden:

pacman -Suy

Nach der Aktualisierung muss QEMU installiert werden. Der Installationsbefehl über pacman sieht wie folgt aus:

pacman -S qemu

Überprüfen wir, ob QEMU korrekt installiert wurde:

root@sel-rescue ~ # qemu-system-x86_64 --version
QEMU-Emulator-Version 4.0.0
Copyright (c) 2003-2019 Fabrice Bellard und die QEMU-Projektentwickler

Wenn alles in Ordnung ist, ist das Wiederherstellungsabbild bereit zur Nutzung.

Start der virtuellen Maschine

Zuerst muss entschieden werden, wie viele Ressourcen der VM zugewiesen werden, und die Pfade zu den physischen Festplatten herausgefunden werden. In unserem Fall werden wir der virtuellen Maschine zwei Kerne und zwei Gigabyte RAM zuweisen, und die Festplatten befinden sich unter dem Pfad /dev/sda und /dev/sdb. Wir starten die 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

Einige Details dazu, was jeder der Parameter bedeutet:

  • -m 2048M — wir vergeben 2 GB RAM für die VM;
  • -net nic -net user — wir fügen eine einfache Netzwerkverbindung über den Hypervisor mit NAT (Network Address Translation) hinzu;
  • -enable-kvm — wir aktivieren die vollständige Virtualisierung KVM (Kernel Virtual Machine);
  • -cpu host — wir sagen dem virtuellen Prozessor, dass er alle Funktionen des Serverprozessors erhalten soll;
  • -M pc — Gerätetyp ist PC;
  • -smp 2 — der virtuelle Prozessor muss dual-core sein;
  • -vga std — wir wählen eine Standardgrafikkarte, die keine hohen Bildschirmauflösungen unterstützt;
  • -drive file=/dev/sda,format=raw,index=0,media=disk
    • file=\/dev\/sdX — der Pfad zum Blockgerät, das die Serverfestplatte darstellt;
    • format=raw — wir kennzeichnen, dass alle Daten in der angegebenen Datei im «rohen» Format vorliegen, also wie auf der Festplatte;
    • index=0 — die Festplattennummer, die für jede nachfolgende Festplatte um eins erhöht werden muss;
    • media=disk — die virtuelle Maschine muss dieses Speichergerät als Festplatte erkennen;
  • -vnc :0, password — wir starten den VNC-Server standardmäßig auf 0.0.0.0:5900, die Authentifizierung erfolgt mit einem Passwort;
  • -monitor stdio — die Kommunikation des Administrators mit QEMU erfolgt über die Standard-Eingabe- und -Ausgabeströme.

Wenn alles in Ordnung ist, wird das QEMU-Monitor gestartet:

QEMU 4.0.0 Monitor - geben Sie 'help' ein, um weitere Informationen zu erhalten
(qemu)

Wir haben angegeben, dass die Authentifizierung über ein Passwort erfolgt, jedoch das Passwort selbst nicht angegeben. Dies kann durch den Befehl change vnc password im QEMU-Monitor erfolgen. Wichtiger Hinweis: Das Passwort darf nicht länger als acht Zeichen sein.

(qemu) VNC-Passwort ändern
Passwort: ******

Nach diesem Schritt können wir uns mit jedem VNC-Client, wie z. B. Remmina, über die IP-Adresse unseres Servers und mit dem von uns angegebenen Passwort verbinden.

IP-KVM über QEMU

IP-KVM über QEMU

Jetzt sehen wir nicht nur mögliche Fehler während des Boot-Vorgangs, sondern können auch aktiv dagegen ankämpfen.

Am Ende der Arbeiten muss die virtuelle Maschine heruntergefahren werden. Dies kann entweder innerhalb des Betriebssystems durch das Senden eines Ausschaltbefehls oder durch den Befehl system_powerdown im QEMU-Monitor geschehen. Dies entspricht einem einmaligen Drücken der Ausschaltknopfes: Das Betriebssystem innerhalb der virtuellen Maschine wird ordnungsgemäß heruntergefahren.

Installation des Betriebssystems

Die virtuelle Maschine hat vollen Zugriff auf die Festplatten des Servers und kann daher zur manuellen Installation des Betriebssystems verwendet werden. Die einzige Einschränkung betrifft den Arbeitsspeicher: Nicht immer kann das ISO-Abbild im Arbeitsspeicher abgelegt werden. Wir reservieren vier Gigabyte im Arbeitsspeicher für die Speicherung des Abbilds in /mnt:

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

Wir laden auch das Installationsabbild des Betriebssystems FreeBSD 12.0 herunter:

wget -P /mnt ftp://ftp.freebsd.org/pub/FreeBSD/releases/amd64/amd64/ISO-IMAGES/12.0/FreeBSD-12.0-RELEASE-amd64-bootonly.iso

Jetzt kann die VM gestartet werden:

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

Flag -boot d stellt das Booten von CD-Laufwerk ein. Wir verbinden uns mit einem VNC-Client und sehen den Bootloader von FreeBSD.

IP-KVM über QEMU

Da für den Internetzugang die IP-Adresse über DHCP bezogen wurde, kann es erforderlich sein, nach der Einrichtung in das neu installierte System zu booten und die Netzwerkkonfiguration zu korrigieren. In einigen Fällen kann es notwendig sein, Treiber für den Netzwerkadapter zu installieren, da die Netzwerkkarte, die im Server installiert ist, und die, die in der VM emuliert wird, unterschiedlich sind.

Fazit

Dieser Weg, um Remote-Zugriff auf die Serverkonsole zu organisieren, verbraucht einige Ressourcen des Servers, stellt jedoch keine besonderen Anforderungen an die Hardware des Servers, und kann daher unter nahezu allen Bedingungen durchgeführt werden. Der Einsatz einer solchen Lösung erleichtert die Diagnose von Softwarefehlern und die Wiederherstellung der Funktionsfähigkeit des entfernten Servers erheblich.

Quelle: habr.com

60GB SSD 8Gb DDR4