Bcache (abreviado de block cache ) es un 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ápido, como unidades de estado sólido (SSD) basadas en flash , actúen como caché para uno o más dispositivos de almacenamiento más lentos, como unidades de disco duro (HDD); esto crea efectivamente volúmenes híbridos y proporciona mejoras de rendimiento.
Desarrollador (es) | Kent Overstreet y otros |
---|---|
Repositorio | |
Escrito en | C |
Sistema operativo | Linux |
Tipo | Características del kernel de Linux |
Licencia | GNU GPL |
Sitio web | bcache |
Diseñado en torno a la naturaleza y las características de rendimiento de los SSD, Bcache también minimiza la amplificación de escritura al evitar las escrituras aleatorias y convertirlas en escrituras secuenciales . Esta combinación de operaciones de E / S se realiza tanto para la caché como para el almacenamiento primario, lo que ayuda a extender la vida útil de los dispositivos basados en flash utilizados como cachés y a mejorar el rendimiento de los almacenamientos primarios sensibles a la escritura, como los conjuntos RAID 5 .
Bcache tiene la licencia GNU General Public License (GPL) y Kent Overstreet es su desarrollador principal. Overstreet considera a Bcache como un "prototipo" para el desarrollo de Bcachefs , un sistema de archivos con importantes mejoras. [1] [2]
Descripción general
El uso de Bcache hace posible tener SSD como otro nivel de indirección dentro de las rutas de acceso al almacenamiento de datos, lo que resulta en un rendimiento general mejorado al usar SSD rápidos basados en flash como cachés para unidades de disco duro mecánicas (HDD) más lentas con medios magnéticos rotacionales . De esa manera, se puede salvar la brecha entre los SSD y los HDD: la costosa velocidad de los SSD se combina con la capacidad de almacenamiento barata de los HDD tradicionales. [3]
El almacenamiento en caché se implementa mediante el uso de SSD para almacenar datos asociados con lecturas aleatorias realizadas y escrituras aleatorias, utilizando tiempos de búsqueda cercanos a cero 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 lo suficientemente adecuadas para HDD; recorrer la caché para grandes escrituras secuenciales se conoce como política de escritura indirecta. No almacenar en caché la E / S secuencial también ayuda a extender la vida útil de los SSD utilizados como cachés. [4] La amplificación de escritura se evita al no realizar escrituras aleatorias en SSD; en cambio, todas las escrituras aleatorias en cachés SSD siempre se combinan en escrituras a nivel de bloque, terminando por reescribir solo los bloques de borrado completos en SSD. [5] [6]
Tanto write-back y de escritura simultánea (que es el valor por defecto) políticas son compatibles para el almacenamiento en caché las operaciones de escritura. En el caso de la política de escritura no simultánea, los datos escritos se almacena dentro de las memorias caché SSD primeros, y se propagó a los discos duros más adelante en una forma por lotes en el desempeño de las operaciones de búsqueda fácil - hacer BCache actuar también como un I / O planificador . Para la política de escritura simultánea, que garantiza que ninguna operación de escritura se marque como finalizada hasta que los datos solicitados para ser escritos lleguen tanto a los SSD como a los HDD, las mejoras de rendimiento se reducen al realizar de manera efectiva solo el almacenamiento en caché de los datos escritos. [5] [6]
La política de escritura diferida con escrituras por lotes en discos duros proporciona beneficios adicionales a los diseños de arreglos redundantes de discos independientes (RAID) sensibles a escritura , como RAID 5 y RAID 6 , que realizan operaciones de escritura reales como secuencias atómicas de lectura-modificación-escritura . De esa forma, las penalizaciones de rendimiento [7] de pequeñas escrituras aleatorias se reducen o evitan para tales diseños RAID, al agruparlos y realizarlos como escrituras secuenciales por lotes. [5] [6]
El almacenamiento en caché realizado por Bcache opera en el nivel de dispositivo de bloque , haciéndose a sí mismo sistema de archivos - diagnóstico siempre que el sistema de archivos proporcione un identificador único universal integrado (UUID); este requisito lo satisfacen prácticamente todos los sistemas de archivos estándar de Linux , así como también las particiones de intercambio . Los tamaños de los bloques lógicos utilizados internamente por Bcache como extensiones de almacenamiento en caché pueden reducirse al tamaño de un solo sector de HDD. [8]
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 etapa beta inicial. [9] El desarrollo continuó durante casi dos años, hasta mayo de 2012, momento en el que Bcache alcanzó su estado listo para la producción. [6]
Se fusionó con la línea principal del kernel de Linux en la versión 3.10 del kernel, lanzada el 30 de junio de 2013. [10] [11] Overstreet ha estado desarrollando desde entonces el sistema de archivos Bcachefs , basado en ideas desarrolladas por primera vez en Bcache que, según él, comenzaron a "evolucionar". .. en un completo sistema de archivos POSIX de propósito general ". [12] Describe Bcache como un "prototipo" de las ideas que se convirtieron en Bcachefs y pretende que Bcachefs reemplace a Bcache. [13] Anunció oficialmente Bcachefs en 2015, [14] y a partir de 2018 lo ha estado enviando para su consideración para su inclusión en el kernel principal de Linux. [15]
Características
A partir de la versión 3.10 del kernel de Linux, Bcache proporciona las siguientes características: [5]
- El mismo dispositivo de caché se puede utilizar para almacenar en caché un número arbitrario de dispositivos de almacenamiento primarios.
- Conexión y desconexión en tiempo de ejecución de dispositivos de almacenamiento primarios de sus cachés, mientras están montados y en uso (se ejecuta en modo de transferencia cuando no se almacenan en caché)
- Recuperación automatizada de cierres no limpios: las escrituras no se completan hasta que la caché es consistente con respecto al dispositivo de almacenamiento principal; internamente, Bcache no distingue entre cierres limpios e impuros
- Manejo transparente de errores de E / S generados por los dispositivos de caché [4]
- Las barreras de escritura y los vaciados de caché asociados se manejan correctamente
- Políticas de escritura simultánea (que es la predeterminada), escritura diferida y escritura indirecta
- La E / S secuencial se detecta y evita, con umbrales configurables; la omisión también se puede desactivar
- Aceleración de la E / S del SSD si se congestiona, según lo detectado por la latencia medida de las operaciones de E / S del SSD que superan un umbral configurable; útil para configuraciones que tienen un SSD que proporciona almacenamiento en caché para muchos HDD
- Leer en un error de caché (deshabilitado de forma predeterminada)
- Implementación de escritura diferida altamente eficiente: los datos sucios siempre se escriben en orden ordenado y, opcionalmente, la escritura diferida en segundo plano se reduce suavemente para mantener sucio el porcentaje configurado de la caché
- Los árboles B + de alto rendimiento se utilizan internamente: Bcache es capaz de alrededor de 1,000,000 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 [4]
Mejoras
A febrero de 2014[actualizar], las siguientes funciones nuevas están previstas para las versiones futuras de Bcache: [11]
- Conocimiento de la distribución de datos en los diseños de RAID 5 y RAID 6, lo que agrega conciencia del diseño de bandas a la política de escritura diferida, por lo que las decisiones sobre el almacenamiento en caché darán preferencia a las bandas ya "sucias", y los vaciados de fondo reales escribirán bandas completas primero
- Manejo de fallas de caché con nodos de árbol B + ya completos: a partir de la versión de Bcache en el kernel de Linux 3.10, las divisiones de los nodos de árbol B + utilizados internamente ocurren en escrituras, lo que hace que los calentamientos iniciales de caché sean difíciles de lograr
- Múltiples SSD en un conjunto de caché: solo se reflejarían los datos sucios (para la política de escritura diferida) y los metadatos , sin desperdiciar espacio SSD para los datos limpios y las cachés de lectura
- Suma de comprobación de datos
Ver también
- dm-cache : un destino del mapeador 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 de medios magnéticos giratorios y basadas en flash
- ReadyBoost : un componente de software de almacenamiento en caché de disco de Windows Vista y sistemas operativos de Microsoft posteriores
- Tecnología de respuesta inteligente (SRT): un mecanismo de almacenamiento en caché de almacenamiento en disco patentado, desarrollado por Intel para sus conjuntos de chips
Referencias
- ^ "bcache" . bcache.evilpiepirate.org . Consultado el 7 de mayo de 2021 .
- ^ "Preguntas frecuentes" . bcache.evilpiepirate.org . Consultado el 7 de mayo de 2021 .
- ^ Petros Koutoupis (25 de noviembre de 2013). "Técnicas avanzadas de almacenamiento en caché de disco duro" . Diario de Linux . Consultado el 2 de diciembre de 2013 .
- ^ a b c "Documentación del kernel de Linux: Documentation / bcache.txt" . kernel.org . 12 de agosto de 2013 . Consultado el 24 de enero de 2014 .
- ^ a b c d Kent Overstreet. "bcache: caché de capa de bloque del kernel de Linux" . bcache.evilpiepirate.org . Consultado el 2 de diciembre de 2013 .
- ^ a b c d Jonathan Corbet (12 de mayo de 2012). "Una actualización de bcache" . LWN.net . Consultado el 4 de octubre de 2013 .
- ^ "Organizaciones RAID básicas" . ecs.umass.edu . Consultado el 4 de octubre de 2013 .
- ^ 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 .
- ^ Kent Overstreet (4 de julio de 2010). "Bcache: Versión 6" . LWN.net . Consultado el 4 de octubre de 2013 .
- ^ "Linux kernel 3.10, sección 1.2. Bcache, un caché de capa de bloque para almacenamiento en caché SSD" . kernelnewbies.org . 30 de junio de 2013 . Consultado el 4 de octubre de 2013 .
- ^ a b Libby Clark (11 de junio de 2013). "Todo sobre el kernel de Linux: Bcache" . linux.com . Archivado desde el original el 29 de septiembre de 2013 . Consultado el 9 de octubre de 2013 .
- ^ Larabel, 2015 .
- ^ Borde 2018 .
- ^ Jackson, 2015 .
- ^ Larabel 2018 .
Trabajos citados
- Edge, Jake (23 de mayo de 2018). "Una actualización sobre bcachefs" . LWN.net . Archivado desde el original el 1 de junio de 2018 . Consultado el 22 de noviembre de 2018 .
- Jackson, Joab (21 de agosto de 2015). "El ex ingeniero de Google acelera un nuevo sistema de archivos Linux" . PCWorld . Consultado el 22 de noviembre de 2018 .
- Larabel, Michael (21 de agosto de 2015). "Un nuevo sistema de archivos de Linux apunta a la velocidad mientras tiene características similares a ZFS / Btrfs" . Phoronix . Archivado desde el original el 23 de agosto de 2015 . Consultado el 22 de noviembre de 2018 .
- Larabel, Michael (9 de mayo de 2018). "El sistema de archivos de Bcachefs está trabajando para avanzar en el kernel de Linux" . Phoronix . Archivado desde el original el 9 de julio de 2018 . Consultado el 22 de noviembre de 2018 .
enlaces externos
- Página web oficial
- LSFMM: Caching - dm-cache y bcache , LWN.net , 1 de mayo de 2013, por Jake Edge
- Opciones de almacenamiento en caché de bloques de Linux en un kernel ascendente estable (PDF), Dell , diciembre de 2013
- Prueba de la serie 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
- EnhanceIO, Bcache & DM-Cache Benchmarked , Phoronix , 11 de junio de 2013, por Michael Larabel