Wat is een SSD VPS en wat levert flashopslag op?
Een SSD VPS gebruikt flashopslag in plaats van draaiende schijven. Lees wat IOPS en lage latentie opleveren en welke drie vragen u vóór aankoop stelt.
Wat is een SSD VPS?
Een SSD VPS is een virtuele private server waarvan de schijf gebruikmaakt van flashgeheugen in plaats van een draaiende harde schijf. SSD staat voor solid state drive: opslag die is opgebouwd uit NAND-flashchips, zonder bewegende onderdelen. VPS staat voor virtual private server: een geïsoleerd deel van een fysieke hostmachine met een eigen besturingssysteem, dat aan u wordt verkocht alsof het een volledige server is. Gecombineerd beloven deze twee termen één ding. Wanneer uw server een gegevensblok leest, hoeft er eerst niets mechanisch te bewegen.
Dat is de volledige definitie. Hieronder behandelen we wat het label niet vermeldt, omdat de woorden "SSD hosting" op een prijspagina weinig zeggen over de opslagarray erachter.
Als u nog uitzoekt waarin een VPS verschilt van een gewone virtuele machine, kunt u het beste eerst het verschil tussen een VPS, een VM en een VPC lezen.
Waarom hosts opslagsnelheid vermelden in plaats van opslagcapaciteit
Op een planpagina staan CPU-cores, geheugen, schijfgrootte en bandbreedte. Daarna staat er nog één woord over de schijf dat helemaal geen grootte aanduidt. Hosts doen dat omdat capaciteit al jaren niet meer de belangrijkste opslagwaarde is. De twee waarden die bepalen hoe snel een server aanvoelt, zijn IOPS (input/output operations per second) en latentie (hoe lang het duurt voordat één bewerking resultaat oplevert).
Het mechanische verschil is de reden. Een harde schijf bewaart gegevens op draaiende platters en leest deze met een kop op een bewegende arm. Om een blok ergens anders op de platter te bereiken, moet de arm een seek uitvoeren. Daarna moet de schijf draaien totdat de juiste sector onder de kop komt. Bij 7200 omwentelingen per minuut duurt een halve omwenteling gemiddeld ongeveer 4 ms. De seek voegt daar nog enkele milliseconden aan toe. Flash heeft geen arm en geen platter. Een leesbewerking is daardoor een elektrische opzoekbewerking die binnen tientallen microseconden resultaat oplevert.
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
}
]Een harde schijf van 7200 rpm is geschikt voor ongeveer 125 willekeurige 4k-leesbewerkingen per seconde. Eén van die leesbewerkingen duurt ongeveer 8 ms. Een NVMe-schijf is geschikt voor ongeveer 600,000 van dezelfde leesbewerkingen. Elke bewerking duurt ongeveer 0.08 ms. De SATA SSD daartussenin is geschikt voor ongeveer 90,000. Beschouw deze waarden als ordes van grootte, niet als een procentuele verbetering.
Bij deze gegevens gelden twee waarschuwingen. Dit zijn gepubliceerde specificaties voor volledige schijven uit elke klasse. Het zijn dus waarden uit fabrikantgegevensbladen en geen metingen op een VPS. U krijgt nooit een volledige schijf. Uw volume gebruikt een deel van één apparaat of een deel van een array, naast volumes van andere klanten op dezelfde hardware.
De twee kolommen beantwoorden ook verschillende vragen. Lees ze daarom samen. Latentie is de tijd die u op één bewerking wacht. IOPS is het aantal bewerkingen dat de schijf tegelijkertijd kan verwerken. Flash bereikt hoge IOPS-waarden door parallellisme. Veel flashchips beantwoorden daarbij gelijktijdig veel aanvragen, terwijl een diepe wachtrij ze actief houdt. Een programma met één thread dat één leesbewerking uitvoert, daarop wacht en daarna de volgende uitvoert, bereikt nooit de hoogste waarden uit die tabel. Het programma ziet dan vooral de waarden in de kolom voor latentie.
SSD, NVMe, SATA en PCIe: vier termen op vier verschillende lagen
Kopers verwarren deze termen omdat elke term een ander onderdeel van het systeem beschrijft.
- SSD is het opslagmedium. Dit betekent dat de gegevens op NAND-flashchips staan en niet op magnetische schijven.
- SATA is een interface die is ontworpen in het tijdperk van mechanische schijven. De maximale snelheid is 6 Gbit/s, wat neerkomt op ongeveer 550 MB/s aan werkelijke doorvoer. De opdrachtwachtrij kan 32 openstaande opdrachten bevatten.
- NVMe (non-volatile memory express) is een protocol dat specifiek voor flashopslag is ontwikkeld. Het ondersteunt veel wachtrijen met elk duizenden opdrachten. Daardoor kunnen meerdere CPU-kernen tegelijkertijd met de schijf communiceren zonder één smalle wachtrij te delen.
- PCIe (peripheral component interconnect express) is de bus waarover NVMe werkt. Dit is hetzelfde type bus waarop een grafische kaart wordt aangesloten.
Een SATA SSD en een NVMe SSD slaan dus beide gegevens op flashgeheugen op. Het verschil is de interface die ze gebruiken. Een SATA SSD is nog steeds veel sneller dan elke harde schijf. De wachtrij met 32 opdrachten beperkt echter hoeveel parallel werk de SSD kan verwerken. Juist daarin blinkt flashopslag uit. Welke optie de meerprijs waard is, hangt af van uw werklast. de keuze tussen NVMe en SATA SSD behandelt dit uitvoerig.
Lokale flashopslag of netwerkopslag?
Twee zeer verschillende configuraties worden onder dezelfde naam aangeboden.
Lokale opslag betekent dat de flashdrives zich in dezelfde fysieke host als uw VPS bevinden. Een verzoek verplaatst zich via PCIe binnen één machine en komt direct terug. Daardoor blijft de latentie beperkt tot tientallen microseconden.
Netwerkopslag betekent dat uw virtuele schijf zich op een afzonderlijk storagecluster bevindt, vaak Ceph of een SAN (storage area network). Elke lees- en schrijfbewerking gaat via een netwerk naar dat cluster. Providers noemen dit meestal "cloud block storage" of "elastic volumes". De flashopslag is echt. De netwerkoverdracht ook. Die wordt aan elke afzonderlijke bewerking toegevoegd. Daardoor komt de latentie uit op enkele honderden microseconden of enkele milliseconden, in plaats van tientallen microseconden.
Geen van beide opties is per definitie verkeerd. Netwerkopslag blijft beschikbaar na het uitvallen van een host, omdat de gegevens nooit op die host stonden. De provider kan uw server op andere hardware starten en de schijf volgt de server. Lokale NVMe is sneller en is gekoppeld aan één fysieke machine. Bij een hardwarestoring moet u daarom herstellen vanuit een back-up. Vraag welke optie een abonnement gebruikt. Bijna niemand doet dat.
Hoe het verschil aanvoelt op een echte server
Serverwerk bestaat meestal uit kleine willekeurige lees- en schrijfbewerkingen, niet uit lange sequentiële overdrachten. Daarom is de MB/s-waarde in de marketingtekst het minst bruikbare getal op de pagina.
- Databasecommits. Een database die duurzaamheid garandeert, roept
fsyncaan wanneer een transactie wordt vastgelegd en wacht vervolgens totdat de schijf bevestigt dat de gegevens daadwerkelijk zijn opgeslagen. Op een harde schijf duurt dat milliseconden. Daardoor blijft een kleine database beperkt tot enkele honderden commits per seconde. Op flashgeheugen duurt dezelfde wachttijd een fractie van een milliseconde. Hier is het verschil het grootst, ongeacht of u PostgreSQL, MySQL of SQLite als productiedatabase gebruikt. - Pakketinstallaties.
apt installpakt duizenden kleine bestanden uit en synchroniseert ze tijdens het proces met de schijf. Bijna niets daarvan verloopt sequentieel. De snelheid wordt daarom bepaald door IOPS. - Ophalen van containerimages.
docker pullhaalt gecomprimeerde lagen op via het netwerk en pakt deze vervolgens uit in duizenden kleine bestanden. Het downloaden wordt begrensd door het netwerk. Het uitpakken wordt begrensd door de schijf. Op een langzaam volume is het uitpakken het onderdeel waarop u moet wachten. - Opstarten en opnieuw opstarten. Bij het opstarten worden een kernel en een initramfs gelezen, gevolgd door honderden kleine unitbestanden en gedeelde bibliotheken die over het volume verspreid staan.
Geen van deze bewerkingen bestaat uit een grote sequentiële leesbewerking. Een volume dat gegevens streamt met 500 MB/s maar slechts 3,000 IOPS levert, voelt tijdens een docker compose pull nog steeds traag aan, omdat de wachttijd per bestand wordt berekend en niet per megabyte.
Waarom "SSD-cloudhosting" op een prijspagina u bijna niets vertelt
Het woord beschrijft alleen het medium. Het zegt niets over de interface die de schijf gebruikt. Het zegt ook niet of die schijf zich in dezelfde machine als uw server bevindt. Evenmin zegt het iets over de bovengrens die uw abonnement mag bereiken.
Die bovengrens is het belangrijkst en wordt het minst vermeld. Providers beperken IOPS en throughput per volume, omdat één host veel klanten bedient en een niet-beperkte buur de overige klanten kan verdringen. Een limiet van enkele duizenden IOPS op hardware die honderdduizenden IOPS aankan, is normaal en transparant. In de abonnementsbeschrijving is die limiet echter niet zichtbaar. Twee abonnementen kunnen allebei "SSD" vermelden, terwijl het ene lokale NVMe-opslag zonder limiet per volume gebruikt en het andere een gedeeld clustervolume is met een limiet van 3,000 IOPS.
Limieten hebben twee vormen. Een permanente limiet is een vaste bovengrens die niet verandert. Een burstlimiet geeft u een lage basissnelheid plus credits waarmee u deze snelheid tijdelijk kunt overschrijden. Die credits worden aangevuld wanneer het volume niet actief is. Een burstlimiet lijkt uitstekend in een test van vijf minuten, maar zakt tijdens een database-import of een grote restore terug naar de basissnelheid. Als een provider een hoog getal opgeeft, vraag dan hoe lang u die snelheid mag aanhouden.
Hoe u controleert wat uw VPS daadwerkelijk heeft gekregen
Vanuit de guest kunt u alleen zien wat de hypervisor aan de guest doorgeeft.
lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotationalVervang vda door de apparaatnaam lsblk die voor uw schijf wordt weergegeven. ROTA en het bestand rotational lezen 0 wanneer de kernel te horen heeft gekregen dat het apparaat niet-roterend is, en 1 wanneer de kernel het tegenovergestelde heeft doorgekregen. Een virtuele schijf stelt die vlag in op basis van wat de hypervisor aankondigt. De vlag beschrijft dus het virtuele apparaat en niet de onderliggende fysieke hardware. MODEL is voor een virtio-schijf zoals vda meestal leeg, of bevat een algemene tekenreeks zoals QEMU HARDDISK op een geëmuleerde SATA-controller. Guests zijn niet bedoeld om de disk-array van de host te zien, en dat doen ze ook niet.
Beschouw de vlag daarom als een aanwijzing en meet de overige eigenschappen. Voer met fio een willekeurige 4k-test uit op een bestand op het volume, met de wachtrijdiepte die uw toepassing daadwerkelijk gebruikt. Laat de test lang genoeg uitvoeren om eventueel bursttegoed te verbruiken. In Een VPS correct benchmarken staan de fio-opdrachten en veelvoorkomende fouten die te gunstige resultaten opleveren.
Drie vragen die u aan een provider moet stellen voordat u koopt
- Is de opslag lokaal op de hypervisor, of is deze via het netwerk verbonden? Het antwoord bepaalt de minimale latentie en wat er met uw gegevens gebeurt als een fysieke host uitvalt. Een provider die hierop een duidelijk antwoord geeft, heeft hierover nagedacht.
- Wat is de IOPS-limiet voor mijn volume? Vraag om een getal. "Unlimited" en "enterprise grade" zijn geen getallen. Als er echt geen limiet is, vraag dan wat voorkomt dat een andere klant op dezelfde host tijdens diens back-upvenster de volledige storage-array gebruikt.
- Is die limiet permanent of geldt deze alleen tijdens een burst? Als een burst mogelijk is, vraag dan naar de baseline en de duur van de burst. De baseline is de waarde waarmee uw nachtelijke taak moet werken. Dat is dus de waarde waarop u uw planning moet baseren.
Slijt flash en is dat uw probleem?
Flashcellen ondersteunen een beperkt aantal schrijfcycli. Daarom publiceren schijffabrikanten een duurzaamheidsclassificatie in TBW (terabytes written) of DWPD (drive writes per day). De schijf verdeelt schrijfbewerkingen gelijkmatig over de cellen. Dit heet wear levelling. Ook houdt de schijf reserveblokken beschikbaar om defecte cellen te vervangen. Op een VPS is slijtage het probleem van de provider. Die controleert de SMART-tellers op de eigen schijven en vervangt hardware voordat de classificatie is bereikt. Uw probleem is ouder dan flash. Een schijf is geen backup. Redundantie onder uw volume is ook geen backup, omdat die verwijderingen net zo nauwkeurig kopieert als gegevens.
De afweging die u werkelijk maakt, betreft de prijs per gigabyte. Flash kost per gigabyte meer dan draaiende schijven. Daarom biedt een SSD-abonnement meestal minder capaciteit dan een harddiskabonnement voor dezelfde prijs. Als u veel ruimte nodig hebt voor media of archieven, houdt u het snelle volume klein en plaatst u de bulk op een goedkopere locatie. Dat is ook de juiste opzet voor backups buiten de server bewaren. Voor de plaats van storage binnen de rest van de factuur geeft wat een VPS werkelijk kost een uitsplitsing van de afzonderlijke kostenposten.
FAQ
Is een SSD VPS hetzelfde als een NVMe VPS?
Elke NVMe VPS is een SSD VPS, omdat NVMe-schijven flashopslag gebruiken. Omgekeerd geldt dat niet. Een abonnement dat als "SSD" wordt aangeboden, kan een SATA SSD gebruiken. Dat is flashopslag achter een interface die is ontworpen voor mechanische schijven, met een wachtrij van 32 opdrachten en een maximumsnelheid van ongeveer 550 MB/s. Beide zijn veel sneller dan een harde schijf. Als het verschil voor uw werklast relevant is, vraag dan aan de provider welk type het abonnement gebruikt. Leid dit niet alleen af uit de naam van het abonnement.
Maakt een SSD VPS mijn website sneller?
Schijfbewerkingen worden sneller, maar alleen die bewerkingen. Een pagina die per aanvraag meerdere databasequery's uitvoert, wordt sneller omdat deze query's en de bijbehorende commits kleine willekeurige I/O-bewerkingen zijn. Een pagina die vanuit het geheugen of vanuit een cache wordt geleverd, gebruikt bij het verzenden geen schijf. Daardoor verandert er weinig. Meet eerst welk onderdeel van een aanvraag traag is voordat u voor opslag betaalt om dit probleem op te lossen.
Hoe kan ik controleren of mijn VPS daadwerkelijk SSD-opslag gebruikt?
Vanuit de guest kunt u de fysieke hardware niet verifiëren. lsblk -d -o NAME,ROTA toont wat het virtuele apparaat rapporteert. De hypervisor bepaalt die waarde, dus een 0 is slechts een aanwijzing en geen bewijs. De praktische controle bestaat uit een meting: voer fio enkele minuten uit met een willekeurige 4k-leeswerklast en bekijk de gerapporteerde latentie. Willekeurige leestijden van enkele milliseconden wijzen op draaiende schijven of een overbelaste netwerkopslag. Tientallen microseconden wijzen op lokale flashopslag.
Is SSD-opslag via het netwerk slechter dan lokale NVMe?
De opslag is per bewerking trager en vertoont andere storingspatronen. De netwerkretour wordt aan elke lees- en schrijfbewerking toegevoegd. Daardoor is de latentie hoger, ook wanneer beide opslagtypen flash gebruiken. Daar staat tegenover dat uw gegevens niet op één fysieke host staan. Een hoststoring zorgt dan niet dat het volume onbeschikbaar wordt. Snapshots en live migration zijn voor de provider bovendien eenvoudiger. Kies lokale flashopslag voor een database waarvoor lage latentie belangrijk is. Kies netwerkopslag wanneer het behoud van het volume belangrijker is dan microseconden.