bcache vs dm-cache: Comparación de la caché SSD en Linux

11 min de lectura - 28 de mayo de 2026

hero section cover
Tabla de contenidos
  • bcache frente a dm-cache: almacenamiento en caché SSD en Linux
  • Cómo funciona bcache
  • Cómo funciona dm-cache
  • Modos de almacenamiento en caché
  • bcache frente a dm-cache: ¿cuál utilizar?
  • Conclusión
Compartir

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 cache

El 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:

  1. Crea volúmenes físicos (PV) tanto en el HDD como en el SSD.
  2. Añada ambos PV a un único grupo de volúmenes (VG).
  3. Crea tres volúmenes lógicos: uno para los datos de respaldo (HDD), otro para la caché (SSD) y otro para los metadatos (SSD).
  4. Combina los LV de caché y metadatos en un grupo de caché:
    lvconvert --type cache-pool --poolmetadata <meta_lv> <cache_lv>
  5. 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.

ModoCómo funcionaVelocidadRiesgo
Escritura directaLas escrituras se realizan simultáneamente en el SSD y el HDDSolo mejora de lecturaBajo. El HDD siempre tiene los datos actuales.
Escritura diferidaLas escrituras se envían primero al SSD y se descargan al HDD más tardeAumento de lectura y escrituraMás alto. Un fallo del SSD antes de la descarga implica pérdida de datos.
Escritura indirecta / Paso directoLas escrituras omiten por completo la cachéSolo mejora de lectura, menor desgaste del SSDBajo. 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?

Factorbcachedm-cache
Configuración sobre datos existentesDestructiva (requiere borrado)No destructivo (conversión en línea)
Cambio de tamañoNo compatibleCompatible mediante LVM
Optimización de escritura aleatoriaFuerte (consolidación de escritura secuencial)Estándar
Omisión de E/S secuencialAutomático (>4 MB)Gestionado por la política smq
Sobrecarga de memoriaBajo (árbol B+)Mayor (depende del tamaño del bloque)
MetadatosEn 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.

Blog

Destacados de la semana

Más artículos
XDP y eBPF para el procesamiento de paquetes en Linux

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

Más artículos