bcache vs dm-cache: Comparación de la caché SSD en Linux
11 min de lectura - 28 de mayo de 2026

Comparación entre bcache y dm-cache para caché SSD en Linux. Configuración, rendimiento, modos de almacenamiento en caché y cuándo usar cada uno.
bcache frente a dm-cache: almacenamiento en caché SSD en Linux
Los SSD son rápidos, pero caros por gigabyte. Los HDD son baratos, pero lentos. Linux ofrece dos herramientas a nivel del núcleo para combinarlos: bcache y dm-cache. Ambos utilizan un SSD como caché transparente delante de un HDD más grande, pero difieren en arquitectura, requisitos de configuración y en qué situaciones ofrecen un mejor rendimiento.
Cómo funciona bcache
Bcache forma parte del núcleo de Linux desde la versión 3.10 (junio de 2013). Opera en la capa de bloques, por lo que funciona con cualquier sistema de archivos que admita UUID.
Internamente, bcache utiliza una estructura híbrida de árbol B+ y registro. Divide el almacenamiento SSD en compartimentos de tamaño fijo (de 128 KB a 2 MB), alineados con los límites de los bloques de borrado. Esto convierte las escrituras aleatorias en secuenciales, lo que reduce la amplificación de escritura y prolonga la vida útil del SSD. Las operaciones de E/S secuenciales de más de 4 MB omiten automáticamente la caché, lo que permite que el SSD se centre en los patrones de acceso aleatorio donde aporta mayor valor.
Bcache también supervisa la latencia del SSD en tiempo real. Si la latencia de lectura supera los 2 ms o la de escritura supera los 20 ms, limita el tráfico para evitar que el dispositivo de caché se convierta en un cuello de botella.
Configuración
Instala bcache-tools, a continuación formatee su dispositivo de respaldo y su dispositivo de caché:
make-bcache -B /dev/sdb # format HDD as backing device
make-bcache -C /dev/sdc # format SSD as cache device
echo <UUID> > /sys/block/bcache0/bcache/attach # attach cacheEl ajuste en tiempo de ejecución se realiza a través de la /sys/block/bcache<N>/bcache/ interfaz sysfs, donde puede ajustar los modos de almacenamiento en caché, los umbrales de E/S secuencial y los objetivos de latencia. Para matrices RAID, utilice --data-offset para alinearlo con el ancho de banda.
El inconveniente: la configuración es destructiva. Ambos dispositivos deben formatearse como destinos de bcache, por lo que no se puede añadir bcache a un sistema de archivos existente sin borrarlo primero. Los dispositivos bcache tampoco pueden redimensionarse tras su creación.
Rendimiento
La consolidación de escritura de Bcache le proporciona excelentes cifras de escritura aleatoria. En las pruebas de rendimiento, ha alcanzado aproximadamente 18 500 IOPS de escritura aleatoria de 4K, en comparación con las 12 200 IOPS del SSD sin formatear. El rendimiento de lectura aleatoria puede alcanzar aproximadamente 1 000 000 de IOPS con un hardware adecuado.
Para cargas de trabajo cifradas, superponga dm-crypt sobre el /dev/bcache<N> dispositivo en lugar de cifrar las unidades subyacentes individualmente. Esto suele ofrecer un mejor rendimiento porque bcache puede seguir consolidando las escrituras antes del cifrado.
Cómo funciona dm-cache
dm-cache es un destino de Device Mapper que se sitúa sobre un volumen lógico existente. Utiliza tres subdispositivos: un dispositivo de origen (HDD), un dispositivo de caché (SSD o NVMe) y un dispositivo de metadatos que realiza un seguimiento de las ubicaciones de los bloques y los estados de modificación. La política de caché predeterminada es smq (Stochastic Multi-Queue), que identifica los datos activos en cargas de trabajo mixtas.
La ventaja clave: dm-cache se puede superponer a un volumen LVM en funcionamiento sin destruir los datos existentes. También se puede redimensionar utilizando comandos LVM estándar.
Configuración con LVM
La forma más práctica de configurar dm-cache es mediante lvmcache. La dmsetup , pero es propensa a errores y no se conserva tras los reinicios. El enfoque LVM:
- Crea volúmenes físicos (PV) tanto en el HDD como en el SSD.
- Añada ambos PV a un único grupo de volúmenes (VG).
- Crea tres volúmenes lógicos: uno para los datos de respaldo (HDD), otro para la caché (SSD) y otro para los metadatos (SSD).
- Combina los LV de caché y metadatos en un grupo de caché:
lvconvert --type cache-pool --poolmetadata <meta_lv> <cache_lv> - Conecte el grupo a la fuente:
lvconvert --type cache --cachepool <pool_lv> <data_lv>
Una cosa a tener en cuenta: monta el sistema de archivos a través de su /dev/mapper/ ruta, no por UUID. El montaje por UUID puede eludir la capa de caché y acceder directamente al dispositivo de origen.
Rendimiento y memoria
En modo de escritura diferida con una carga de trabajo Zipf de lectura/escritura 90/10, dm-cache ha alcanzado velocidades de lectura de unos 193 MB/s y velocidades de escritura de aproximadamente 21 MB/s. En otra prueba de rendimiento, el almacenamiento en caché de un disco duro de 100 GB con una partición NVMe de 10 GB aumentó las IOPS de escritura aleatoria de 118 a 798.
La contrapartida es la memoria. La sobrecarga de metadatos de dm-cache depende del tamaño de bloque. Un tamaño de bloque de 512 bytes puede consumir más de 16 GB de RAM por cada 100 GB de caché. Aumentarlo a 4096 bytes reduce el uso de memoria a unos 2 GB por cada 100 GB. Elija un tamaño de bloque cercano a su tamaño medio de E/S (64 KB es un punto de partida razonable) y asegúrese de que sea un múltiplo de 64 sectores (32 KB), dentro del rango de 32 KB a 1 GB.
Los metadatos se vacían en cada escritura FLUSH o FUA, o al menos una vez por segundo. Para una alta disponibilidad, duplique el dispositivo de metadatos para evitar un único punto de fallo.
Modos de almacenamiento en caché
Tanto bcache como dm-cache admiten los mismos modos de almacenamiento en caché básicos. La elección afecta tanto al rendimiento como a la seguridad de los datos.
| Modo | Cómo funciona | Velocidad | Riesgo |
|---|---|---|---|
| Escritura directa | Las escrituras se realizan simultáneamente en el SSD y el HDD | Solo mejora de lectura | Bajo. El HDD siempre tiene los datos actuales. |
| Escritura diferida | Las escrituras se envían primero al SSD y se descargan al HDD más tarde | Aumento de lectura y escritura | Más alto. Un fallo del SSD antes de la descarga implica pérdida de datos. |
| Escritura indirecta / Paso directo | Las escrituras omiten por completo la caché | Solo mejora de lectura, menor desgaste del SSD | Bajo. El HDD siempre tiene los datos actuales. |
El «writethrough» es la opción predeterminada segura para ambas herramientas. El «writeback» es más rápido, pero conlleva un riesgo real: si el SSD falla mientras contiene datos sin vaciar, esos datos se pierden y el sistema de archivos puede resultar dañado. Utilice el «writeback» solo cuando disponga de SSD redundantes o pueda tolerar una pérdida ocasional de datos.
bcache frente a dm-cache: ¿cuál utilizar?
| Factor | bcache | dm-cache |
|---|---|---|
| Configuración sobre datos existentes | Destructiva (requiere borrado) | No destructivo (conversión en línea) |
| Cambio de tamaño | No compatible | Compatible mediante LVM |
| Optimización de escritura aleatoria | Fuerte (consolidación de escritura secuencial) | Estándar |
| Omisión de E/S secuencial | Automático (>4 MB) | Gestionado por la política smq |
| Sobrecarga de memoria | Bajo (árbol B+) | Mayor (depende del tamaño del bloque) |
| Metadatos | En el dispositivo de caché | Dispositivo independiente, se puede duplicar |
Utilice bcache cuando esté creando un nuevo sistema desde cero y desee el mejor rendimiento posible en E/S aleatoria. Es la mejor opción para cargas de trabajo con gran volumen de escritura, como bases de datos y almacenamiento de máquinas virtuales, y para matrices RAID 6 en las que las penalizaciones por escritura aleatoria son severas.
Utilice dm-cache cuando necesite añadir caché a un servidor que ya está en producción. Su integración con LVM le permite conectar una caché sin tiempo de inactividad ni migración de datos. Es más adecuado para cargas de trabajo con gran volumen de lecturas y entornos en los que se necesita flexibilidad para cambiar el tamaño o reconfigurar el almacenamiento sobre la marcha.
Conclusión
Ambas herramientas resuelven el mismo problema, pero se adaptan a situaciones diferentes. Bcache es la opción de rendimiento para instalaciones nuevas. dm-cache es la opción práctica para sistemas LVM existentes. Elijas la que elijas, empieza con el modo writethrough hasta que estés seguro de la fiabilidad de tu SSD y, a continuación, cambia a writeback si necesitas rendimiento de escritura.
Si necesita servidores dedicados con configuraciones de almacenamiento en caché SSD, explore las opciones de servidores dedicados de FDC.
XDP y eBPF para el procesamiento de paquetes en Linux
Cómo XDP y eBPF procesan millones de paquetes por segundo a nivel de controlador NIC. Puntos de referencia, casos de uso de DDoS, configuración de la cadena de herramientas y requisitos de hardware.
14 min de lectura - 27 de mayo de 2026
Por qué es importante tener un VPS potente y sin contador
3 min de lectura - 9 de mayo de 2025