Che cos'è un VPS SSD e perché scegliere lo storage flash
Un VPS SSD usa memoria flash invece di dischi magnetici: scopri cosa cambia per IOPS e latenza e quali tre domande fare prima dell'acquisto.
Che cos'è un VPS SSD?
Un VPS SSD è un server privato virtuale il cui disco usa memoria flash invece di un disco rigido magnetico. SSD è l'acronimo di solid state drive: uno spazio di archiviazione basato su chip NAND flash, senza parti mobili. VPS è l'acronimo di virtual private server: una porzione isolata di un host fisico, che esegue il proprio sistema operativo e viene venduta come se fosse un server completo. L'unione dei due termini implica una caratteristica precisa. Quando il server legge un blocco di dati, non deve attendere il movimento di alcun componente meccanico.
Questa è l'intera definizione. Tutto il resto riguarda ciò che l'etichetta non specifica, perché la dicitura "hosting SSD" in una pagina con i prezzi dice molto poco sull'array di storage utilizzato dal provider.
Se stai ancora cercando di capire in cosa differisce un VPS da una semplice macchina virtuale, la differenza tra VPS, VM e VPC è la pagina da leggere per prima.
Perché i provider indicano la velocità dello storage invece della sua capacità
Una pagina dell’offerta elenca core CPU, memoria, capacità del disco e banda, poi aggiunge una parola riferita al disco che non indica affatto una capacità. I provider lo fanno perché da anni la capacità non è più il dato più interessante dello storage. I due valori che determinano la reattività di un server sono gli IOPS (operazioni di input/output al secondo) e la latenza (il tempo necessario per completare una singola operazione).
La ragione dipende dalla differenza meccanica tra le tecnologie. Un disco rigido memorizza i dati su piatti rotanti e li legge con una testina montata su un braccio mobile. Per raggiungere un blocco in un'altra posizione del piatto, il braccio deve eseguire la ricerca e il disco deve poi ruotare finché il settore corretto si trova sotto la testina. A 7200 giri al minuto, mezzo giro richiede in media circa 4 ms, a cui si aggiungono diversi millisecondi per la ricerca. La memoria flash non usa né braccio né piatti, quindi una lettura è una ricerca elettrica che viene completata in decine di microsecondi.
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 disco rigido a 7200 rpm è accreditato di circa 125 letture casuali 4k al secondo; ciascuna di queste letture richiede circa 8 ms per essere completata. Un'unità NVMe è accreditata di quasi 600,000 letture dello stesso tipo, con un tempo di circa 0.08 ms per lettura. Un SSD SATA si colloca tra i due, con circa 90,000. Interpretate questi valori come ordini di grandezza, non come percentuali di miglioramento.
Questi dati richiedono due precisazioni. Si tratta di specifiche pubblicate per unità complete di ciascuna classe: sono quindi valori riportati dal produttore e non misurazioni eseguite su un VPS. Inoltre, non si utilizza mai un'unità completa: il volume è una porzione di un dispositivo o di un array, condiviso con altri clienti sullo stesso hardware.
Le due colonne rispondono anche a domande diverse, quindi devono essere lette insieme. La latenza indica quanto tempo si attende per una singola operazione. Gli IOPS indicano quante operazioni l'unità può gestire contemporaneamente. La memoria flash raggiunge valori elevati di IOPS grazie al parallelismo: molti chip flash rispondono a molte richieste contemporaneamente, mentre una coda profonda li mantiene impegnati. Un programma a thread singolo che esegue una lettura, attende il completamento e poi esegue la successiva non raggiungerà mai il valore massimo della tabella. Risentirà invece della latenza.
SSD, NVMe, SATA e PCIe: quattro termini su quattro livelli diversi
Gli acquirenti confondono questi termini perché ognuno descrive una parte diversa del sistema.
- SSD è il supporto di archiviazione. Indica che i dati sono memorizzati su chip di memoria flash NAND, non su piatti magnetici.
- SATA è un'interfaccia progettata nell'epoca dei dischi meccanici. Raggiunge al massimo 6 Gbit/s, pari a circa 550 MB/s di throughput effettivo, e la relativa coda dei comandi può contenere 32 comandi in attesa.
- NVMe (non-volatile memory express) è un protocollo progettato specificamente per la memoria flash. Supporta numerose code, ciascuna in grado di contenere migliaia di comandi, così diversi core della CPU possono comunicare contemporaneamente con l'unità senza condividere un'unica coda stretta.
- PCIe (peripheral component interconnect express) è il bus su cui funziona NVMe, dello stesso tipo di collegamenti a cui si connette una scheda grafica.
Un SSD SATA e un SSD NVMe memorizzano quindi entrambi i dati su memoria flash. La differenza riguarda l'interfaccia utilizzata. Un SSD SATA è comunque molto più veloce di qualsiasi disco rigido, ma la coda di 32 comandi limita la quantità di lavoro parallelo che può gestire. Il lavoro parallelo è proprio uno dei punti di forza della memoria flash. La scelta più conveniente dipende dal carico di lavoro; la scelta tra SSD NVMe e SATA analizza correttamente questo aspetto.
Flash locale o storage collegato alla rete?
Due configurazioni molto diverse vengono vendute con la stessa definizione.
Lo storage locale significa che le unità flash si trovano nello stesso host fisico del tuo VPS. Una richiesta attraversa PCIe all'interno di una sola macchina e torna direttamente indietro. Per questo la latenza rimane nell'ordine delle decine di microsecondi.
Lo storage collegato alla rete significa che il disco virtuale risiede in un cluster di storage separato, spesso Ceph o una SAN (storage area network), e che ogni lettura e scrittura attraversa la rete per raggiungerlo. I provider lo chiamano generalmente "cloud block storage" o "elastic volumes". La memoria flash è reale. Anche il passaggio sulla rete è reale e viene aggiunto a ogni singola operazione. Di conseguenza, la latenza arriva a diverse centinaia di microsecondi o a pochi millisecondi, invece di rimanere nell'ordine delle decine.
Nessuna delle due opzioni è sbagliata. Lo storage di rete sopravvive alla perdita di un host, perché i dati non si trovavano su quell'host: il provider può avviare il tuo server su un altro hardware e il disco lo segue. Lo storage locale NVMe è più veloce ed è legato a una sola macchina fisica. Un guasto hardware su quella macchina richiede quindi un ripristino dal backup. Chiedi quale delle due opzioni usa il piano. Quasi nessuno lo fa.
Come cambia l'esperienza su un server reale
Le attività sui server consistono soprattutto in piccole letture e scritture casuali, non in trasferimenti sequenziali prolungati. Per questo il valore in MB/s riportato nei materiali promozionali è il dato meno utile della pagina.
- Commit del database. Un database che garantisce la persistenza chiama
fsyncquando esegue il commit di una transazione, quindi attende che l'unità confermi che i dati siano stati realmente memorizzati. Su un disco rigido questa attesa è dell'ordine dei millisecondi e limita un database di piccole dimensioni a poche centinaia di commit al secondo. Su un'unità flash la stessa attesa dura una frazione di millisecondo. È in questo caso che la differenza è maggiore, sia che si utilizzi PostgreSQL, MySQL o SQLite come database di produzione. - Installazione dei pacchetti.
apt installestrae migliaia di file di piccole dimensioni e li sincronizza sul disco durante l'operazione. Quasi nessuna di queste attività è sequenziale, quindi le prestazioni dipendono dagli IOPS. - Download delle immagini dei container.
docker pullscarica livelli compressi dalla rete e li estrae in migliaia di file di piccole dimensioni. Il download è limitato dalla rete. L'estrazione è limitata dal disco e, su un volume lento, è la fase durante la quale si attende più a lungo. - Avvio e riavvio. L'avvio legge un kernel e un initramfs, quindi centinaia di file di unità e librerie condivise distribuiti nel volume.
Nessuna di queste attività consiste in una grande lettura sequenziale. Un volume che raggiunge 500 MB/s nei trasferimenti sequenziali ma gestisce solo 3,000 IOPS continuerà a sembrare lento durante un docker compose pull, perché l'attesa viene calcolata per file, non per megabyte.
Perché la dicitura "SSD cloud hosting" in una pagina dei prezzi non dice quasi nulla
La dicitura descrive il supporto e si ferma lì. Non indica quale interfaccia utilizza l'unità e non chiarisce se l'unità si trova sulla stessa macchina del server. Non indica nemmeno il limite massimo previsto dal piano.
Questo limite è l'aspetto più importante e quello pubblicizzato meno. I provider impongono un limite a IOPS e throughput per volume, perché un singolo host serve molti clienti e un vicino senza limiti può consumare le risorse degli altri. Un limite di qualche migliaio di IOPS su hardware capace di raggiungere centinaia di migliaia di IOPS è normale e trasparente, ma non compare nella descrizione del piano. Due piani possono riportare entrambi la dicitura "SSD", mentre uno usa NVMe locale senza limiti per volume e l'altro usa un volume su un cluster condiviso, limitato a 3,000 IOPS.
I limiti hanno due forme. Un limite sostenuto è un tetto fisso che non cambia mai. Un limite burst offre una baseline bassa più crediti che consentono di superarla per un certo periodo; i crediti si ricaricano mentre il volume è inattivo. Un limite burst può dare risultati eccellenti in un test di cinque minuti, per poi scendere alla baseline durante un'importazione del database o un ripristino di grandi dimensioni. Se un provider dichiara un valore elevato, chiedi per quanto tempo è possibile mantenerlo.
Come verificare cosa ti ha effettivamente assegnato il VPS
Dal guest puoi vedere soltanto le informazioni che l’hypervisor espone.
lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotationalSostituisci vda con il nome del dispositivo lsblk mostrato per il disco. Il file ROTA e il file rotational leggono 0 quando al kernel viene indicato che il dispositivo non è rotazionale e 1 quando viene indicato il contrario. Un disco virtuale imposta questo flag in base a ciò che dichiara l’hypervisor, quindi il valore descrive il dispositivo virtuale e non l’hardware fisico sottostante. MODEL è in genere vuoto per un disco virtio come vda oppure contiene una stringa generica come QEMU HARDDISK su un controller SATA emulato. I guest non sono progettati per vedere l’array dell’host e infatti non lo vedono.
Considera quindi il flag solo come un’indicazione e misura il resto. Esegui un test casuale 4k con fio su un file del volume, usando la profondità della coda effettivamente adottata dall’applicazione, e fallo durare abbastanza a lungo da consumare eventuali crediti burst. Eseguire correttamente il benchmark di un VPS contiene i comandi fio e gli errori comuni che producono risultati troppo favorevoli.
Tre domande da porre al provider prima dell'acquisto
- Lo storage è locale all'hypervisor o è collegato tramite rete? La risposta stabilisce il limite minimo della latenza e determina cosa accade ai dati quando si guasta un host fisico. Un provider che risponde in modo chiaro ha valutato questo aspetto.
- Qual è il limite di IOPS del mio volume? Chiedete un valore numerico. “Illimitato” e “di livello enterprise” non sono valori numerici. Se non esiste realmente alcun limite, chiedete cosa impedisce a un vicino sullo stesso host di saturare l'intero array durante la finestra di backup.
- Il limite è sostenibile o riguarda un burst? Se è previsto un burst, chiedete il valore di baseline e la durata del burst. La baseline è il valore con cui dovrà operare il job notturno, quindi è il parametro su cui basare la pianificazione.
La memoria flash si usura? E il problema riguarda te?
Le celle flash supportano un numero limitato di cicli di scrittura, quindi le unità indicano un valore di resistenza espresso in TBW (terabyte scritti) o DWPD (scritture dell'unità al giorno). L'unità distribuisce le scritture in modo uniforme tra le celle: questa tecnica si chiama wear levelling. Inoltre, mantiene alcuni blocchi di riserva per sostituire le celle che si guastano. Su un VPS, l'usura è un problema del provider: il provider monitora i contatori SMART delle proprie unità e sostituisce l'hardware prima che venga raggiunto il limite nominale. Il tuo problema esiste da prima della memoria flash. Un'unità non è un backup. Anche la ridondanza del volume non è un backup, perché replica una cancellazione con la stessa precisione con cui replica i dati.
La scelta riguarda soprattutto il prezzo per gigabyte. La memoria flash costa più dei dischi magnetici per gigabyte, quindi un piano SSD offre in genere meno capacità di un piano con hard disk allo stesso prezzo. Se ti serve molto spazio per contenuti multimediali o archivi, mantieni piccolo il volume veloce e colloca i dati in blocco su uno spazio più economico. È anche l'impostazione corretta per conservare i backup fuori dal server. Per capire come lo storage incide sul resto dei costi, quanto costa davvero un VPS analizza le singole voci.
FAQ
Un VPS SSD è la stessa cosa di un VPS NVMe?
Ogni VPS NVMe è un VPS SSD, perché le unità NVMe usano memoria flash. Il contrario non vale. Un piano pubblicizzato come "SSD" può usare un SSD SATA, cioè memoria flash collegata tramite un'interfaccia progettata per i dischi meccanici, con una coda di 32 comandi e un limite vicino a 550 MB/s. Entrambe le soluzioni sono molto più veloci di un disco rigido. Se questa differenza è importante per il carico di lavoro, chiedi al provider quale tecnologia usa il piano invece di dedurla dal nome del piano.
Un VPS SSD rende più veloce il mio sito web?
Rende più veloci le operazioni su disco, e solo quelle. Una pagina che esegue diverse query al database per ogni richiesta diventa più veloce, perché queste query e i relativi commit sono operazioni I/O casuali di piccole dimensioni. Una pagina servita dalla memoria o dalla cache non accede mai al disco durante la risposta, quindi cambia molto poco. Misura quale parte della richiesta è lenta prima di acquistare uno storage più veloce per risolvere il problema.
Come posso verificare se il mio VPS usa davvero uno storage SSD?
Dall'interno del guest non puoi verificare l'hardware fisico. lsblk -d -o NAME,ROTA mostra ciò che il dispositivo virtuale dichiara, ma è l'hypervisor a decidere quel valore, quindi un 0 indica una possibilità, non una prova. La verifica pratica consiste nell'eseguire una misurazione: esegui fio con un carico di letture casuali da 4k per diversi minuti e osserva la latenza restituita. Letture casuali nell'ordine di millisecondi a una cifra indicano dischi rotanti o un volume di rete congestionato. Latenze di decine di microsecondi indicano memoria flash locale.
Uno storage SSD collegato tramite rete è peggiore di un NVMe locale?
È più lento per singola operazione e presenta modalità di errore diverse. Il tempo di andata e ritorno sulla rete si aggiunge a ogni lettura e scrittura, quindi la latenza è maggiore anche se entrambe le soluzioni usano memoria flash. In compenso, i dati non risiedono su un singolo host fisico: un guasto dell'host non rende indisponibile il volume e il provider può gestire più facilmente snapshot e migrazioni a caldo. Scegli la memoria flash locale per un database sensibile alla latenza. Scegli lo storage di rete quando la sopravvivenza del volume è più importante dei microsecondi.