Freigeben über


Bewährte Methoden für die Ausführung von Linux auf Hyper-V

Gilt für: Windows Server 2022, Azure Stack HCI (Version 20H2); Windows Server 2019, Windows Server 2016, Hyper-V Server 2016, Windows Server 2012 R2, Hyper-V Server 2012 R2, Windows Server 2012, Hyper-V Server 2012, Windows Server 2008 R2, Windows 10, Windows 8.1, Windows 8, Windows 7.1, Windows 7

Dieses Thema enthält eine Liste von Empfehlungen zum Ausführen eines virtuellen Linux-Computers unter Hyper-V.

Optimieren von Linux-Dateisystemen für dynamische VHDX-Dateien

Einige Linux-Dateisysteme verbrauchen möglicherweise erhebliche Mengen an echtem Speicherplatz, auch wenn das Dateisystem größtenteils leer ist. Beachten Sie die folgenden Empfehlungen, um die tatsächliche Speicherplatznutzung dynamischer VHDX-Dateien zu verringern:

  • Verwenden Sie beim Erstellen der VHDX 1 MB BlockSizeBytes (gegenüber der Standardgröße 32 MB) in PowerShell, z. B.:
PS > New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
  • Das ext4-Format wird gegenüber ext3 bevorzugt, da ext4 bei Verwendung mit dynamischen VHDX-Dateien speicherplatzeffizienter ist als ext3.

  • Geben Sie beim Erstellen des Dateisystems die Anzahl der Gruppen mit 4096 an, z. B.:

# mkfs.ext4 -G 4096 /dev/sdX1

Timeout des Grub-Menüs bei virtuellen Computern der 2. Generation

Da Legacyhardware auf virtuellen Computern der 2. Generation aus der Emulation entfernt wurde, zählt der Countdowntimer des Grub-Menüs zu schnell, um das Grub-Menü anzuzeigen, und der Standardeintrag wird sofort geladen. Bis grub zur Korrektur auf den von EFI unterstützten Timer umgestellt wurde, ändern Sie /boot/grub/grub.conf, /etc/default/grub oder eine gleichbedeutende Datei auf „timeout=100000“ anstelle des Standardwerts „timeout=5“.

PxE Boot auf virtuellen Computern der 2. Generation

Da der PIT-Timer auf virtuellen Computern der 2. Generation nicht vorhanden ist, werden Netzwerkverbindungen mit dem PxE TFTP-Server möglicherweise vorzeitig beendet, was verhindert, dass der Bootloader die Grub-Konfiguration liest und einen Kernel vom Server lädt.

Unter RHEL 6.x kann der Legacy-Bootloader grub v0.97 EFI anstelle von grub2 verwendet werden, wie hier beschrieben: https://access.redhat.com/documentation/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-netboot-pxe-config-efi.html

Auf anderen Linux-Distributionen als RHEL 6.x können ähnliche Schritte ausgeführt werden, um grub v0.97 für das Laden von Linux-Kerneln von einem PxE-Server zu konfigurieren.

Außerdem funktionieren Tastatur- und Mauseingaben unter RHEL/CentOS 6.6 nicht mit dem Vorinstallationskernel, wodurch die Angabe von Installationsoptionen im Menü verhindert wird. Es muss eine serielle Konsole konfiguriert werden, um die Auswahl von Installationsoptionen zu ermöglichen.

  • Fügen Sie der efidefault-Datei auf dem PxE-Server den folgenden Kernelparameter hinzu „console=ttyS1“

  • Richten Sie auf dem virtuellen Computer in Hyper-V mithilfe dieses PowerShell-Cmdlets einen COM-Port ein:

Set-VMComPort -VMName <Name> -Number 2 -Path \\.\pipe\dbg1

Durch Angeben einer Kickstartdatei für den Vorabinstallationskernel kann die Notwendigkeit für Tastatur- und Mauseingaben während der Installation ebenfalls umgangen werden.

Verwenden statischer MAC-Adressen mit Failoverclustering

Virtuelle Linux-Computer, die mithilfe von Failoverclustering bereitgestellt werden sollen, sollten mit einer statischen MAC-Adresse (Media Access Control) für jeden virtuellen Netzwerkadapter konfiguriert werden. In einigen Versionen von Linux geht die Netzwerkkonfiguration möglicherweise nach einem Failover verloren, da dem virtuellen Netzwerkadapter eine neue MAC-Adresse zugewiesen wird. Achten Sie darauf, dass jeder virtuelle Netzwerkadapter über eine statische MAC-Adresse verfügt, um den Verlust der Netzwerkkonfiguration zu vermeiden. Sie können die MAC-Adresse konfigurieren, indem Sie die Einstellungen des virtuellen Computers in Hyper-V-Manager oder Failovercluster-Manager bearbeiten.

Verwenden Sie Hyper-V-spezifische Netzwerkadapter, nicht den Legacynetzwerkadapter.

Konfigurieren und verwenden Sie den virtuellen Ethernet-Adapter, bei dem es sich um eine Hyper-V-spezifische Netzwerkkarte mit gesteigerter Leistung handelt. Wenn sowohl Legacy- als auch Hyper-V-spezifische Netzwerkadapter an einen virtuellen Computer angefügt sind, werden für die Netzwerknamen in der Ausgabe von ifconfig -a möglicherweise zufällige Werte wie _tmp12000801310 angezeigt. Zum Vermeiden dieses Problems entfernen Sie alle älteren Netzwerkadapter, wenn Sie auf einem virtuellen Linux-Computer Hyper-V-spezifische Netzwerkadapter verwenden.

Verwenden des E/A-Schedulers noop/none für eine bessere E/A-Leistung des Datenträgers

Der Linux-Kernel bietet zwei Sätze von Datenträger-E/A-Schedulern zum Neuordnen von Anforderungen. Ein Satz ist für das ältere Subsystem „blk“ und ein Satz für das neuere Subsystem „blk-mq“. In beiden Fällen wird bei den heutigen Solid State-Datenträgern empfohlen, einen Scheduler zu verwenden, der die Planungsentscheidungen an den zugrunde liegenden Hyper-V-Hypervisor übergibt. Bei Linux-Kerneln, die das Subsystem „blk“ verwenden, ist dies der „noop“-Scheduler. Bei Linux-Kerneln, die das Subsystem „blk-mq“ verwenden, ist dies der „none“-Scheduler.

Die verfügbaren Scheduler für einen bestimmten Datenträger können an diesem Dateisystemspeicherort angezeigt werden: /sys/class/block/<diskname>/queue/scheduler, wobei der aktuell ausgewählte Scheduler in eckigen Klammern angezeigt wird. Sie können den Scheduler ändern, indem Sie an diesen Dateisystemspeicherort schreiben. Die Änderung muss einem Initialisierungsskript hinzugefügt werden, damit sie über Neustarts hinweg beibehalten werden kann. Details dazu finden Sie in der Dokumentation zu Ihrer Linux-Distribution.

NUMA

Linux-Kernelversionen vor Version 2.6.37 unterstützen keinen NUMA (Non-Uniform Memory Access, nicht einheitlicher Speicherzugriff) auf Hyper-V mit größeren VM-Größen. Dieses Problem betrifft in erster Linie ältere Distributionen, die den Red Hat 2.6.32-Upstreamkernel verwenden, und wurde in Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504) behoben. Systeme, auf denen benutzerdefinierte Kernel ausgeführt werden, die älter als 2.6.37 sind, bzw. RHEL-basierte Kernel, die älter als 2.6.32-504 sind, müssen in „grub.conf“ in der Kernelbefehlszeile den Startparameter numa=off festlegen. Weitere Informationen finden Sie unter Red Hat KB 436883.

Reservieren von mehr Arbeitsspeicher für kdump

Falls der Dump Capture-Kernel beim Start mit einem „Panic“ endet, reservieren Sie mehr Arbeitsspeicher für den Kernel. Ändern Sie beispielsweise in der Ubuntu grub-Konfigurationsdatei den Parameter crashkernel=384M-:128M in crashkernel=384M-:256M.

Das Verkleinern von VHDX oder das Erweitern von VHD- und VHDX-Dateien kann zu fehlerhaften GPT-Partitionstabellen führen.

Hyper-V ermöglicht das Verkleinern von VHDX-Dateien (Virtual Disk) ohne Berücksichtigung von Partitions-, Volume- oder Dateisystemdatenstrukturen, die möglicherweise auf dem Datenträger vorhanden sind. Wenn die VHDX bis zu einem Punkt verkleinert wird, dass das Ende der VHDX vor dem Ende einer Partition erreicht wird, kann es zu Datenverlust kommen, die betreffende Partition kann beschädigt oder beim Lesen der Partition können ungültige Daten zurückgegeben werden.

Nach dem Ändern der Größe einer VHD oder VHDX sollten Administratoren ein Hilfsprogramm wie fdisk oder parted verwenden, um die Partitions-, Volume- und Dateisystemstrukturen zu aktualisieren, um die Änderung der Größe des Datenträgers widerzuspiegeln. Das Verkleinern oder Erweitern der Größe einer VHD oder VHDX mit einer GPT (GUID-Partitionstabelle) führt zu einer Warnung, wenn ein Partitionsverwaltungstool verwendet wird, um das Partitionslayout zu überprüfen, und der Administrator wird gewarnt, den ersten und sekundären GPT-Header zu korrigieren. Dieser manuelle Schritt kann ohne Datenverlust sicher ausgeführt werden.

Weitere Verweise