Qu’est-ce qu’un VPS SSD et quel gain attendre ?
Un VPS SSD utilise de la mémoire flash, pas des disques mécaniques. Découvrez le gain réel en IOPS et latence, et les 3 questions à poser avant d’acheter.
Qu’est-ce qu’un VPS SSD ?
Un VPS SSD est un serveur privé virtuel dont le disque repose sur de la mémoire flash au lieu d’un disque dur à plateaux. SSD signifie solid state drive : un stockage constitué de puces de mémoire flash NAND, sans pièce mobile. VPS signifie virtual private server : une partie isolée d’une machine hôte physique, exécutant son propre système d’exploitation et vendue comme s’il s’agissait d’un serveur complet. Ces deux notions réunies impliquent une seule chose. Lorsque votre serveur lit un bloc de données, aucun élément mécanique n’a besoin de se déplacer au préalable.
C’est toute la définition. La suite traite de ce que cette appellation ne précise pas, car les mots « SSD hosting » sur une page tarifaire en disent très peu sur la baie de stockage utilisée.
Si vous cherchez encore à comprendre la différence entre un VPS et une simple machine virtuelle, la différence entre un VPS, une VM et un VPC est la page à consulter en premier.
Pourquoi les hébergeurs annoncent la vitesse du stockage plutôt que sa capacité
Une page d’offre indique le nombre de cœurs CPU, la mémoire, la capacité disque et la bande passante, puis ajoute un mot sur le disque qui ne désigne pas une capacité. Les hébergeurs font cela parce que la capacité n’est plus la caractéristique la plus intéressante du stockage depuis plusieurs années. Les deux valeurs qui déterminent les performances perçues d’un serveur sont les IOPS (opérations d’entrée/sortie par seconde) et la latence (le temps nécessaire au retour d’une opération).
La différence mécanique l’explique. Un disque dur stocke les données sur des plateaux en rotation et les lit avec une tête montée sur un bras mobile. Pour atteindre un bloc situé ailleurs sur le plateau, le bras doit effectuer une recherche, puis le disque doit tourner jusqu’à ce que le bon secteur passe sous la tête. À 7200 tours par minute, un demi-tour prend en moyenne environ 4 ms, et la recherche ajoute plusieurs millisecondes. La mémoire flash n’a ni bras ni plateau. Une lecture est donc une recherche électrique qui retourne un résultat en quelques dizaines de microsecondes.
The data behind this chart
[
{
"device": "7200 rpm hard disk",
"random_read_iops": "125",
"read_latency_ms": 8
},
{
"device": "SATA SSD",
"random_read_iops": "90,000",
"read_latency_ms": 0.15
},
{
"device": "NVMe SSD",
"random_read_iops": "600,000",
"read_latency_ms": 0.08
}
]Un disque dur à 7200 rpm est donné pour environ 125 lectures aléatoires de 4k par seconde. Chacune de ces lectures met environ 8 ms à retourner un résultat. Un disque NVMe est donné pour environ 600,000 lectures du même type, à environ 0.08 ms chacune. Le SSD SATA situé entre les deux est donné pour environ 90,000. Interprétez ces valeurs comme des ordres de grandeur, et non comme un pourcentage d’amélioration.
Deux avertissements concernant ces données. Il s’agit de spécifications publiées pour des disques complets de chaque catégorie. Ce sont donc des valeurs issues des fiches constructeur, et non des mesures effectuées sur un VPS. Vous ne disposez jamais d’un disque complet. Votre volume utilise une partie d’un appareil ou d’une baie, avec d’autres clients sur le même matériel.
Les deux colonnes répondent également à des questions différentes. Il faut donc les lire ensemble. La latence correspond au temps d’attente pour une opération. Les IOPS indiquent le nombre d’opérations que le disque peut traiter simultanément. La mémoire flash atteint ses valeurs élevées d’IOPS grâce au parallélisme, car de nombreuses puces flash répondent simultanément à de nombreuses requêtes tandis qu’une file d’attente profonde les maintient occupées. Un programme monothread qui émet une lecture, attend son résultat, puis émet la suivante n’atteindra jamais la valeur maximale du tableau. Il sera limité par la colonne de latence.
SSD, NVMe, SATA et PCIe : quatre termes correspondant à quatre couches différentes
Les acheteurs confondent ces termes, car chacun décrit une partie différente du système.
- SSD désigne le support. Les données sont stockées sur des puces de mémoire flash NAND, et non sur des plateaux magnétiques.
- SATA est une interface conçue à l'époque des disques mécaniques. Elle atteint au maximum 6 Gbit/s, soit environ 550 MB/s en débit réel, et sa file d'attente de commandes contient 32 commandes en attente.
- NVMe (non-volatile memory express) est un protocole conçu spécifiquement pour la mémoire flash. Il prend en charge de nombreuses files d'attente contenant chacune des milliers de commandes. Plusieurs cœurs de CPU peuvent ainsi communiquer avec le disque simultanément, sans partager une seule file d'attente étroite.
- PCIe (peripheral component interconnect express) est le bus utilisé par NVMe, du même type que les lanes sur lesquelles se branche une carte graphique.
Un SSD SATA et un SSD NVMe stockent donc tous deux les données sur de la mémoire flash. Ils utilisent des interfaces différentes. Un SSD SATA reste beaucoup plus rapide qu'un disque dur, mais sa file d'attente de 32 commandes limite le volume de travail parallèle qu'il peut gérer. Or la mémoire flash est particulièrement adaptée au travail parallèle. Le choix le plus intéressant dépend de votre charge de travail. la comparaison entre les SSD NVMe et SATA l'examine en détail.
Stockage flash local ou stockage connecté au réseau ?
Deux architectures très différentes sont vendues sous le même terme.
Le stockage local signifie que les disques flash se trouvent dans le même hôte physique que votre VPS. Une requête circule sur le bus PCIe à l’intérieur d’une seule machine, puis revient directement. C’est ainsi que la latence reste de l’ordre de quelques dizaines de microsecondes.
Le stockage connecté au réseau signifie que votre disque virtuel se trouve sur un cluster de stockage distinct, souvent basé sur Ceph ou un SAN (storage area network), et que chaque lecture et chaque écriture traversent le réseau pour l’atteindre. Les fournisseurs parlent généralement de « cloud block storage » ou d’« elastic volumes ». Le stockage flash est bien réel. Le passage par le réseau l’est aussi et s’ajoute à chaque opération. La latence atteint donc plusieurs centaines de microsecondes ou quelques millisecondes, au lieu de quelques dizaines.
Aucune de ces solutions n’est mauvaise. Le stockage réseau survit à la panne d’un hôte, car les données ne se trouvaient jamais sur cet hôte. Le fournisseur peut démarrer votre serveur sur un autre matériel et le disque le suit. Le stockage local NVMe est plus rapide et dépend d’une seule machine physique. Une panne matérielle sur cette machine impose donc une restauration depuis une sauvegarde. Demandez quelle solution utilise une offre. Presque personne ne le fait.
Ce que cela change sur un serveur réel
Le travail d’un serveur consiste principalement à effectuer de petites lectures et écritures aléatoires, et non de longs transferts séquentiels. C’est pourquoi la valeur en MB/s indiquée dans le texte marketing est le chiffre le moins utile de la page.
- Validation des transactions de base de données. Une base de données qui garantit la durabilité appelle
fsynclors de la validation d’une transaction, puis attend que le disque confirme que les données sont réellement stockées. Sur un disque dur, cette attente se compte en millisecondes, ce qui limite une petite base de données à quelques centaines de validations par seconde. Sur un support flash, la même attente ne représente qu’une fraction de milliseconde. C’est ici que l’écart est le plus important, que vous utilisiez PostgreSQL, MySQL ou SQLite comme base de données de production. - Installation de paquets.
apt installdécompresse des milliers de petits fichiers et les synchronise sur le disque au fur et à mesure. Presque aucune de ces opérations n’est séquentielle. Elles sont donc limitées par les IOPS. - Téléchargement d’images de conteneurs.
docker pullrécupère des couches compressées via le réseau, puis les extrait dans des milliers de petits fichiers. Le téléchargement est limité par le réseau. L’extraction est limitée par le disque. Sur un volume lent, c’est l’extraction qui vous fait attendre. - Démarrage et redémarrage. Le démarrage lit un noyau et un initramfs, puis des centaines de petits fichiers d’unités et de bibliothèques partagées répartis sur le volume.
Aucune de ces opérations ne consiste en une grande lecture séquentielle. Un volume qui atteint 500 MB/s en lecture séquentielle tout en ne fournissant que 3,000 IOPS semblera toujours lent pendant un docker compose pull, car l’attente est comptée fichier par fichier, et non mégaoctet par mégaoctet.
Pourquoi la mention « SSD cloud hosting » sur une page tarifaire ne vous apprend presque rien
Le terme décrit le support et s'arrête là. Il ne dit rien sur l'interface utilisée par le disque, ni sur le fait que ce disque se trouve ou non dans la même machine que votre serveur. Il ne dit pas non plus quel plafond votre offre est autorisée à atteindre.
Ce plafond est le facteur le plus important et celui qui est le moins souvent indiqué. Les fournisseurs limitent les IOPS et le débit par volume, car un même hôte sert plusieurs clients et un voisin sans limite peut priver les autres de ressources. Un plafond de quelques milliers d'IOPS sur du matériel capable d'en fournir plusieurs centaines de milliers est courant et honnête, mais il n'apparaît pas dans la description de l'offre. Deux offres peuvent toutes deux mentionner « SSD », alors que l'une utilise du NVMe local sans plafond par volume et que l'autre utilise un volume partagé sur un cluster, limité à 3,000 IOPS.
Les plafonds prennent deux formes. Un plafond soutenu est une limite fixe qui ne varie jamais. Un plafond avec burst fournit un niveau de base faible et des crédits qui vous permettent de le dépasser pendant un certain temps. Ces crédits se reconstituent lorsque le volume est inactif. Un plafond avec burst semble excellent lors d'un test de cinq minutes, puis le débit retombe au niveau de base au milieu d'une importation de base de données ou d'une restauration volumineuse. Si un fournisseur annonce un débit élevé, demandez combien de temps vous pouvez le maintenir.
Comment vérifier ce que votre VPS vous a réellement fourni
Depuis le guest, vous ne pouvez voir que ce que l’hyperviseur vous indique.
lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotationalRemplacez vda par le nom de périphérique lsblk affiché pour votre disque. ROTA et le fichier rotational renvoient 0 lorsque le kernel a été informé que le périphérique n’est pas rotatif, et 1 lorsqu’il a reçu l’information inverse. Un disque virtuel définit ce flag à partir de ce que l’hyperviseur annonce. Il décrit donc le périphérique virtuel, et non le matériel physique sous-jacent. MODEL est généralement vide pour un disque virtio tel que vda, ou contient une chaîne générique telle que QEMU HARDDISK sur un contrôleur SATA émulé. Les guests ne sont pas censés voir l’array de l’hôte, et ils ne le voient pas.
Considérez donc ce flag comme un indice et mesurez le reste. Exécutez un test aléatoire 4k avec fio sur un fichier du volume, avec la queue depth réellement utilisée par votre application, et assez longtemps pour épuiser tout burst credit. Effectuer correctement un benchmark d’un VPS contient les commandes fio et les erreurs courantes qui produisent des chiffres trop favorables.
Trois questions à poser à un fournisseur avant d’acheter
- Le stockage est-il local à l’hyperviseur ou connecté au réseau ? La réponse fixe votre latence minimale et détermine ce qui arrive à vos données lorsqu’un hôte physique tombe en panne. Un fournisseur qui répond clairement à cette question a étudié le sujet.
- Quelle est la limite d’IOPS sur mon volume ? Demandez un nombre. « Illimité » et « de niveau entreprise » ne sont pas des nombres. S’il n’y a vraiment aucune limite, demandez ce qui empêche un voisin sur le même hôte d’utiliser toute la baie pendant sa fenêtre de sauvegarde.
- Cette limite est-elle soutenue ou en mode burst ? Si elle fonctionne en burst, demandez la valeur de base et la durée du burst. La valeur de base est celle avec laquelle votre tâche nocturne devra fonctionner. C’est donc celle sur laquelle vous devez baser votre planification.
Les mémoires flash s’usent-elles, et est-ce votre problème ?
Les cellules flash acceptent un nombre limité de cycles d’écriture. Les disques indiquent donc une endurance en TBW (téraoctets écrits) ou en DWPD (écritures complètes du disque par jour). Le disque répartit les écritures entre ses cellules. Cette opération s’appelle le wear levelling. Il conserve également des blocs de réserve pour remplacer les cellules défaillantes. Sur un VPS, l’usure relève du fournisseur. Celui-ci surveille les compteurs SMART de ses propres disques et remplace le matériel avant que la limite d’endurance soit atteinte. Votre problème est plus ancien que la mémoire flash. Un disque n’est pas une sauvegarde. La redondance sous-jacente à votre volume n’est pas non plus une sauvegarde, car elle réplique une suppression aussi fidèlement que les données.
Le compromis que vous faites réellement concerne le prix par gigaoctet. La mémoire flash coûte plus cher par gigaoctet que les disques rotatifs. Une offre SSD propose donc généralement moins de capacité qu’une offre sur disque dur au même prix. Si vous avez besoin d’un espace important pour des médias ou des archives, gardez le volume rapide de petite taille et placez le volume principal ailleurs, à moindre coût. C’est également la bonne approche pour conserver les sauvegardes hors du serveur. Pour comprendre la place du stockage dans le reste de la facture, le coût réel d’un VPS détaille chaque poste.
FAQ
Un VPS SSD est-il la même chose qu’un VPS NVMe ?
Tous les VPS NVMe sont des VPS SSD, car les disques NVMe utilisent de la mémoire flash. L’inverse n’est pas vrai. Une offre annoncée comme « SSD » peut utiliser un SSD SATA. Il s’agit alors de mémoire flash derrière une interface conçue pour les disques mécaniques, avec une file d’attente de 32 commandes et un débit maximal proche de 550 MB/s. Les deux solutions sont bien plus rapides qu’un disque dur. Si cette différence compte pour votre charge de travail, demandez au fournisseur quel type de stockage l’offre utilise. Ne vous fiez pas uniquement au nom de l’offre.
Un VPS SSD rend-il mon site web plus rapide ?
Il accélère les opérations sur disque, et uniquement celles-ci. Une page qui exécute plusieurs requêtes de base de données par requête HTTP est plus rapide, car ces requêtes et leurs validations effectuent de petites opérations d’E/S aléatoires. Une page servie depuis la mémoire ou depuis un cache n’accède jamais au disque pendant son envoi. Le changement est donc minime. Mesurez la partie de la requête qui est lente avant de payer du stockage pour tenter de la corriger.
Comment vérifier si mon VPS utilise réellement un stockage SSD ?
Depuis le système invité, vous ne pouvez pas vérifier le matériel physique. lsblk -d -o NAME,ROTA affiche ce que le périphérique virtuel annonce. L’hyperviseur détermine cette valeur. Un 0 indique donc une possibilité, pas une preuve. La vérification pratique repose sur une mesure. Exécutez fio avec une charge de lecture aléatoire de 4k pendant plusieurs minutes, puis examinez la latence indiquée. Des lectures aléatoires en quelques millisecondes indiquent des disques rotatifs ou un volume réseau saturé. Des latences de plusieurs dizaines de microsecondes indiquent de la mémoire flash locale.
Un stockage SSD connecté au réseau est-il moins performant qu’un stockage NVMe local ?
Il est plus lent par opération et ses pannes sont différentes. Le temps d’aller-retour réseau s’ajoute à chaque lecture et à chaque écriture. La latence est donc plus élevée, même si les deux solutions utilisent de la mémoire flash. En contrepartie, vos données ne résident pas sur un seul hôte physique. Une panne de l’hôte n’emporte donc pas le volume. Les snapshots et la migration à chaud sont également plus simples pour le fournisseur. Choisissez la mémoire flash locale pour une base de données sensible à la latence. Choisissez le stockage réseau lorsque la préservation du volume compte davantage que les microsecondes.