¿Qué es un VPS SSD y qué ventajas ofrece?
Un VPS SSD usa almacenamiento flash en vez de discos mecánicos. Conozca cómo mejora los IOPS y la latencia, y qué tres preguntas hacer antes de contratarlo.
¿Qué es un VPS SSD?
Un VPS SSD es un servidor privado virtual cuyo disco utiliza memoria flash en lugar de un disco duro giratorio. SSD significa unidad de estado sólido: almacenamiento basado en chips de memoria flash NAND, sin piezas móviles en su interior. VPS significa servidor privado virtual: una partición aislada de una máquina física host que ejecuta su propio sistema operativo y se le ofrece como si fuera un servidor completo. Al combinar ambos conceptos, la etiqueta promete una cosa. Cuando el servidor lee un bloque de datos, no es necesario que se mueva ningún componente mecánico.
Esa es toda la definición. El resto trata sobre lo que la etiqueta no especifica, porque las palabras "alojamiento SSD" en una página de precios dicen muy poco sobre la matriz de almacenamiento que hay detrás.
Si todavía está determinando en qué se diferencia un VPS de una máquina virtual normal, la diferencia entre un VPS, una VM y una VPC es la página que debería leer primero.
Por qué los proveedores anuncian la velocidad del almacenamiento en lugar de su capacidad
Una página de planes enumera los núcleos de CPU, la memoria, el tamaño del disco y el ancho de banda, y después añade una palabra sobre el disco que no indica ningún tamaño. Los proveedores lo hacen porque la capacidad dejó de ser el dato más relevante del almacenamiento hace años. Los dos valores que determinan cómo responde un servidor son IOPS (operaciones de entrada/salida por segundo) y latencia (el tiempo que tarda una operación en devolver el resultado).
La diferencia mecánica es la causa. Un disco duro almacena los datos en platos giratorios y los lee con un cabezal instalado en un brazo móvil. Para acceder a un bloque situado en otra parte del plato, el brazo debe desplazarse y, después, el disco debe girar hasta que el sector correcto quede bajo el cabezal. A 7200 revoluciones por minuto, media vuelta tarda un promedio de unos 4 ms, y el desplazamiento añade varios milisegundos más. La memoria flash no tiene brazo ni plato, por lo que una lectura es una consulta eléctrica que devuelve el resultado en decenas de microsegundos.
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 duro de 7200 rpm está especificado para aproximadamente 125 lecturas aleatorias de 4k por segundo, y una de esas lecturas tarda aproximadamente 8 ms en devolver el resultado. Una unidad NVMe está especificada cerca de 600,000 de esas mismas lecturas, a unos 0.08 ms cada una. La unidad SSD SATA intermedia está especificada cerca de 90,000. Interprete esos valores como órdenes de magnitud, no como un porcentaje de mejora.
Hay dos advertencias sobre esos datos. Son especificaciones publicadas para unidades completas de cada clase. Por tanto, son valores de las fichas del fabricante y no mediciones realizadas en un VPS. Además, nunca obtiene una unidad completa: su volumen es una parte de un dispositivo o una parte de una matriz, junto a otros clientes que usan el mismo hardware.
Las dos columnas también responden a preguntas diferentes, por lo que deben leerse juntas. La latencia indica cuánto tiempo espera para una operación. IOPS indica cuántas operaciones puede procesar la unidad al mismo tiempo. La memoria flash alcanza sus valores altos de IOPS mediante el paralelismo, porque muchos chips flash responden a muchas solicitudes simultáneamente mientras una cola profunda los mantiene ocupados. Un programa de un solo hilo que emite una lectura, espera su resultado y después emite la siguiente nunca alcanzará el valor máximo de esa tabla. Verá el valor de la columna de latencia.
SSD, NVMe, SATA y PCIe: cuatro términos de cuatro capas diferentes
Los compradores confunden estos términos porque cada uno describe una parte diferente del sistema.
- SSD es el medio de almacenamiento. Significa que los datos se almacenan en chips de memoria flash NAND y no en platos magnéticos.
- SATA es una interfaz diseñada en la época de los discos mecánicos. Alcanza como máximo 6 Gbit/s, que equivalen aproximadamente a 550 MB/s de rendimiento real, y su cola de comandos admite 32 comandos pendientes.
- NVMe (non-volatile memory express) es un protocolo diseñado específicamente para la memoria flash. Admite muchas colas con miles de comandos cada una, de modo que varios núcleos de CPU pueden comunicarse con la unidad al mismo tiempo sin compartir una sola cola estrecha.
- PCIe (peripheral component interconnect express) es el bus sobre el que funciona NVMe, del mismo tipo que las líneas donde se conecta una tarjeta gráfica.
Por tanto, tanto un SSD SATA como un SSD NVMe almacenan los datos en memoria flash. La diferencia está en la interfaz que utilizan. Un SSD SATA sigue siendo mucho más rápido que cualquier disco duro, pero esa cola de 32 comandos limita la cantidad de trabajo paralelo que puede gestionar, y el trabajo paralelo es precisamente donde destaca la memoria flash. La opción que merece la pena pagar depende de la carga de trabajo, y la decisión entre un SSD NVMe y uno SATA analiza este tema correctamente.
¿Flash local o almacenamiento conectado a la red?
Dos configuraciones muy diferentes se comercializan con el mismo término.
El almacenamiento local significa que las unidades flash están dentro del mismo host físico que su VPS. Una solicitud viaja por PCIe dentro de una sola máquina y vuelve directamente. Por eso la latencia se mantiene en decenas de microsegundos.
El almacenamiento conectado a la red significa que el disco virtual está en un clúster de almacenamiento independiente, normalmente Ceph o una SAN (red de área de almacenamiento), y que cada lectura y escritura atraviesa la red para llegar a él. Los proveedores suelen llamarlo "almacenamiento de bloques en la nube" o "volúmenes elásticos". La unidad flash es real. El trayecto por la red también lo es y se añade a todas las operaciones. Por eso la latencia llega a varios cientos de microsegundos o a pocos milisegundos, en lugar de decenas.
Ninguna opción es incorrecta. El almacenamiento de red sobrevive a la pérdida de un host porque los datos nunca estuvieron en ese host: el proveedor puede iniciar su servidor en otro hardware y el disco lo sigue. El NVMe local es más rápido y está vinculado a una sola máquina física. Por tanto, un fallo de hardware implica restaurar desde una copia de seguridad. Pregunte qué opción usa el plan. Casi nadie lo hace.
Cómo se percibe la diferencia en un servidor real
El trabajo del servidor consiste principalmente en pequeñas lecturas y escrituras aleatorias, no en transferencias secuenciales largas. Por eso, la cifra de MB/s de la información comercial es el dato menos útil de la página.
- Confirmaciones de bases de datos. Una base de datos que garantiza la durabilidad llama a
fsynccuando se confirma una transacción y después espera a que la unidad confirme que los datos se han almacenado realmente. En un disco duro, esa espera dura milisegundos, lo que limita una base de datos pequeña a unos pocos cientos de confirmaciones por segundo. En una unidad flash, la misma espera dura una fracción de milisegundo. Aquí la diferencia es mayor, tanto si usa PostgreSQL como MySQL o SQLite como base de datos de producción. - Instalaciones de paquetes.
apt installdescomprime miles de archivos pequeños y los sincroniza con el disco durante el proceso. Casi ninguna de estas operaciones es secuencial, por lo que está limitada por las IOPS. - Descargas de imágenes de contenedor.
docker pulldescarga capas comprimidas a través de la red y después las extrae en miles de archivos pequeños. La descarga está limitada por la red. La extracción está limitada por el disco y, en un volumen lento, es la parte que debe esperar. - Arranque y reinicio. El inicio lee un kernel y un initramfs, y después cientos de archivos de unidad pequeños y bibliotecas compartidas distribuidos por el volumen.
Nada de esto es una lectura secuencial grande. Un volumen que transmite 500 MB/s pero solo atiende 3,000 IOPS seguirá pareciendo lento durante un docker compose pull, porque la espera se cuenta por archivo, no por megabyte.
Por qué "SSD cloud hosting" en una página de precios no informa casi nada
La expresión describe el medio y no aporta más información. No indica qué interfaz utiliza la unidad ni si esa unidad está en la misma máquina que el servidor. Tampoco indica cuál es el límite que puede alcanzar el plan.
Ese límite es lo más importante y lo que menos se anuncia. Los proveedores limitan las IOPS y el rendimiento por volumen, porque un mismo host atiende a muchos clientes y un vecino sin límites puede consumir los recursos del resto. Un límite de unos pocos miles de IOPS en hardware capaz de alcanzar cientos de miles es normal y transparente, pero no aparece en la descripción del plan. Dos planes pueden indicar "SSD", aunque uno use NVMe local sin límite por volumen y el otro use un volumen de clúster compartido limitado a 3,000 IOPS.
Los límites tienen dos formas. Un límite sostenido es un techo fijo que nunca cambia. Un límite de ráfaga ofrece una base baja y créditos que permiten superarla durante un tiempo; esos créditos se recargan mientras el volumen está inactivo. Un límite de ráfaga parece excelente en una prueba de cinco minutos, pero después desciende a la base durante una importación de base de datos o una restauración grande. Si un proveedor anuncia una cifra alta, pregunta cuánto tiempo puedes mantenerla.
Cómo comprobar qué te ha proporcionado realmente tu VPS
Desde el interior del guest solo puedes ver lo que te comunica el hypervisor.
lsblk -d -o NAME,ROTA,MODEL,SIZE
cat /sys/block/vda/queue/rotationalSustituye vda por el nombre de dispositivo lsblk que aparece para tu disco. ROTA y el archivo rotational leen 0 cuando se ha indicado al kernel que el dispositivo no es rotacional, y 1 cuando se le ha indicado lo contrario. Un disco virtual establece ese indicador según lo que anuncia el hypervisor, por lo que describe el dispositivo virtual y no el hardware físico subyacente. MODEL suele estar vacío en un disco virtio como vda, o contener una cadena genérica como QEMU HARDDISK en un controlador SATA emulado. Los guests no están diseñados para ver el array del host, y no lo ven.
Por tanto, considera el indicador una pista y mide el resto. Ejecuta una prueba aleatoria de 4k con fio contra un archivo del volumen, con la profundidad de cola que utilice realmente tu aplicación, y ejecútala el tiempo suficiente para consumir cualquier crédito de burst. Evaluar correctamente el rendimiento de un VPS contiene los comandos de fio y los errores habituales que generan cifras demasiado favorables.
Tres preguntas que debe hacer a un proveedor antes de comprar
- ¿El almacenamiento es local al hipervisor o está conectado a la red? La respuesta establece la latencia mínima y determina qué ocurre con sus datos cuando falla un host físico. Un proveedor que responde con claridad ha tenido esto en cuenta.
- ¿Cuál es el límite de IOPS de mi volumen? Pida una cifra. «Ilimitado» y «grado empresarial» no son cifras. Si realmente no existe un límite, pregunte qué impide que otro usuario del mismo host consuma todo el array durante su ventana de backup.
- ¿Ese límite es sostenido o de burst? Si permite burst, pregunte por la línea base y la duración del burst. La línea base es el valor con el que se ejecutará su tarea nocturna, por lo que debe usarlo como referencia para la planificación.
¿La memoria flash se desgasta y es responsabilidad suya?
Las celdas flash aceptan un número limitado de ciclos de escritura, por lo que las unidades publican una clasificación de resistencia en TBW (terabytes escritos) o DWPD (escrituras de unidad por día). La unidad distribuye las escrituras de manera uniforme entre sus celdas; esto se denomina nivelación del desgaste. También mantiene bloques de repuesto para reemplazar las celdas que fallen. En un VPS, el desgaste es responsabilidad del proveedor: supervisa los contadores SMART de sus propias unidades y reemplaza el hardware antes de que se agote la clasificación. Su problema es anterior a la memoria flash. Una unidad no es una copia de seguridad, y la redundancia de su volumen tampoco lo es, porque copia una eliminación con la misma fidelidad que copia los datos.
La decisión real se refiere al precio por gigabyte. La memoria flash cuesta más por gigabyte que los discos mecánicos, por lo que un plan SSD suele ofrecer menos capacidad que un plan con disco duro por el mismo precio. Si necesita mucho espacio para contenido multimedia o archivos, mantenga pequeño el volumen rápido y coloque el volumen de datos en una opción más económica. Esta también es la distribución adecuada para mantener las copias de seguridad fuera del servidor. Para saber cómo encaja el almacenamiento en el resto de la factura, cuánto cuesta realmente un VPS desglosa cada concepto.
FAQ
¿Un VPS con SSD es lo mismo que un VPS con NVMe?
Todo VPS con NVMe es un VPS con SSD, porque las unidades NVMe usan memoria flash. Lo contrario no se cumple. Un plan anunciado como "SSD" puede usar un SSD SATA. En ese caso, la memoria flash está detrás de una interfaz diseñada para discos mecánicos, con una cola de 32 comandos y un límite cercano a 550 MB/s. Ambos son mucho más rápidos que un disco duro. Si la diferencia afecta a su carga de trabajo, pregunte al proveedor cuál usa el plan en lugar de deducirlo por el nombre del plan.
¿Un VPS con SSD hace que mi sitio web sea más rápido?
Acelera las operaciones de disco, y solo esas operaciones. Una página que ejecuta varias consultas a la base de datos por solicitud se carga más rápido, porque esas consultas y sus confirmaciones son operaciones de E/S aleatorias pequeñas. Una página que se entrega desde la memoria o desde una caché no accede al disco durante la entrega, por lo que el cambio es mínimo. Mida qué parte de la solicitud es lenta antes de pagar por almacenamiento para resolver el problema.
¿Cómo puedo comprobar si mi VPS realmente usa almacenamiento SSD?
Desde el sistema invitado no puede verificar el hardware físico. lsblk -d -o NAME,ROTA muestra lo que anuncia el dispositivo virtual, y el hipervisor decide ese valor, por lo que un 0 es una indicación, no una prueba. La comprobación práctica es realizar una medición: ejecute fio con una carga de trabajo de lecturas aleatorias de 4k durante varios minutos y revise la latencia que informa. Las lecturas aleatorias con una latencia de un solo dígito en milisegundos indican discos mecánicos o un volumen de red congestionado. Las latencias de decenas de microsegundos indican memoria flash local.
¿El almacenamiento SSD conectado a la red es peor que el almacenamiento NVMe local?
Es más lento por operación y falla de otra forma. El tiempo de ida y vuelta de la red se añade a cada lectura y cada escritura, por lo que la latencia es mayor aunque ambos tipos de almacenamiento usen memoria flash. A cambio, sus datos no están en un solo host físico. Por tanto, un fallo del host no se lleva el volumen consigo, y para el proveedor las instantáneas y la migración en vivo son más sencillas. Elija memoria flash local para una base de datos sensible a la latencia. Elija almacenamiento de red cuando la disponibilidad del volumen sea más importante que los microsegundos.