> La lista completa de artículos está en [llms.txt](https://docs.f3cloud.com/llms.txt). Cada página tiene versión en Markdown, basta con añadir .md a su dirección. Esta página en Markdown: [https://docs.f3cloud.com/es/technical-docs/iops-performance-test.md](https://docs.f3cloud.com/es/technical-docs/iops-performance-test.md).

# Cómo comprobar la velocidad del disco y los IOPS en Linux con fio

Qué son los IOPS y cómo influyen en la velocidad del servidor. Cómo medir los IOPS aleatorios y secuenciales del disco en Linux con fio, cómo interpretar el resultado y en qué fijarse al elegir un plan.

Los **IOPS** (Input/Output Operations Per Second) son el número de operaciones de lectura y escritura que el disco es capaz de hacer en un segundo. Cuantos más IOPS, más rápido funcionan las aplicaciones que acceden al disco a menudo y en porciones pequeñas de datos.

Para una web sencilla de presentación los IOPS apenas importan, pero en las bases de datos y los servicios con mucha carga suelen convertirse en el cuello de botella antes que el procesador o la memoria.

***

### En qué influyen los IOPS

Unos IOPS altos importan sobre todo en tareas con muchos accesos pequeños al disco:

* bases de datos MySQL, PostgreSQL y MongoDB;
* servidores web y tiendas online con mucha carga;
* servidores de correo;
* sistemas de caché y de colas.

Para el vídeo en streaming, las copias de seguridad y la distribución de archivos grandes, lo que importa no son los IOPS, sino la velocidad lineal de lectura y escritura, porque los datos van en un flujo continuo.

***

### De qué dependen los IOPS

En el resultado influyen tres factores principales.

#### Tipo de unidad

Los discos NVMe dan muchas veces más IOPS que los SSD SATA normales, y muchísimos más que los discos duros HDD. Los servidores de F3 Cloud usan SSD NVMe.

#### Tamaño de bloque

Cuanto más pequeño es el bloque, más operaciones caben en un segundo. Por eso los IOPS máximos se miden con bloques de 4 KB, que es el tamaño típico de un acceso de una base de datos.

#### Tipo de acceso

Los accesos aleatorios, dispersos por todo el disco, son más pesados que los secuenciales. Las bases de datos generan precisamente carga aleatoria.\
Las copias de seguridad y el streaming generan carga secuencial.

> **Dos cifras distintas.**
>
> Los IOPS y la velocidad lineal en MB/s miden cosas distintas. Un disco puede dar una velocidad enorme en lectura secuencial y bastantes menos IOPS en operaciones pequeñas aleatorias. Al elegir un servidor para una base de datos, fíjate precisamente en los IOPS aleatorios con bloques de 4 KB.

***

### Cómo medir los IOPS en Linux

Para medirlos se usa la herramienta **fio**. Instálala.

#### Ubuntu y Debian

```bash
apt update && apt install -y fio
```

#### AlmaLinux y CentOS

```bash
dnf install -y fio
```

> **La prueba crea un archivo temporal.**
>
> fio escribirá en el disco un archivo del tamaño indicado, que en los ejemplos de abajo es de 2 GB. Asegúrate de que hay espacio libre en el disco y lanza la prueba en una carpeta de trabajo, por ejemplo en `/root`. Después de la prueba, borra el archivo `fiotest`.

Mide los IOPS de lectura aleatoria. Es la cifra principal para las bases de datos.

```bash
fio --name=randread --filename=fiotest --ioengine=libaio --direct=1 \
    --rw=randread --bs=4k --iodepth=32 --numjobs=1 --size=2G \
    --runtime=60 --time_based --group_reporting
```

Veamos las opciones del comando:

* `--rw=randread` – lectura aleatoria. Para la escritura usa `randwrite`, y para una carga mixta `randrw`;
* `--bs=4k` – tamaño de bloque de 4 KB;
* `--direct=1` – leemos sin pasar por la caché, para ver el trabajo real del disco y no el de la memoria;
* `--iodepth=32` – cuántas peticiones mantenemos en cola a la vez;
* `--runtime=60 --time_based` – la prueba dura exactamente 60 segundos.

***

### Cómo interpretar el resultado

En la salida de fio, busca la línea que empieza por `read` o `write`. El primer valor de esa línea son los IOPS.

```
read: IOPS=85.2k, BW=333MiB/s (349MB/s)
```

`IOPS=85.2k` es precisamente el número de operaciones por segundo.\
`BW` es la velocidad lineal en ese mismo tiempo.\
Más abajo, en el bloque `lat`, fio muestra la latencia. Cuanto menor sea, más ágil será el disco.

***

### Qué más puedes revisar

Para hacerte una idea rápida de la carga actual del disco sin lanzar ninguna prueba, te sirve `iostat` del paquete `sysstat`.

```bash
# Lo instalamos si el paquete aún no está
apt install -y sysstat

# Actualizamos las estadísticas cada segundo, las columnas r/s y w/s son operaciones por segundo
iostat -dx 1
```

Así verás la carga real de tus aplicaciones en las columnas `r/s` y `w/s`, y en la columna `%util` lo ocupado que está el disco.

***

### Nuestros recursos

**Canal de Telegram:** [https://t.me/f3cloud_news](https://t.me/f3cloud_news)\
**Web del hosting:** [https://f3cloud.com](https://f3cloud.com/es)
