Meilleures pratiques pour l’exécution de Linux sur Hyper-V

S’applique à : 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

Cette rubrique contient une liste de recommandations pour l’exécution d’un ordinateur virtuel Linux sur Hyper-V.

Paramétrage des systèmes de fichiers Linux sur des fichiers VHDX dynamiques

Certains systèmes de fichiers Linux peuvent consommer des quantités importantes d’espace disque réel, même lorsque le système de fichiers est principalement vide. Pour réduire la quantité d’espace disque réel utilisé par les fichiers VHDX dynamiques, tenez compte des recommandations suivantes :

  • Lors de la création du VHDX, utilisez une valeur BlockSizeBytes de 1 Mo (plutôt que les 32 Mo par défaut) dans PowerShell, par exemple :
PS > New-VHD -Path C:\MyVHDs\test.vhdx -SizeBytes 127GB -Dynamic -BlockSizeBytes 1MB
  • Le format ext4 est préférable à ext3, car ext4 est plus efficace en terme d’espace qu’ext3 en cas d’utilisation avec des fichiers VHDX dynamiques.

  • Lors de la création du système de fichiers, spécifiez 4096 comme nombre de groupes, par exemple :

# mkfs.ext4 -G 4096 /dev/sdX1

Délai d’expiration du menu de Grub sur les ordinateurs virtuels de génération 2

En raison de la suppression du matériel hérité de l’émulation dans les ordinateurs virtuels de génération 2, le compte à rebours du menu de Grub est trop rapide pour que le menu de Grub soit affiché, chargeant immédiatement l’entrée par défaut. Jusqu’à ce que Grub soit corrigé de façon à utiliser le minuteur pris en charge par EFI, modifiez /boot/grub/grub.conf, /etc/default/grub, ou équivalent de façon à avoir « timeout=100000 » au lieu de la valeur par défaut « timeout=5 ».

Démarrage PxE sur les ordinateurs virtuels de génération 2

Étant donné que le minuteur PIT n’est pas présent dans les ordinateurs virtuels de génération 2, les connexions réseau au serveur TFTP PxE peuvent être interrompues prématurément, et empêcher le chargeur de démarrage de lire la configuration Grub et de charger un noyau à partir du serveur.

Sur RHEL 6.x, le chargeur de démarrage EFI v0.97 hérité Grub peut être utilisé au lieu de grub2, comme décrit ici : https://access.redhat.com/documentation/Red_Hat_Enterprise_Linux/6/html/Installation_Guide/s1-netboot-pxe-config-efi.html

Sur les distributions Linux autres que RHEL 6.x, des étapes similaires peuvent être suivies pour configurer Grub v0.97 afin de charger des noyaux Linux à partir d’un serveur PxE.

En outre, sur RHEL/CentOS 6.6, l’entrée clavier et souris ne fonctionnera pas avec le noyau préinstallé, ce qui empêche de spécifier des options d’installation dans le menu. Une console série doit être configurée pour permettre le choix des options d’installation.

  • Dans le fichier efidefault sur le serveur PxE, ajoutez le paramètre de noyau suivant « console=ttyS1 »

  • Sur l’ordinateur virtuel dans Hyper-V, configurez un port COM à l’aide de cette applet de commande PowerShell :

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

La spécification d’un fichier kickstart sur le noyau préinstallé éviterait également de devoir recourir à l’entrée clavier et souris lors de l’installation.

Utiliser des adresses MAC statiques avec le clustering de basculement

Les ordinateurs virtuels Linux qui seront déployés à l’aide du clustering de basculement doivent être configurées avec une adresse MAC (Media Access Control) statique pour chaque carte réseau virtuelle. Dans certaines versions de Linux, la configuration réseau peut être perdue après le basculement, car une nouvelle adresse MAC est affectée à la carte réseau virtuelle. Pour éviter de perdre la configuration réseau, assurez-vous que chaque carte réseau virtuelle a une adresse MAC statique. Vous pouvez configurer l’adresse MAC en modifiant les paramètres de l’ordinateur virtuel dans le Gestionnaire Hyper-V ou le Gestionnaire du cluster de basculement.

Utiliser des cartes réseau propres à Hyper-V, et non la carte réseau héritée

Configurez et utilisez l’adaptateur Ethernet virtuel, qui est une carte réseau propre à Hyper-V avec des performances améliorées. Si des cartes réseau héritées et propres à Hyper-V sont attachées à un ordinateur virtuel, les noms de réseau dans la sortie de ifconfig -a peuvent afficher des valeurs aléatoires telles que _tmp12000801310. Pour éviter ce problème, supprimez toutes les cartes réseau héritées lors de l’utilisation de cartes réseau propres à Hyper-V dans un ordinateur virtuel Linux.

Utiliser le planificateur d’E/S noop/none pour de meilleures performances d’E/S disque

Le noyau Linux offre deux ensembles de planificateurs d’E/S de disque pour réorganiser les requêtes. L’un des ensembles concerne l’ancien sous-système « blk », et l’autre le sous-système « blk-mq » plus récent. Dans les deux cas, avec les disques SSD d’aujourd’hui, il est recommandé d’utiliser un planificateur qui transmet les décisions de planification à l’hyperviseur Hyper-V sous-jacent. Pour les noyaux Linux qui utilisent le sous-système « blk », il s’agit du planificateur « noop ». Pour les noyaux Linux qui utilisent le sous-système « blk-mq », il s’agit du planificateur « none ».

Pour un disque particulier, les planificateurs disponibles sont visibles à l’emplacement du système de fichiers suivant : /sys/class/block/<diskname>/queue/scheduler, avec le planificateur actuellement sélectionné entre crochets. Vous pouvez modifier le planificateur en écrivant dans cet emplacement du système de fichiers. La modification doit être ajoutée à un script d’initialisation afin de persister entre les redémarrages. Pour plus d’informations, consultez la documentation de la distribution Linux.

NUMA

Les versions du noyau Linux antérieures à la version 2.6.37 ne prennent pas en charge NUMA sur Hyper-V avec des machines virtuelles de taille supérieure. Ce problème concerne principalement les distributions antérieures utilisant le noyau Red Hat 2.6.32 en amont ; il a été corrigé dans Red Hat Enterprise Linux (RHEL) 6.6 (kernel-2.6.32-504). Pour les systèmes exécutant des noyaux personnalisés dont la version est antérieure à la version 2.6.37 ou des noyaux basés sur RHEL antérieurs à la version 2.6.32-504, le paramètre de démarrage numa=off doit être défini sur la ligne de commande du noyau dans grub.conf. Pour plus d’informations, consultez l’article KB 436883 sur Red Hat.

Réserver davantage de mémoire pour kdump

Si le noyau de capture de vidage se retrouve avec une panique au démarrage, réservez davantage de mémoire pour le noyau. Par exemple, remplacez le paramètre crashkernel=384M-:128M par crashkernel=384M-:256M dans le fichier de configuration Grub Ubuntu.

La réduction de VHDX ou l’extension des fichiers VHD et VHDX peuvent entraîner la présence de tables de partition GPT erronées

Hyper-V permet de réduire les fichiers de disque virtuel (VHDX) sans tenir compte des structures de données de partition, de volume ou de système de fichiers qui peuvent exister sur le disque. Si le VHDX est réduit à l’emplacement où la fin du VHDX arrive avant la fin d’une partition, des données peuvent être perdues, cette partition peut être endommagée ou des données non valides peuvent être retournées lorsque la partition est lue.

Après le redimensionnement d’un VHD ou d’un VHDX, les administrateurs doivent utiliser un utilitaire comme fdisk ou parted pour mettre à jour les structures de la partition, du volume et du système de fichiers afin de refléter la modification de la taille du disque. La réduction ou l’augmentation de la taille d’un VHD ou d’un VHDX doté d’une table de partition GUID (GPT) entraîne l’affichage d’un avertissement lorsqu’un outil de gestion de partition est utilisé pour vérifier la disposition de la partition, et l’administrateur est informé qu’il doit corriger les en-têtes GPT premier et secondaire. Cette étape manuelle peut être effectuée sans perte de données.

Références supplémentaires