Bewährte Methoden für die Ausführung von Linux unter Hyper-VBest Practices for running Linux on Hyper-V

Gilt für: 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 7Applies To: 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 der Empfehlungen für die Ausführung virtueller Linux-Computer unter Hyper-V.This topic contains a list of recommendations for running Linux virtual machine on Hyper-V.

Optimieren von Linux-Dateisystemen auf dynamische vhdx-DateienTuning Linux File Systems on Dynamic VHDX Files

Einige Linux-Dateisysteme belegen möglicherweise beträchtliche Mengen an tatsächlicher Speicherplatz, auch wenn das Dateisystem größtenteils leer ist.Some Linux file systems may consume significant amounts of real disk space even when the file system is mostly empty. Beachten Sie die folgenden Empfehlungen, um die tatsächliche Speicherplatz Nutzung dynamischer vhdx-Dateien zu verringern:To reduce the amount of real disk space usage of dynamic VHDX files, consider the following recommendations:

  • Wenn Sie die vhdx-Datei erstellen, verwenden Sie 1 MB blockSizeBytes (standardmäßig 32 MB) in PowerShell, z. b.:When creating the VHDX, use 1MB BlockSizeBytes (from the default 32MB) in PowerShell, for example:
PS > New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
  • Das Ext4-Format wird als ext3 bevorzugt, da ext4 bei der Verwendung mit dynamischen vhdx-Dateien mehr Speicherplatz als ext3 ist.The ext4 format is preferred to ext3 because ext4 is more space efficient than ext3 when used with dynamic VHDX files.

  • Geben Sie beim Erstellen des Dateisystems die Anzahl der Gruppen an, die 4096 sein sollen, z. b.:When creating the filesystem specify the number of groups to be 4096, for example:

# mkfs.ext4 -G 4096 /dev/sdX1

Menü Timeout für grub bei Generation 2 Virtual MachinesGrub Menu Timeout on Generation 2 Virtual Machines

Da die Legacy-Hardware auf virtuellen Computern der Generation 2 aus der Emulation entfernt wird, wird der Timer-Menü Countdowntimer zu schnell angerechnet, damit das Menü "grub" angezeigt wird. der Standardeintrag wird sofort geladen.Because of legacy hardware being removed from emulation in Generation 2 virtual machines, the grub menu countdown timer counts down too quickly for the grub menu to be displayed, immediately loading the default entry. Wenn die grub-Funktion nicht für die Verwendung des EFI-unterstützten Timers korrigiert wurde, ändern Sie /Boot/grub/grub.conf,/usw/default/grub oder die entsprechende "Timeout = 100000" anstelle der Standardeinstellung "Timeout = 5".Until grub is fixed to use the EFI-supported timer, modify /boot/grub/grub.conf, /etc/default/grub, or equivalent to have "timeout=100000" instead of the default "timeout=5".

PXE-Start bei Virtual Machines der Generation 2PxE Boot on Generation 2 Virtual Machines

Da der boxtimer nicht in der Generation 2 Virtual Machines vorhanden ist, können Netzwerkverbindungen mit dem PXE-TFTP-Server vorzeitig beendet werden und verhindern, dass der Bootloader die GRUB-Konfiguration liest und einen Kernel vom Server lädt.Because the PIT timer is not present in Generation 2 Virtual Machines, network connections to the PxE TFTP server can be prematurely terminated and prevent the bootloader from reading Grub configuration and loading a kernel from the server.

In RHEL 6. x kann der Legacy-, grub v 0,97 EFI-Bootloader 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.htmlOn RHEL 6.x, the legacy grub v0.97 EFI bootloader can be used instead of grub2 as described here: https://access.redhat.com/documentation/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-netboot-pxe-config-efi.html

In anderen Linux-Distributionen als RHEL 6. x können ähnliche Schritte ausgeführt werden, um GRUB v 0,97 zum Laden von Linux-Kernels von einem PXE-Server zu konfigurieren.On Linux distributions other than RHEL 6.x, similar steps can be followed to configure grub v0.97 to load Linux kernels from a PxE server.

Außerdem funktionieren die Tastatur-und Maus Eingaben von RHEL/CentOS 6,6 nicht mit dem Vorinstallations-Kernel, mit dem die Angabe von Installationsoptionen im Menü verhindert wird.Additionally, on RHEL/CentOS 6.6 keyboard and mouse input will not work with the pre-install kernel which prevents specifying installation options in the menu. Eine serielle Konsole muss konfiguriert werden, um die Auswahl von Installationsoptionen zuzulassen.A serial console must be configured to allow choosing installation options.

  • Fügen Sie in der Datei " efidefault " auf dem PXE-Server den folgenden Kernel Parameter "console = ttyS1" hinzu.In the efidefault file on the PxE server, add the following kernel parameter "console=ttyS1"

  • Richten Sie auf dem virtuellen Computer in Hyper-V einen COM-Port mithilfe dieses PowerShell-Cmdlets ein:On the VM in Hyper-V, set up a COM port using this PowerShell cmdlet:

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

Wenn Sie eine Kickstart-Datei für den Vorinstallations-Kernel angeben, ist es auch nicht erforderlich, dass während der Installation Tastatur-und Maus Eingaben benötigt werden.Specifying a kickstart file to the pre-install kernel would also avoid the need for keyboard and mouse input during installation.

Verwenden statischer MAC-Adressen mit FailoverclusteringUse static MAC addresses with failover clustering

Virtuelle Linux-Computer, die mithilfe des Failoverclustering bereitgestellt werden, sollten für jeden virtuellen Netzwerkadapter mit einer statischen Media Access Control (Mac-Adresse) konfiguriert werden.Linux virtual machines that will be deployed using failover clustering should be configured with a static media access control (MAC) address for each virtual network adapter. In einigen Versionen von Linux geht die Netzwerkkonfiguration möglicherweise nach einem Failover verloren, da dem virtuellen Netzwerkadapter eine neue Mac-Adresse zugewiesen wird.In some versions of Linux, the networking configuration may be lost after failover because a new MAC address is assigned to the virtual network adapter. Stellen Sie sicher, dass jeder virtuelle Netzwerkadapter über eine statische MAC-Adresse verfügt, um den Verlust der Netzwerkkonfiguration zu vermeiden.To avoid losing the network configuration, ensure that each virtual network adapter has a static MAC address. Sie können die Mac-Adresse konfigurieren, indem Sie die Einstellungen der virtuellen Maschine im Hyper-V-Manager oder Failovercluster-Manager bearbeiten.You can configure the MAC address by editing the settings of the virtual machine in Hyper-V Manager or Failover Cluster Manager.

Verwenden Sie Hyper-V-spezifische Netzwerkadapter, nicht den Legacy-Netzwerkadapter.Use Hyper-V-specific network adapters, not the legacy network adapter

Konfigurieren und verwenden Sie den virtuellen Ethernet-Adapter, bei dem es sich um eine Hyper-V-spezifische Netzwerkkarte mit verbesserter Leistung handelt.Configure and use the virtual Ethernet adapter, which is a Hyper-V-specific network card with enhanced performance. Wenn sowohl Legacy-als auch Hyper-V-spezifische Netzwerkadapter an einen virtuellen Computer angefügt sind, können die Netzwerknamen in der Ausgabe von ifconfig-a zufällige Werte wie _tmp12000801310 anzeigen.If both legacy and Hyper-V-specific network adapters are attached to a virtual machine, the network names in the output of ifconfig -a might show random values such as _tmp12000801310. Entfernen Sie alle älteren Netzwerkadapter, wenn Sie Hyper-V-spezifische Netzwerkadapter auf einem virtuellen Linux-Computer verwenden, um dieses Problem zu vermeiden.To avoid this issue, remove all legacy network adapters when using Hyper-V-specific network adapters in a Linux virtual machine.

E/a-Scheduler NOOP/None für bessere Datenträger-e/a-Leistung verwendenUse I/O scheduler noop/none for better disk I/O performance

Der Linux-Kernel bietet zwei Sätze von Datenträger-e/a-Zeit Planungs Modulen für die Neuanordnung von Anforderungen.The Linux kernel offers two sets of disk I/O schedulers to reorder requests. Ein Satz gilt für das ältere ' BLK '-Subsystem, und ein Satz ist für das neuere ' BLK-mq '-Subsystem.One set is for the older ‘blk’ subsystem and one set is for the newer ‘blk-mq’ subsystem. In beiden Fällen empfiehlt es sich, einen Scheduler zu verwenden, der die Planungsentscheidungen an den zugrunde liegenden Hyper-V-Hypervisor übergibt.In either case, with today’s solid state disks it is recommended to use a scheduler that passes the scheduling decisions to the underlying Hyper-V hypervisor. Bei Linux-Kernels, die das "BLK"-Subsystem verwenden, handelt es sich hierbei um den "NOOP"-Scheduler.For Linux kernels using the ‘blk’ subsystem, this is the “noop” scheduler. Bei Linux-Kernels, die das "BLK-MQ"-Subsystem verwenden, handelt es sich hierbei um den Scheduler "None".For Linux kernels using the ‘blk-mq’ subsystem, this is the “none” scheduler.

Bei einem bestimmten Datenträger können die verfügbaren Planer an diesem Dateisystem Speicherort angezeigt werden:/sys/class/Block/ <diskname> /Queue/Scheduler, wobei der aktuell ausgewählte Planer in eckigen Klammern steht.For a particular disk, the available schedulers can be seen at this file system location: /sys/class/block/<diskname>/queue/scheduler, with the currently selected scheduler in square brackets. Sie können den Scheduler ändern, indem Sie an diesem Dateisystem Speicherort schreiben.You can change the scheduler by writing to this file system location. Die Änderung muss zu einem Initialisierungs Skript hinzugefügt werden, damit Sie über Neustarts hinweg beibehalten werden.The change must be added to an initialization script in order to persist across reboots. Weitere Informationen finden Sie in der Dokumentation zur Linux-Distribution.Consult your Linux distro documentation for details.

NUMANUMA

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.Linux kernel versions earlier than 2.6.37 don't support NUMA on Hyper-V with larger VM sizes. 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.This issue primarily impacts older distributions using the upstream Red Hat 2.6.32 kernel, and was fixed in Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504). 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.Systems running custom kernels older than 2.6.37, or RHEL-based kernels older than 2.6.32-504 must set the boot parameter numa=off on the kernel command line in grub.conf. Weitere Informationen finden Sie unter Red Hat KB 436883.For more information, see Red Hat KB 436883.

Reservieren von mehr Speicher für kdumpReserve more memory for kdump

Für den Fall, dass der dumperfassungs-Kernel beim Start eine Panik hat, reservieren Sie mehr Speicherplatz für den Kernel.In case the dump capture kernel ends up with a panic on boot, reserve more memory for the kernel. Ändern Sie beispielsweise den Parameter crashkernel = 384m-: 128 m in crashkernel = 384m-: 256M in der Ubuntu grub-Konfigurationsdatei.For example, change the parameter crashkernel=384M-:128M to crashkernel=384M-:256M in the Ubuntu grub configuration file.

Das Verkleinern von vhdx oder das Erweitern von VHD-und vhdx-Dateien kann zu fehlerhaften GPT-Partitionstabellen führenShrinking VHDX or expanding VHD and VHDX files can result in erroneous GPT partition tables

Hyper-V ermöglicht das Verkleinern von virtuellen Festplatten Dateien (vhdx) ohne Berücksichtigung von Partitionen, Volumes oder Dateisystem-Datenstrukturen, die möglicherweise auf dem Datenträger vorhanden sind.Hyper-V allows shrinking virtual disk (VHDX) files without regard for any partition, volume, or file system data structures that may exist on the disk. Wenn die vhdx-Datei auf das Ende der vhdx-Datei vor dem Ende einer Partition verkleinert wird, können Daten verloren gehen, und die Partition kann beschädigt werden, oder es können ungültige Daten zurückgegeben werden, wenn die Partition gelesen wird.If the VHDX is shrunk to where the end of the VHDX comes before the end of a partition, data can be lost, that partition can become corrupted, or invalid data can be returned when the partition is read.

Nachdem die Größe einer VHD-oder vhdx-Datei geändert wurde, sollten Administratoren ein Hilfsprogramm wie fdisk oder parted verwenden, um die Größe der Partition, des Volumes und des Dateisystems zu aktualisieren und die Größe des Datenträgers widerzuspiegeln.After resizing a VHD or VHDX, administrators should use a utility like fdisk or parted to update the partition, volume, and file system structures to reflect the change in the size of the disk. Das Verkleinern oder Erweitern der Größe einer VHD oder vhdx mit einer GUID-Partitionstabelle (GPT) führt zu einer Warnung, wenn ein Partitions Verwaltungs Tool zum Überprüfen des Partitionslayouts verwendet wird, und der Administrator wird gewarnt, den ersten und sekundären GPT-Header zu korrigieren.Shrinking or expanding the size of a VHD or VHDX that has a GUID Partition Table (GPT) will cause a warning when a partition management tool is used to check the partition layout, and the administrator will be warned to fix the first and secondary GPT headers. Dieser manuelle Schritt kann ohne Datenverlust sicher durchgeführt werden.This manual step is safe to perform without data loss.

Weitere VerweiseAdditional References