Les technologies de virtualisation sont aujourd'hui en demande non seulement dans le segment des «grandes entreprises», mais aussi dans les PME et chez les utilisateurs à domicile. En particulier, pour les petites entreprises, les serveurs de virtualisation peuvent être utilisés pour implémenter un certain nombre de services de service peu gourmands en ressources. Il s'agit généralement de serveurs autonomes basés sur des plates-formes à processeur unique ou double, avec une quantité relativement faible de RAM dans 32 à 64 Go et sans systèmes de stockage haute performance spéciaux. Mais au-delà de toute la série d'avantages, vous devez être conscient qu'en termes de performances, les systèmes virtuels sont différents des vrais. Dans cet article, nous comparerons les vitesses de différents types de disques locaux (HDD, SSD et NVMe) pour plusieurs configurations de machines virtuelles afin d'estimer les pertes de leur virtualisation. Personne ne conteste que dans les «bonnes» implémentations des systèmes de virtualisation, il est préférable d'utiliser le stockage externe, mais dans la version économique, vous pouvez vous en tirer avec les disques locaux.
Des tests ont été effectués sur le serveur de la configuration suivante: carte mère Asus Z10PE-D16, deux processeurs Intel Xeon E5-2609 v3, 64 Go de RAM. Proxmox VE version 5.2, un système open source basé sur Debian, a été choisi comme environnement de virtualisation. Pour son installation, un SSD SATA distinct a été utilisé et les disques testés ont été connectés séparément à d'autres interfaces et ports.
Tout d'abord, testez le lecteur à partir de la plate-forme hôte. La deuxième option consiste à transmettre à la machine virtuelle (KVM et Debian 9 sont utilisés pour cela, 2 cœurs et 8 Go de RAM sont alloués) en tant que disque physique. La troisième configuration est un disque virtuel sur LVM. Le quatrième est un fichier RAW sur un volume avec un système de fichiers ext4. Dans les deux dernières options, une taille de disque de 64 Go a été choisie. Ainsi, un résultat supplémentaire de l'article peut être une comparaison de LVM et RAW pour le stockage d'images de disque virtuel.
L'utilitaire fio avec des modèles séquentiels de lecture et d'écriture avec un bloc de 256 Ko et des opérations aléatoires avec un bloc de 4 Ko sera utilisé pour mesurer la vitesse. Des tests ont été effectués avec le paramètre iodepth de 1 à 256 afin d'émuler différentes charges. Pour les opérations séquentielles, nous estimons la vitesse en Mo / s, pour les opérations aléatoires - IOPS. De plus, nous regardons les retards moyens (clat du rapport de test).
Commençons par un disque dur traditionnel, dans le rôle des personnes âgées HGST HUH728080ALE640 - un lecteur avec une interface SATA et une capacité de 2 To. L'utilisation de disques durs simples, surtout s'il n'y a pas d'exigences de volume, dans le scénario décrit de virtualisation à faible coût pour une petite charge peut être considérée comme une option typique si vous enregistrez complètement ou "sculptez à partir de ce qui était" et que vous n'incluez pas cette option en considération serait une erreur.


À la lecture, toutes les options, à l'exception de la dernière, affichent approximativement les mêmes résultats au niveau de 190 Mo / s (uniquement avec une charge élevée avec iodepth = 256 pour le passthrough et LVM, les résultats sont réduits à 150 Mo / s). Alors que brut, grâce à la mise en cache sur l'hôte, «vole dans l'espace» et les autres ne sont plus visibles sur son arrière-plan. D'une part, on peut dire que le test utilisé et les paramètres système ne nous permettent pas d'évaluer correctement la vitesse de cette configuration et de montrer les performances non pas de la RAM, mais de la RAM. D'un autre côté, la mise en cache est l'une des technologies les plus efficaces et les plus courantes pour augmenter la productivité, et si cela fonctionne, il serait étrange de la refuser. Mais n'oubliez pas une alimentation fiable dans de telles configurations.


Il n'y a plus un tel effet sur l'enregistrement, donc dans les opérations séquentielles, toutes les configurations sont à peu près les mêmes - la vitesse maximale est d'environ 190 Mo / s. Bien que brut se comporte toujours différemment des autres - avec une petite charge, il est plus lent, mais au maximum, il ne ralentit pas comme les autres. Il n'y a pas de différences de délais.
L'utilisation du cache d'hôte est également perceptible dans les opérations de lecture aléatoire - ici, raw est toujours le plus rapide et affiche jusqu'à 950 IOPS. Environ deux fois plus lent que LVM - jusqu'à 450 IOPS. Eh bien, le disque dur lui-même, y compris le "transfert" au système invité, affiche environ 200 IOPS. La répartition des participants sur le calendrier des retards est cohérente avec les vitesses.
Sur les opérations d'écriture aléatoire, la configuration lvm, qui fournissait jusqu'à 400 IOPS, s'est révélée être la meilleure. Il est suivi de raw (~ 330 IOPS), et les deux derniers participants avec 290 IOPS ferment la liste. Il n'y a aucune différence notable dans les retards.
En général, si vous n'avez pas besoin des fonctions fournies par lvm et que le critère clé n'est pas la vitesse d'écriture aléatoire, il est préférable d'utiliser le raw en termes de vitesse lors du placement de disques virtuels sur le stockage local. L'application de la technologie pour transférer un disque physique vers une machine virtuelle n'offre pas d'avantages de performances dans ce cas. Mais cela peut être intéressant si vous souhaitez connecter un lecteur avec des données existantes à la machine virtuelle.
Le deuxième participant au test est le Samsung 850 EVO SSD. Compte tenu de son âge et de son travail dans un système sans TRIM, dans certains tests (notamment l'enregistrement séquentiel), il perd déjà sur le disque dur. Néanmoins, en raison d'un gain de performances significatif sur des opérations aléatoires devant un disque dur traditionnel, il est également très intéressant pour les machines virtuelles.
Le résultat de la lecture séquentielle en mode brut peut être commenté de manière similaire à la variante avec un disque dur. Mais ce qui est plus intéressant ici, c'est que les deux premières configurations affichent une stabilité de 370 Mo / s sous une charge élevée, tandis que lvm n'est capable que de 190 Mo / s. Les retards pour ce mode sont également plus élevés.
Sur les opérations d'écriture, comme déjà mentionné, ce SSD dans son état actuel ne semble pas très intéressant et affiche une vitesse de 100 Mo / s. Quant à la comparaison des configurations, dans ce test, le brut perd à faible charge à la fois en vitesse et en retard.
Les opérations aléatoires sont le principal SSD «atout». Ici, nous voyons que toutes les options «virtuelles» perdent sensiblement au profit d'un disque «propre» - elles ne fournissent que 30 000 IOPS, tandis que le SSD lui-même est capable de fonctionner trois fois plus rapidement. Apparemment, ici la limitation est la plate-forme matérielle et logicielle. Cependant, les retards dans ce test ne dépassent pas 7 ms, il est donc peu probable que cette différence d'IOPS puisse être remarquée par les applications générales.
Et sur un enregistrement aléatoire est un équilibre des pouvoirs différent. Le «vrai» disque est déjà en train de perdre, quoique légèrement. Il est capable d'afficher jusqu'à 4 200 IOPS. lvm et passthrough sont un ou deux cents de plus, et raw atteint déjà 5 500 IOPS. Sur le graphique des retards d'une vidéo évidemment intéressante, une fracture de iodepth = 32.
Les tests ont montré que le SSD se comportait différemment du disque dur dans ce scénario. Premièrement, la lecture séquentielle avec LVM est sensiblement en retard par rapport aux autres options. Deuxièmement, les disques virtuels sur les SSD perdent sensiblement dans les IOPS à lecture aléatoire.
Le troisième participant est quelque peu hors du «bon marché», mais ce produit en soi est très intéressant pour «l'accélérateur» universel des opérations sur disque et est capable de rivaliser en vitesse non seulement avec des disques simples, mais aussi avec des matrices RAID. Il s'agit d'Intel Optane. Dans ce cas, nous avons utilisé le modèle 900P pour le bus PCIe 3.0 x4, d'une capacité de 280 Go.
Intel Optane est déjà en mesure de rivaliser avec la RAM dans ce test. La différence n'est plus un ordre de grandeur, comme les autres participants, mais seulement deux à trois fois. De plus, avec une charge croissante, les valeurs sont pratiquement comparées. Les retards comme dans les tests ci-dessus sont plus faibles pour la configuration brute.
Dans les opérations d'écriture séquentielle, un lecteur «propre» perd même aux autres participants - avec une augmentation de la charge, ils atteignent une stabilité de 2 150 Mo / s, et cela réduit la vitesse à environ 1 700 Mo / s. Les retards dans ce cas ne peuvent pas être comparés.
Les opérations de lecture aléatoire de ce modèle SSD lors de son accès à partir de l'hôte peuvent fournir près de 200 000 IOPS (la vitesse sera au niveau de 760 Mo / s). Mais tous les autres schémas de connexion, comme nous l'avons vu ci-dessus pour les SSD avec une interface SATA, sont limités à 35 000 IOPS, ce qui ne peut que bouleverser. En conséquence, ils ont un retard plus élevé, environ cinq fois.
En enregistrement aléatoire, ce modèle de lecteur sans aucun doute unique affiche presque les mêmes résultats qu'en lecture aléatoire - environ 190 000 IOPS pour la connexion directe et 35 000 IOPS pour les autres options. Les retards coïncident également avec le graphique des opérations de lecture. D'un autre côté, plus de 700 Mo / s en enregistrement aléatoire dans de petits blocs - ces résultats doivent encore être recherchés.
L'utilisation du lecteur Intel Optane pour le problème étudié montre qu'il n'y aura pas de diminution significative de la vitesse sur les opérations séquentielles dans les systèmes d'exploitation invités. Mais si vous avez besoin d'IOPS élevés pour la lecture ou l'écriture aléatoire, cette plate-forme limitera les performances au niveau de 35 000 IOPS, bien que le lecteur lui-même soit cinq fois plus rapide.
Les tests ont montré que lors de la création de systèmes de stockage pour des serveurs virtuels, vous devez faire attention à certaines pertes de virtualisation si la vitesse est importante pour vos machines virtuelles. Dans la plupart des configurations testées, les disques virtuels affichent des indicateurs de performances considérablement différents des périphériques physiques. Cependant, pour les disques durs traditionnels, la différence est généralement relativement faible, car eux-mêmes ne sont pas si rapides. Pour les SSD SATA, des pertes importantes dans les IOPS peuvent être notées pour l'accès aléatoire, mais même ainsi, elles restent considérablement plus rapides dans ces tâches que Winchesters. Le lecteur Intel Optane a certainement perdu beaucoup dans l'environnement virtuel lors d'opérations aléatoires, mais même dans ce cas, il continue à rester incroyablement rapide à l'enregistrement. Et dans les opérations suivantes, il n'y a aucun commentaire sur lui. Un autre avantage significatif de cet appareil est sa performance stable - il ne nécessite aucune opération de nettoyage spéciale, de sorte que, quel que soit l'état et l'historique, ainsi que le système d'exploitation et ses paramètres, la vitesse sera constante à tout moment. Mais, comme d'habitude, rien ne se passe gratuitement. L'Intel Optane 900P est non seulement particulièrement rapide, mais aussi très cher.