- Рекомендации по запуску Linux в Hyper-V
- Настройка файловой системы Linux в динамических VHDX-файлах
- Время ожидания меню Grub на Виртуальные машины поколения 2
- Загрузка PxE на Виртуальные машины поколения 2
- Использование статических MAC-адресов с отказоустойчивой кластеризации
- Использование сетевых адаптеров Hyper-V, а не устаревших сетевых адаптеров
- Использование noop/none планировщика ввода-вывода для повышения производительности дискового ввода-вывода
- NUMA
- Резервировать больше памяти для kdump
- Сжатие VHDX или расширение файлов VHD и VHDX может привести к ошибочной таблице секций GPT
- Дополнительные ссылки
- Best Practices for running Linux on Hyper-V
- Tuning Linux File Systems on Dynamic VHDX Files
- Grub Menu Timeout on Generation 2 Virtual Machines
- PxE Boot on Generation 2 Virtual Machines
- Use static MAC addresses with failover clustering
- Use Hyper-V-specific network adapters, not the legacy network adapter
- Use I/O scheduler noop/none for better disk I/O performance
- NUMA
- Reserve more memory for kdump
- Shrinking VHDX or expanding VHD and VHDX files can result in erroneous GPT partition tables
- Additional References
Рекомендации по запуску Linux в Hyper-V
Область применения: Windows Server 2022, Azure Stack HCI версии 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
В этом разделе содержится список рекомендаций по запуску виртуальной машины Linux в Hyper-V.
Настройка файловой системы Linux в динамических VHDX-файлах
Некоторые файловые системы Linux могут потреблять значительные объемы реального места на диске, даже если файловая система в основном пуста. Чтобы уменьшить объем использования динамических VHDX-файлов в реальном дисковом пространстве, рассмотрите следующие рекомендации:
PS > New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
- Формат ext4 предпочтителен для ext3, так как ext4 является более эффективным пространством, чем ext3 при использовании с динамическими VHDX-файлами.
- При создании файловой системы укажите количество групп, которые должны быть 4096, например:
Время ожидания меню Grub на Виртуальные машины поколения 2
Из-за удаления устаревшего оборудования из эмуляции на виртуальных машинах поколения 2 таймер меню grub отсчитывается слишком быстро, чтобы отображалось меню grub, немедленно загружая запись по умолчанию. Пока grub не будет исправлен для использования таймера, поддерживаемого EFI, измените /boot/grub/grub.conf, /etc/default/grub или эквивалентно значению timeout=100000 вместо значения по умолчанию «timeout=5».
Загрузка PxE на Виртуальные машины поколения 2
Так как таймер PIT отсутствует в Виртуальные машины поколения 2, сетевые подключения к серверу PxE TFTP могут быть преждевременно завершены и запретить загрузчику считывать конфигурацию Grub и загружать ядро с сервера.
В дистрибутивах Linux, отличных от RHEL 6.x, можно выполнить аналогичные действия, чтобы настроить grub v0.97 для загрузки ядер Linux с PxE-сервера.
Кроме того, на клавиатуре RHEL/CentOS 6.6 и вводе мыши не будет работать с ядром предварительной установки, которое предотвращает указание параметров установки в меню. Последовательная консоль должна быть настроена, чтобы разрешить выбор параметров установки.
- В файле efidefault на сервере PxE добавьте следующий параметр ядра console=ttyS1.
- На виртуальной машине в Hyper-V настройте COM-порт с помощью этого командлета PowerShell:
Set-VMComPort -VMName -Number 2 -Path \\.\pipe\dbg1
Указание файла kickstart для предварительной установки ядра также позволит избежать необходимости ввода клавиатуры и мыши во время установки.
Использование статических MAC-адресов с отказоустойчивой кластеризации
Виртуальные машины Linux, которые будут развернуты с помощью отказоустойчивой кластеризации, должны быть настроены со статическим mac-адресом управления доступом к мультимедиа для каждого виртуального сетевого адаптера. В некоторых версиях Linux конфигурация сети может быть потеряна после отработки отказа, так как новый MAC-адрес назначается виртуальному сетевому адаптеру. Чтобы избежать потери конфигурации сети, убедитесь, что каждый виртуальный сетевой адаптер имеет статический MAC-адрес. MAC-адрес можно настроить, изменив параметры виртуальной машины в диспетчере Hyper-V или диспетчере отказоустойчивости кластеров.
Использование сетевых адаптеров Hyper-V, а не устаревших сетевых адаптеров
Настройте и используйте виртуальный адаптер Ethernet, который является сетевой картой Hyper-V с повышенной производительностью. Если к виртуальной машине подключены устаревшие сетевые адаптеры и сетевые адаптеры Hyper-V, имена сети в выходных данных ifconfig могут отображать случайные значения, такие как _tmp12000801310. Чтобы избежать этой проблемы, удалите все устаревшие сетевые адаптеры при использовании сетевых адаптеров Hyper-V на виртуальной машине Linux.
Использование noop/none планировщика ввода-вывода для повышения производительности дискового ввода-вывода
Ядро Linux предлагает два набора планировщиков дискового ввода-вывода для переупорядочения запросов. Один набор предназначен для более старой подсистемы blk, а один набор предназначен для более новой подсистемы blk-mq. В любом случае с сегодняшними твердотельными дисками рекомендуется использовать планировщик, который передает решения о планировании в базовый гипервизор Hyper-V. Для ядер Linux, использующих подсистему blk, это планировщик noop. Для ядер Linux, использующих подсистему blk-mq, это планировщик none.
Для конкретного диска доступные планировщики можно увидеть в этом расположении файловой системы: /sys/class/block/queue/ scheduler с выбранным планировщиком в квадратных скобках. Планировщик можно изменить, написав его в это расположение файловой системы. Изменение должно быть добавлено в скрипт инициализации, чтобы сохраниться во время перезагрузки. Дополнительные сведения см. в документации по дистрибутиву Linux.
NUMA
Версии ядра Linux ниже 2.6.37 не поддерживают NUMA в Hyper-V с виртуальными машинами большего размера. Эта проблема влияет в основном на дистрибутивы более ранних версий, в которых используется исходное ядро Red Hat 2.6.32, и была исправлена в Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504). В системах под управлением модифицированных ядер старше версии 2.6.37 или ядер RHEL старше 2.6.32-504 в командной строке ядра необходимо задать параметр загрузки numa=off в файле grub.conf. Дополнительные сведения см. в статье базы знаний Red Hat 436883.
Резервировать больше памяти для kdump
Если ядро записи дампа завершится паникой при загрузке, зарезервировать больше памяти для ядра. Например, измените параметр crashkernel=384M-:128M на crashkernel=384M-:256M в файле конфигурации Ubuntu grub.
Сжатие VHDX или расширение файлов VHD и VHDX может привести к ошибочной таблице секций GPT
Hyper-V позволяет сжимать файлы виртуального диска (VHDX) без учета структур данных секции, тома или файловой системы, которые могут существовать на диске. Если VHDX -shrunk to where the end of the VHDX is is the end the end of a partition, can be lost, that partition can be corrupted, or invalid data can be returned when the partition is read.
После изменения размера VHD или VHDX администраторы должны использовать служебную программу, например пииск или частично, чтобы обновить структуры секции, тома и файловой системы, чтобы отразить изменение размера диска. Сжатие или расширение размера виртуального жесткого диска или VHDX с таблицей разделов GUID (GPT) приведет к возникновению предупреждения при использовании средства управления секциями для проверки макета секции, и администратору будет предостеречь исправить первые и вторичные заголовки GPT. Этот шаг вручную является безопасным для выполнения без потери данных.
Дополнительные ссылки
Best Practices for running Linux on Hyper-V
Applies to: 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
This topic contains a list of recommendations for running Linux virtual machine on Hyper-V.
Tuning Linux File Systems on Dynamic VHDX Files
Some Linux file systems may consume significant amounts of real disk space even when the file system is mostly empty. To reduce the amount of real disk space usage of dynamic VHDX files, consider the following recommendations:
PS > New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
- The ext4 format is preferred to ext3 because ext4 is more space efficient than ext3 when used with dynamic VHDX files.
- When creating the filesystem specify the number of groups to be 4096, for example:
Grub Menu Timeout on Generation 2 Virtual Machines
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. 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 Boot on Generation 2 Virtual Machines
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.
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.
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. A serial console must be configured to allow choosing installation options.
- In the efidefault file on the PxE server, add the following kernel parameter «console=ttyS1»
- On the VM in Hyper-V, set up a COM port using this PowerShell cmdlet:
Set-VMComPort -VMName -Number 2 -Path \\.\pipe\dbg1
Specifying a kickstart file to the pre-install kernel would also avoid the need for keyboard and mouse input during installation.
Use static MAC addresses with failover clustering
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 some versions of Linux, the networking configuration may be lost after failover because a new MAC address is assigned to the virtual network adapter. To avoid losing the network configuration, ensure that each virtual network adapter has a static MAC address. You can configure the MAC address by editing the settings of the virtual machine in Hyper-V Manager or Failover Cluster Manager.
Use Hyper-V-specific network adapters, not the legacy network adapter
Configure and use the virtual Ethernet adapter, which is a Hyper-V-specific network card with enhanced performance. 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. To avoid this issue, remove all legacy network adapters when using Hyper-V-specific network adapters in a Linux virtual machine.
Use I/O scheduler noop/none for better disk I/O performance
The Linux kernel offers two sets of disk I/O schedulers to reorder requests. One set is for the older ‘blk’ subsystem and one set is for the newer ‘blk-mq’ subsystem. 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. For Linux kernels using the ‘blk’ subsystem, this is the “noop” scheduler. For Linux kernels using the ‘blk-mq’ subsystem, this is the “none” scheduler.
For a particular disk, the available schedulers can be seen at this file system location: /sys/class/block/ /queue/scheduler, with the currently selected scheduler in square brackets. You can change the scheduler by writing to this file system location. The change must be added to an initialization script in order to persist across reboots. Consult your Linux distro documentation for details.
NUMA
Linux kernel versions earlier than 2.6.37 don’t support NUMA on Hyper-V with larger VM sizes. 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). 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. For more information, see Red Hat KB 436883.
Reserve more memory for kdump
In case the dump capture kernel ends up with a panic on boot, reserve more memory for the kernel. For example, change the parameter crashkernel=384M-:128M to crashkernel=384M-:256M in the Ubuntu grub configuration file.
Shrinking VHDX or expanding VHD and VHDX files can result in erroneous GPT partition tables
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. 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.
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. 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. This manual step is safe to perform without data loss.