IP-KVM über QEMU

IP-KVM über QEMU

Die Behebung von Betriebssystem-Boot-Problemen auf Servern ohne KVM ist keine leichte Aufgabe. Wir erstellen für uns selbst ein KVM-over-IP über ein Wiederherstellungsimage und eine virtuelle Maschine.

Bei Problemen mit dem Betriebssystem auf einem Remote-Server, lädt der Administrator das Wiederherstellungsimage herunter und führt die notwendigen Arbeiten aus. Diese Methode funktioniert hervorragend, wenn die Ursache des Fehlers bekannt ist und das Wiederherstellungsimage und das auf dem Server installierte Betriebssystem aus derselben Familie stammen. Wenn die Ursache des Fehlers noch nicht bekannt ist, müssen Sie den Fortschritt des Ladens des Betriebssystems überwachen.

Remote-KVM

Sie können über integrierte Tools wie IPMI oder Intel® vPro™ oder über externe Geräte namens IP-KVM auf die Serverkonsole zugreifen. Es gibt Situationen, in denen nicht alle aufgeführten Technologien verfügbar sind. Dies ist jedoch nicht das Ende. Wenn der Server aus der Ferne in ein Wiederherstellungsimage basierend auf einem Linux-Betriebssystem neu gestartet werden kann, kann KVM-over-IP schnell organisiert werden.

Das Wiederherstellungsabbild ist ein vollwertiges Betriebssystem, das sich im RAM befindet. Somit können wir jede Software ausführen, einschließlich virtueller Maschinen (VMs). Das heißt, Sie können eine VM starten, in der das Serverbetriebssystem ausgeführt wird. Der Zugriff auf die VM-Konsole kann beispielsweise über VNC organisiert werden.

Um das Serverbetriebssystem in einer VM auszuführen, müssen Sie die Serverfestplatten als VM-Festplatten angeben. In Betriebssystemen der Linux-Familie werden physische Festplatten durch Blockgeräte der Form dargestellt / dev / sdX, mit denen wie mit normalen Dateien gearbeitet werden kann.

Bei einigen Hypervisoren wie QEMU und VirtualBox können Sie VM-Daten in „roher“ Form speichern, d. h. nur Speicherdaten ohne Hypervisor-Metadaten. Somit kann die VM über die physischen Festplatten des Servers gestartet werden.

Diese Methode erfordert Ressourcen zum Starten des Wiederherstellungsimages und der darin enthaltenen VM. Wenn Sie jedoch über vier oder mehr Gigabyte RAM verfügen, ist dies kein Problem.

Umgebung vorbereiten

Sie können ein leichtes und einfaches Programm als virtuelle Maschine verwenden QEMU, das meist nicht Teil des Wiederherstellungsimages ist und daher separat installiert werden muss. Das Wiederherstellungsimage, das wir unseren Kunden anbieten, basiert auf Arch Linux, das einen Paketmanager verwendet pacman.

Als Erstes müssen Sie sicherstellen, dass das Wiederherstellungsimage die neueste Software verwendet. Mit dem folgenden Befehl können Sie alle Betriebssystemkomponenten überprüfen und aktualisieren:

pacman -Suy

Nach dem Update müssen Sie QEMU installieren. Der Installationsbefehl über Pacman sieht folgendermaßen aus:

pacman -S qemu

Überprüfen wir, ob qemu korrekt installiert ist:

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

Wenn alles so ist, ist das Wiederherstellungsimage einsatzbereit.

Starten einer virtuellen Maschine

Zunächst müssen Sie die Menge der der VM zugewiesenen Ressourcen festlegen und die Pfade zu den physischen Festplatten ermitteln. In unserem Fall weisen wir der virtuellen Maschine zwei Kerne und zwei Gigabyte RAM zu, und die Festplatten befinden sich unterwegs / Dev / sda и / dev / sdb. Starten wir 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

Etwas mehr Details zur Bedeutung der einzelnen Parameter:

  • -m 2048M – Weisen Sie der VM 2 GB RAM zu;
  • -net nic -net Benutzer — Hinzufügen einer einfachen Verbindung zum Netzwerk über einen Hypervisor mithilfe von NAT (Network Address Translation);
  • -enable-kvm — Aktivieren Sie die vollständige KVM-Virtualisierung (Kernel Virtual Machine).
  • -CPU-Host – Wir weisen den virtuellen Prozessor an, die gesamte Funktionalität des Serverprozessors zu erhalten.
  • -M PC — Art der PC-Ausrüstung;
  • -smp 2 — Der virtuelle Prozessor muss ein Dual-Core-Prozessor sein;
  • -vga std — Wählen Sie eine Standard-Grafikkarte, die keine großen Bildschirmauflösungen unterstützt;
  • -drive file=/dev/sda,format=raw,index=0,media=disk
    • file=/dev/sdX – Pfad zum Blockgerät, das die Serverfestplatte darstellt;
    • format=roh — Wir stellen fest, dass in der angegebenen Datei alle Daten in „roher“ Form vorliegen, also wie auf einer Festplatte;
    • index = 0 — Festplattennummer, muss für jede weitere Festplatte um eins erhöht werden;
    • Medien=Datenträger — Die virtuelle Maschine muss diesen Speicher als Festplatte erkennen;
  • -vnc :0, Passwort — Starten Sie den VNC-Server standardmäßig bei 0.0.0.0:5900 und verwenden Sie ein Passwort als Autorisierung.
  • -Stdio überwachen — Die Kommunikation zwischen dem Administrator und qemu erfolgt über Standard-Eingabe-/Ausgabeströme.

Wenn alles in Ordnung ist, startet der QEMU-Monitor:

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

Wir haben darauf hingewiesen, dass die Autorisierung über ein Passwort erfolgt, das Passwort selbst haben wir jedoch nicht angegeben. Dies kann durch Senden des Befehls zum Ändern des VNC-Passworts an den QEMU-Monitor erfolgen. Wichtiger Hinweis: Das Passwort darf nicht mehr als acht Zeichen lang sein.

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

Danach können wir uns mit jedem VNC-Client, zum Beispiel Remmina, verbinden, indem wir die IP-Adresse unseres Servers mit dem von uns angegebenen Passwort verwenden.

IP-KVM über QEMU

IP-KVM über QEMU

Jetzt erkennen wir mögliche Fehler nicht nur beim Laden, sondern können diese auch beheben.

Wenn Sie fertig sind, müssen Sie die virtuelle Maschine herunterfahren. Dies kann entweder innerhalb des Betriebssystems durch Senden eines Signals zum Herunterfahren oder durch Erteilen des Befehls erfolgen system_powerdown im QEMU-Monitor. Dies entspricht dem einmaligen Drücken der Shutdown-Taste: Das Betriebssystem in der virtuellen Maschine wird reibungslos heruntergefahren.

Installation des Betriebssystems

Die virtuelle Maschine hat vollen Zugriff auf die Serverfestplatten und kann daher zur manuellen Installation des Betriebssystems verwendet werden. Die einzige Einschränkung ist die Größe des Arbeitsspeichers: Das ISO-Image kann nicht immer im Arbeitsspeicher abgelegt werden. Weisen wir vier Gigabyte RAM zum Speichern des Bildes zu / mnt:

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

Wir werden auch das Installationsimage des Betriebssystems FreeBSD 12.0 herunterladen:

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

Jetzt können Sie die VM starten:

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

Flagge -boot d Installiert Booten vom CD-Laufwerk. Wir verbinden uns mit einem VNC-Client und sehen den FreeBSD-Bootloader.

IP-KVM über QEMU

Da für den Zugriff auf das Internet der Bezug einer Adresse über DHCP genutzt wurde, kann es nach der Konfiguration erforderlich sein, das neu installierte System zu booten und die Netzwerkeinstellungen zu korrigieren. In manchen Fällen kann es notwendig sein, Netzwerkadaptertreiber zu installieren, da die im Server installierte und die in der VM emulierte Netzwerkkarte unterschiedlich sind.

Abschluss

Diese Methode zur Organisation des Fernzugriffs auf die Serverkonsole verbraucht einen Teil der Serverressourcen, stellt jedoch keine besonderen Anforderungen an die Serverhardware und kann daher unter nahezu allen Bedingungen implementiert werden. Der Einsatz dieser Lösung erleichtert die Diagnose von Softwarefehlern und die Wiederherstellung der Funktionalität eines Remote-Servers erheblich.

Source: habr.com

Kommentar hinzufügen