Articulo de referencia

bcache

bcache (abreviatura de block cache ) es un mecanismo de caché en la capa de bloques del kernel de Linux , que se utiliza para acceder a dispositivos de almacenamiento secundario...

bcache (abreviatura de block cache ) es un mecanismo de caché en la capa de bloques del kernel de Linux , que se utiliza para acceder a dispositivos de almacenamiento secundarios . Permite que uno o más dispositivos de almacenamiento rápidos, como las unidades de estado sólido (SSD) basadas en memoria flash, actúen como caché para uno o más dispositivos de almacenamiento más lentos, como los discos duros (HDD); esto crea volúmenes híbridos y mejora el rendimiento.

Diseñado en función de la naturaleza y las características de rendimiento de las unidades SSD, bcache también minimiza la amplificación de escritura al evitar las escrituras aleatorias y convertirlas en escrituras secuenciales . Esta fusión de operaciones de E/S se realiza tanto para la caché como para el almacenamiento principal, lo que ayuda a prolongar la vida útil de los dispositivos flash utilizados como cachés y a mejorar el rendimiento de los sistemas de almacenamiento principal sensibles a la escritura, como los conjuntos RAID 5 .

bcache tiene licencia GNU General Public License (GPL), y Kent Overstreet es su desarrollador principal. Overstreet considera bcache como un "prototipo" para el desarrollo de bcachefs , un sistema de archivos con mejoras significativas respecto a bcache. [ 1 ]

Descripción general

El uso de bcache permite que las unidades SSD actúen como un nivel adicional de indirección en las rutas de acceso al almacenamiento de datos, lo que resulta en un rendimiento general mejorado al utilizar unidades SSD rápidas basadas en memoria flash como cachés para discos duros mecánicos (HDD) más lentos con medios magnéticos rotacionales . De esta manera, se puede salvar la brecha entre las unidades SSD y los discos duros tradicionales : la costosa velocidad de las unidades SSD se combina con la económica capacidad de almacenamiento de los discos duros tradicionales. [ 2 ] 

El almacenamiento en caché se implementa utilizando SSD para almacenar datos asociados con lecturas y escrituras aleatorias realizadas, utilizando tiempos de búsqueda casi nulos como la característica más destacada de los SSD. La E/S secuencial no se almacena en caché para evitar la invalidación rápida de la caché SSD en operaciones que ya son suficientemente adecuadas para HDD; el uso de la caché para escrituras secuenciales grandes se conoce como política de escritura alrededor . No almacenar en caché la E/S secuencial también ayuda a extender la vida útil de los SSD utilizados como cachés. [ 3 ] La amplificación de escritura se evita al no realizar escrituras aleatorias en los SSD; en cambio, todas las escrituras aleatorias en las cachés SSD siempre se combinan en escrituras a nivel de bloque, terminando con la reescritura solo de los bloques de borrado completos en los SSD. [ 4 ] [ 5 ]

Se admiten las políticas de escritura diferida (write-back) y escritura directa (write-through), que es la predeterminada, para el almacenamiento en caché de operaciones de escritura. En el caso de la política de escritura diferida, los datos escritos se almacenan primero en las cachés SSD y luego se propagan a los discos duros (HDD) de forma agrupada, realizando operaciones de búsqueda eficientes , lo que hace que bcache actúe también como un planificador de E/S . Para la política de escritura directa, que garantiza que ninguna operación de escritura se marque como finalizada hasta que los datos solicitados para ser escritos hayan llegado tanto a las SSD como a los HDD, las mejoras de rendimiento se reducen al realizar, en la práctica, solo el almacenamiento en caché de los datos escritos. [ 4 ] [ 5 ] 

La política de escritura diferida con escrituras por lotes en discos duros proporciona beneficios adicionales a las configuraciones RAID ( matriz redundante de discos independientes ) sensibles a la escritura, como RAID 5 y RAID 6 , que realizan operaciones de escritura reales como secuencias atómicas de lectura-modificación-escritura . De esta forma, se reducen o evitan las penalizaciones de rendimiento [ 6 ] de las pequeñas escrituras aleatorias para dichas configuraciones RAID, al agruparlas y realizarlas como escrituras secuenciales por lotes. [ 4 ] [ 5 ]

El almacenamiento en caché realizado por bcache opera a nivel de dispositivo de bloques , lo que lo hace independiente del sistema de archivos siempre que este proporcione un identificador único universal (UUID) integrado; este requisito lo cumplen prácticamente todos los sistemas de archivos estándar de Linux , así como las particiones de intercambio . El tamaño de los bloques lógicos utilizados internamente por bcache como extensiones de caché puede llegar al tamaño de un solo sector de disco duro. [ 7 ]

Historia

bcache fue anunciado por primera vez por Kent Overstreet en julio de 2010 como un módulo del kernel de Linux completamente funcional, aunque en su fase beta inicial. [ 8 ] El desarrollo continuó durante casi dos años, hasta mayo de 2012, momento en el que bcache alcanzó su estado listo para producción. [ 5 ]

Se fusionó con el núcleo principal de Linux en la versión 3.10, publicada el 30 de junio de 2013. [ 9 ] [ 10 ] Desde entonces, Overstreet ha estado desarrollando el sistema de archivos bcachefs , basado en ideas desarrolladas inicialmente en bcache que, según él, comenzaron a "evolucionar ... en un sistema de archivos POSIX  completo y de propósito general ". [ 11 ] Describe bcache como un "prototipo" de las ideas que se convirtieron en bcachefs y pretende que bcachefs reemplace a bcache. [ 12 ] Anunció oficialmente bcachefs en 2015 y logró su fusión con el núcleo principal de Linux en octubre de 2023, [ 13 ] sin embargo, en junio de 2025, Linus Torvalds anunció que bcachefs se eliminaría del núcleo principal de Linux en la versión 6.17, tras tensiones entre Torvalds y Overstreet. [ 14 ] [ 15 ]

Características

A partir de la versión 3.10 del kernel de Linux, bcache proporciona las siguientes características: [ 4 ]

  • El mismo dispositivo de caché se puede utilizar para almacenar en caché un número arbitrario de dispositivos de almacenamiento primario.
  • Conexión y desconexión en tiempo de ejecución de dispositivos de almacenamiento primario desde sus cachés, mientras están montados y en uso (ejecutándose en modo de paso directo cuando no están en caché).
  • Recuperación automatizada tras apagados incorrectos : las escrituras no se completan hasta que la caché sea coherente con respecto al dispositivo de almacenamiento principal; internamente, bcache no distingue entre apagados correctos e incorrectos. 
  • Manejo transparente de errores de E/S generados por los dispositivos de caché [ 3 ]
  • Las barreras de escritura y los vaciados de caché asociados se gestionan correctamente.
  • Políticas de escritura directa (que es la predeterminada), escritura diferida y escritura direccional
  • Se detecta y se omite la E/S secuencial, con umbrales configurables; también se puede deshabilitar la omisión.
  • Limitación de las operaciones de entrada/salida (E/S) a la unidad SSD si se congestiona, según lo detectado por una latencia medida de las operaciones de E/S de la SSD que supere un umbral configurable; útil para configuraciones en las que una unidad SSD proporciona almacenamiento en caché para varios discos duros.
  • Lectura anticipada en caso de fallo de caché (desactivada por defecto)
  • Implementación de escritura diferida altamente eficiente : los datos modificados siempre se escriben en orden ordenado y, opcionalmente, la escritura diferida en segundo plano se reduce gradualmente para mantener un porcentaje configurado de la caché modificado. 
  • Internamente se utilizan árboles B+ de alto rendimiento ; bcache es capaz de alcanzar alrededor de 1.000.000 de IOPS en lecturas aleatorias, si el hardware es lo suficientemente rápido. 
  • Varias estadísticas de tiempo de ejecución y opciones de configuración se exponen a través de sysfs [ 3 ].

mejoras

A fecha de febrero de 2014 , las siguientes nuevas características están planificadas para las futuras versiones de bcache: [ 10 ]

  • Conciencia del seccionamiento de datos en configuraciones RAID  5 y RAID 6 : se agrega la consideración del seccionamiento a la política de escritura diferida, de modo que las decisiones sobre el almacenamiento en caché darán preferencia a los seccionamientos ya "sucios" y las operaciones de vaciado en segundo plano escribirán primero los seccionamientos completos.  
  • Manejo de fallos de caché con nodos de árbol B+ ya llenos : a partir de la versión bcache en el kernel de Linux 3.10, las divisiones de los nodos de árbol B+ utilizados internamente ocurren en las escrituras, lo que hace que el calentamiento inicial de la caché sea difícil de lograr. 
  • Múltiples SSD en un conjunto de caché : solo se replicarían los datos modificados (para la política de escritura diferida) y los metadatos , sin desperdiciar espacio SSD destinado a los datos limpios y las cachés de lectura. 
  • Verificación de datos

Véase también

  • dm-cache : un objetivo de mapeo de dispositivos del kernel de Linux que permite la creación de volúmenes híbridos. 
  • EnhanceIO : un módulo de caché de disco para el kernel de Linux. 
  • Flashcache : un componente de caché de disco para el kernel de Linux, desarrollado inicialmente por Facebook. 
  • Unidad híbrida : un dispositivo de almacenamiento que combina tecnologías de almacenamiento basadas en memoria flash y medios magnéticos giratorios. 
  • ReadyBoost : un componente de software de almacenamiento en caché de disco de Windows Vista y sistemas operativos Microsoft posteriores. 
  • Tecnología de respuesta inteligente (SRT) : un mecanismo de almacenamiento en caché de disco propietario, desarrollado por Intel para sus chipsets. 

Referencias

  1. "Preguntas frecuentes sobre bcache" . bcache.evilpiepirate.org . Consultado el 7 de mayo de 2021 .
  2. Petros Koutoupis (25 de noviembre de 2013). "Técnicas avanzadas de almacenamiento en caché de discos duros" . Linux Journal . Consultado el 2 de diciembre de 2013 .
  3. 1 2 3 "Documentación del kernel de Linux: Documentation/bcache.txt" . kernel.org . 12 de agosto de 2013. Consultado el 24 de enero de 2014 .
  4. 1 2 3 4 Kent Overstreet. "bcache: caché de capa de bloques del kernel de Linux" . bcache.evilpiepirate.org . Consultado el 2 de diciembre de 2013 .
  5. 1 2 3 4 Jonathan Corbet (12 de mayo de 2012). "Una actualización de bcache" . LWN.net . Recuperado el 4 de octubre de 2013 .
  6. "Organizaciones RAID básicas" . ecs.umass.edu . Consultado el 4 de octubre de 2013 .
  7. William Stearns; Kent Overstreet (2 de julio de 2010). "bcache: Almacenamiento en caché más allá de la RAM" . LWN.net . Consultado el 4 de octubre de 2013 .
  8. Kent Overstreet (4 de julio de 2010). "bcache: Versión 6" . LWN.net . Consultado el 4 de octubre de 2013 .
  9. "Núcleo de Linux 3.10, Sección 1.2. bcache, una caché de capa de bloques para almacenamiento en caché SSD" . kernelnewbies.org . 30 de junio de 2013. Consultado el 4 de octubre de 2013 .
  10. 1 2 Libby Clark (11 de junio de 2013). "Todo sobre el núcleo de Linux: bcache" . linux.com . Archivado del original el 29 de septiembre de 2013. Recuperado el 9 de octubre de 2013 .
  11. Larabel, Michael (21 de agosto de 2015). "Un nuevo sistema de archivos de Linux busca la velocidad a la vez que ofrece características similares a ZFS/Btrfs" . Phoronix . Consultado el 22 de noviembre de 2018 .
  12. Edge, Jake (23 de mayo de 2018). "Una actualización sobre bcachefs" . LWN.net . Consultado el 22 de noviembre de 2018 .
  13. Larabel, Michael (31 de octubre de 2023). "Bcachefs se fusionó con el kernel de Linux 6.7" . Phoronix . Consultado el 20 de noviembre de 2023 .
  14. Torvalds, Linus (26 de junio de 2025). "Asunto: Re: [ GIT PULL ] correcciones de bcachefs para 6.16-rc4" . lore.kernel.org . Consultado el 25 de junio de 2025 .
  15. Rudra, Sourav (27 de junio de 2025). "Nuevo drama en el kernel de Linux: Torvalds abandona el soporte para Bcachefs tras un conflicto" . It's FOSS News . Consultado el 25 de junio de 2025 .
  • Sitio web oficial
  • LSFMM: Almacenamiento en caché dm-cache y bcache  , LWN.net , 1 de mayo de 2013, por Jake Edge
  • Opciones de almacenamiento en caché de bloques de Linux en el kernel estable (PDF), Dell , diciembre de 2013
  • Serie de pruebas de bcache: Rendimiento , IOPS , metadatos y archivos grandes, y un resumen , Linux Magazine , agosto - septiembre de 2010, por Jeffrey B. Layton.
  • Comparación de rendimiento entre EnhanceIO, bcache y dm-cache , LKML , 11 de junio de 2013
  • Pruebas de rendimiento de EnhanceIO, Bcache y DM-Cache , Phoronix , 11 de junio de 2013, por Michael Larabel