Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La création d’une machine virtuelle Linux est facile à effectuer à partir de la ligne de commande ou du portail. Ce tutoriel vous montre comment vous assurer que vous l’avez configuré pour optimiser ses performances sur la plateforme Microsoft Azure. Cette rubrique utilise une machine virtuelle Ubuntu Server, mais vous pouvez également créer une machine virtuelle Linux à l’aide de vos propres images en tant que modèles.
Conditions préalables
Cette rubrique part du principe que vous disposez déjà d’un abonnement Azure opérationnel (inscription d’essai gratuit) et que vous avez déjà approvisionné une machine virtuelle dans votre abonnement Azure. Vérifiez que vous disposez de la dernière version d’Azure CLI installée et connectée à votre abonnement Azure avec az login avant de créer une machine virtuelle.
Disque du système d’exploitation Azure
Une fois que vous avez créé une machine virtuelle Linux dans Azure, deux disques lui sont associés. /dev/sda est votre disque de système d’exploitation, /dev/sdb est votre disque temporaire. N’utilisez pas le disque principal du système d’exploitation (/dev/sda) pour n’importe quoi, à l’exception du système d’exploitation, car il est optimisé pour le temps de démarrage rapide de la machine virtuelle et ne fournit pas de bonnes performances pour vos charges de travail. Vous souhaitez attacher un ou plusieurs disques à votre machine virtuelle pour obtenir un stockage persistant et optimisé pour vos données.
Ajout de disques pour optimiser la taille et les performances
En fonction de la taille de la machine virtuelle, vous pouvez attacher jusqu’à 16 disques supplémentaires sur une série A, 32 disques sur une série D et 64 disques sur un ordinateur de série G, chacun de 32 To. Vous pouvez ajouter des disques supplémentaires selon vos besoins en espace et en Iops. Chaque disque a une cible de performances de 500 IOps pour le stockage Standard et jusqu’à 20 000 IOps par disque pour le stockage Premium.
Pour obtenir les IOps les plus élevées sur les disques de stockage Premium où leurs paramètres de cache ont été définis sur ReadOnly ou None, vous devez désactiver les barrières lors du montage du système de fichiers dans Linux. Vous n'avez pas besoin de barrières, car les écritures sur les disques soutenus par le stockage Premium sont durables pour ces paramètres de cache.
- Si vous utilisez reiserFS, désactivez les barrières à l’aide de l’option
barrier=nonede montage (pour activer les barrières, utiliserbarrier=flush) - Si vous utilisez ext3/ext4, désactivez les barrières à l’aide de l’option
barrier=0de montage (pour activer les barrières, utiliserbarrier=1) - Si vous utilisez XFS, désactivez les barrières à l’aide de l’option
nobarrierde montage (pour activer les barrières, utilisez l’optionbarrier)
Considérations relatives au compte de stockage non managé
L’action par défaut lorsque vous créez une machine virtuelle avec Azure CLI consiste à utiliser des disques managés Azure. Ces disques sont gérés par la plateforme Azure et ne nécessitent aucune préparation ni emplacement pour les stocker. Les disques non managés nécessitent un compte de stockage et présentent des considérations supplémentaires sur les performances. Pour plus d’informations sur les disques managés, consultez Vue d’ensemble d’Azure Disques managés. La section suivante décrit les considérations relatives aux performances uniquement lorsque vous utilisez des disques non managés. Là encore, la solution de stockage par défaut et recommandée consiste à utiliser des disques managés.
Si vous créez une machine virtuelle avec des disques non managés, veillez à attacher des disques à partir de comptes de stockage résidant dans la même région que votre machine virtuelle pour garantir une proximité étroite et réduire la latence réseau. Chaque compte de stockage Standard a un maximum de 20 000 IOps et une capacité de taille de 500 To. Cette limite s’applique à environ 40 disques fortement utilisés, y compris le disque du système d’exploitation et tous les disques de données que vous créez. Pour les comptes de stockage Premium, il n’existe aucune limite d’IOps maximale, mais il existe une limite de taille de 32 To.
Lorsque vous gérez des charges de travail à forte IOps et que vous avez choisi le stockage standard pour vos disques, vous devrez peut-être répartir les disques sur plusieurs comptes de stockage pour vous assurer que vous n’atteignez pas la limite de 20 000 IOps par compte de stockage standard. Votre machine virtuelle peut contenir un mélange de disques provenant de différents comptes de stockage et types de comptes de stockage pour obtenir votre configuration optimale.
Votre lecteur temporaire de machine virtuelle
Par défaut, lorsque vous créez une machine virtuelle, Azure vous fournit un disque de système d’exploitation (/dev/sda) et un disque temporaire (/dev/sdb). Tous les disques supplémentaires que vous ajoutez s’affichent en tant que /dev/sdc, /dev/sdd, /dev/sde , et ainsi de suite. Toutes les données sur votre disque temporaire (/dev/sdb) ne sont pas durables et peuvent être perdues si des événements spécifiques tels que le redimensionnement, le redéploiement ou la maintenance forcent un redémarrage de votre machine virtuelle. La taille et le type de votre disque temporaire sont liés à la taille de machine virtuelle que vous avez choisie au moment du déploiement. Toutes les machines virtuelles de taille premium (séries DS, G et DS_V2) ont un lecteur temporaire qui est soutenu par un disque SSD local pour offrir des performances supplémentaires allant jusqu'à 48 000 IOPS.
Partition d’échange Linux
Si votre machine virtuelle Azure provient d’une image Ubuntu ou CoreOS, vous pouvez utiliser CustomData pour envoyer une configuration cloud à cloud-init. Si vous avez chargé une image Linux personnalisée qui utilise cloud-init, vous configurez également des partitions d’échange à l’aide de cloud-init.
Vous ne pouvez pas utiliser le fichier /etc/waagent.conf pour gérer l’échange pour toutes les images approvisionnées et prises en charge par cloud-init. Pour obtenir la liste complète des images, consultez Utilisation de cloud-init.
Le moyen le plus simple de gérer l’échange pour ces images consiste à effectuer les étapes suivantes :
Dans le dossier /var/lib/cloud/scripts/per-boot , créez un fichier appelé create_swapfile.sh :
$ sudo touch /var/lib/cloud/scripts/per-boot/create_swapfile.sh
Ajoutez les lignes suivantes au fichier :
$ sudo vi /var/lib/cloud/scripts/per-boot/create_swapfile.sh
#!/bin/sh if [ ! -f '/mnt/swapfile' ]; then fallocate --length 2GiB /mnt/swapfile chmod 600 /mnt/swapfile mkswap /mnt/swapfile swapon /mnt/swapfile swapon -a ; fiRemarque
Vous pouvez modifier la valeur en fonction de vos besoins et en fonction de l’espace disponible dans votre disque de ressources, qui varie en fonction de la taille de machine virtuelle utilisée.
Rendez le fichier exécutable :
$ sudo chmod +x /var/lib/cloud/scripts/per-boot/create_swapfile.sh
Pour créer le fichier d’échange, exécutez le script juste après la dernière étape :
$ sudo /var/lib/cloud/scripts/per-boot/./create_swapfile.sh
Pour les images sans support de cloud-init, les images de machine virtuelle déployées à partir de l'Azure Marketplace ont un agent Linux de VM intégré au système d'exploitation. Cet agent permet à la machine virtuelle d’interagir avec différents services Azure. En supposant que vous avez déployé une image standard à partir de la Place de marché Azure, vous devez effectuer les opérations suivantes pour configurer correctement les paramètres de votre fichier d’échange Linux :
Recherchez et modifiez deux entrées dans le fichier /etc/waagent.conf . Ils contrôlent l’existence d’un fichier d’échange dédié et de la taille du fichier d’échange. Les paramètres que vous devez vérifier sont ResourceDisk.EnableSwap et ResourceDisk.SwapSizeMB
Pour activer un disque correctement activé et un fichier d’échange monté, vérifiez que les paramètres ont les paramètres suivants :
- ResourceDisk.EnableSwap=Y
- ResourceDisk.SwapSizeMB={la taille en Mo pour répondre à vos besoins}
Une fois que vous avez apporté la modification, vous devez redémarrer le waagent ou redémarrer votre machine virtuelle Linux pour refléter ces modifications. Vous savez que les modifications ont été implémentées et qu’un fichier d’échange a été créé lorsque vous utilisez la commande pour afficher l’espace free libre. L’exemple suivant contient un fichier d’échange de 512 Mo créé suite à la modification du fichier waagent.conf :
azuseruser@myVM:~$ free
total used free shared buffers cached
Mem: 3525156 804168 2720988 408 8428 633192
-/+ buffers/cache: 162548 3362608
Swap: 524284 0 524284
Algorithme de planification des E/S pour le stockage Premium
Avec le noyau Linux 2.6.18, l’algorithme de planification d’E/S par défaut a été modifié de Deadline à CFQ (algorithme de mise en file d’attente complètement équitable). Pour les modèles d’E/S d’accès aléatoire, il existe une différence négligeable dans les différences de performances entre CFQ et Deadline. Pour les disques SSD où le modèle d’E/S de disque est principalement séquentiel, le basculement vers l’algorithme NOOP ou Deadline peut obtenir de meilleures performances d’E/S.
Afficher le planificateur d’E/S actuel
Utilisez la commande suivante :
cat /sys/block/sda/queue/scheduler
Vous voyez la sortie suivante, qui indique le planificateur actuel.
noop [deadline] cfq
Modifier l’appareil actuel (/dev/sda) de l’algorithme de planification des E/S
Utilisez les commandes suivantes :
azureuser@myVM:~$ sudo su -
root@myVM:~# echo "noop" >/sys/block/sda/queue/scheduler
root@myVM:~# sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX_DEFAULT="quiet splash elevator=noop"/g' /etc/default/grub
root@myVM:~# update-grub
Remarque
L’application de ce paramètre pour /dev/sda seul n’est pas utile. Configurez tous les disques de données où les E/S séquentielles dominent le modèle d’E/S.
Vous devez voir la sortie suivante, indiquant que grub.cfg a été reconstruit correctement et que le planificateur par défaut a été mis à jour vers NOOP.
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.13.0-34-generic
Found initrd image: /boot/initrd.img-3.13.0-34-generic
Found linux image: /boot/vmlinuz-3.13.0-32-generic
Found initrd image: /boot/initrd.img-3.13.0-32-generic
Found memtest86+ image: /memtest86+.elf
Found memtest86+ image: /memtest86+.bin
done
Pour la famille de distribution Red Hat, vous avez uniquement besoin de la commande suivante :
echo 'echo noop >/sys/block/sda/queue/scheduler' >> /etc/rc.local
Ubuntu 18.04 avec le noyau optimisé pour Azure utilise des planificateurs d’E/S à file d’attente multiple. Dans ce scénario, none est la sélection appropriée au lieu de noop. Pour plus d’informations, consultez Planificateurs d’E/S Ubuntu.
Utilisation du RAID logiciel pour obtenir des E/S supérieures
Si vos charges de travail nécessitent plus d’IOps qu’un seul disque peut fournir, vous devez utiliser une configuration RAID logicielle de plusieurs disques. Étant donné qu’Azure effectue déjà une résilience de disque au niveau de la couche d’infrastructure locale, vous obtenez le niveau de performances le plus élevé à partir d’une configuration de bandes RAID-0. Provisionnez et créez des disques dans l’environnement Azure et attachez-les à votre machine virtuelle Linux avant le partitionnement, la mise en forme et le montage des lecteurs. Pour plus d’informations sur la configuration d’un raid logiciel sur votre machine virtuelle Linux dans Azure, consultez le document Configuration du RAID logiciel sur Linux .
En guise d’alternative à une configuration RAID traditionnelle, vous pouvez également choisir d’installer Logical Volume Manager (LVM) afin de configurer un certain nombre de disques physiques en un seul volume de stockage logique à bandes. Dans cette configuration, les lectures et les écritures sont distribuées sur plusieurs disques contenus dans le groupe de volumes (comme RAID0). Pour des raisons de performances, vous voudrez probablement entrelacer vos volumes logiques afin que les lectures et les écritures utilisent tous vos disques de données connectés. Pour plus de détails sur la configuration d’un volume logique rayé sur votre VM Linux dans Azure, consultez le document Configurer LVM sur une machine virtuelle Linux dans Azure.
Étapes suivantes
N’oubliez pas que, comme avec toutes les discussions d’optimisation, vous devez effectuer des tests avant et après chaque modification pour mesurer l’impact de la modification. L’optimisation est un processus pas à pas qui a des résultats différents sur différents ordinateurs de votre environnement. Ce qui fonctionne pour une configuration peut ne pas fonctionner pour d’autres personnes.
Quelques liens utiles vers des ressources supplémentaires :