Articulo de referencia

caché dm

dm-cache es un componente (más específicamente, un objetivo) del mapeador de dispositivos del kernel de Linux , que es un marco para mapear dispositivos de bloques a dispositivo...

dm-cache es un componente (más específicamente, un objetivo) del mapeador de dispositivos del kernel de Linux , que es un marco para mapear dispositivos de bloques a dispositivos de bloques virtuales de nivel superior. 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 proporciona mejoras en el rendimiento del almacenamiento secundario .

El diseño de dm-cache requiere tres dispositivos de almacenamiento físico para la creación de un único volumen híbrido. dm-cache utiliza estos dispositivos para almacenar por separado los datos reales, los datos de caché y los metadatos necesarios . Los modos de funcionamiento y las políticas de caché configurables, estas últimas en forma de módulos independientes, determinan cómo se realiza el almacenamiento en caché de datos.

dm-cache está licenciado bajo los términos de la Licencia Pública General de GNU (GPL), y sus desarrolladores principales son Joe Thornber, Heinz Mauelshagen y Mike Snitzer.

Descripción general

dm-cache utiliza unidades de estado sólido ( SSD ) como un nivel adicional de indirección al acceder a discos duros ( HDD ), mejorando el rendimiento general al usar SSD rápidas basadas en memoria flash como cachés para los HDD mecánicos más lentos basados ​​en medios magnéticos rotacionales . Como resultado, la costosa velocidad de las SSD se combina con la capacidad de almacenamiento que ofrecen los HDD más lentos pero menos costosos. [ 1 ] Además, en el caso de redes de área de almacenamiento (SAN) utilizadas en entornos de nube como sistemas de almacenamiento compartido para máquinas virtuales , dm-cache también puede mejorar el rendimiento general y reducir la carga de las SAN al proporcionar almacenamiento en caché de datos utilizando almacenamiento local del lado del cliente. [ 2 ] [ 3 ] [ 4 ]

dm-cache se implementa como un componente del mapeador de dispositivos del kernel de Linux , que es un marco de administración de volúmenes que permite crear varios mapeos entre dispositivos de bloques físicos y virtuales. La forma en que se crea un mapeo entre dispositivos determina cómo se traducen los bloques virtuales a bloques físicos subyacentes, y los tipos de traducción específicos se denominan objetivos . [ 5 ] Al actuar como un objetivo de mapeo, dm-cache permite que el almacenamiento en caché basado en SSD forme parte del dispositivo de bloques virtual creado, mientras que los modos de operación configurables y las políticas de caché determinan cómo funciona dm-cache internamente. El modo de operación selecciona la forma en que se mantienen sincronizados los datos entre un HDD y un SSD, mientras que la política de caché, seleccionable desde módulos separados que implementan cada una de las políticas, proporciona el algoritmo para determinar qué bloques se promueven (se mueven de un HDD a un SSD), se degradan (se mueven de un SSD a un HDD), se limpian, etc. [ 6 ]

Cuando se configura para usar la política de caché de cola múltiple (mq) o de cola múltiple estocástica (smq), siendo esta última la predeterminada, dm-cache usa SSD para almacenar los datos asociados con las lecturas y escrituras aleatorias realizadas , aprovechando los tiempos de búsqueda casi nulos de las SSD y evitando que dichas operaciones de E/S sean cuellos de botella típicos del rendimiento de los HDD. Los datos asociados con las lecturas y escrituras secuenciales no se almacenan en caché en las SSD, evitando la invalidación indeseable de la caché durante dichas operaciones; en términos de rendimiento, esto es beneficioso porque las operaciones de E/S secuenciales son adecuadas para los HDD debido a su naturaleza mecánica. No almacenar en caché las E/S secuenciales también ayuda a extender la vida útil de las SSD utilizadas como cachés. [ 7 ]

Historia

Otro proyecto dm-cache con objetivos similares fue anunciado por Eric Van Hensbergen y Ming Zhao en 2006, como resultado de un trabajo de prácticas en IBM . [ 8 ]

Más tarde, Joe Thornber, Heinz Mauelshagen y Mike Snitzer proporcionaron su propia implementación del concepto, lo que resultó en la inclusión de dm-cache en el kernel de Linux. dm-cache se integró en la rama principal del kernel de Linux en la versión 3.9, que se publicó el 28 de abril de 2013. [ 6 ] [ 9 ]

Diseño

En dm-cache, la creación de un dispositivo de bloques virtuales mapeado que actúa como un volumen híbrido requiere tres dispositivos de almacenamiento físico: [ 6 ]

  • Dispositivo de origen : proporciona almacenamiento primario lento (normalmente un disco duro). 
  • Cache device  provides a fast cache (usually an SSD)
  • Metadata device  records the placement of blocks and their dirty flags, as well as other internal data required by a cache policy, including per-block hit counts; a metadata device cannot be shared between multiple cache devices, and it is recommended to be mirrored

Internally, dm-cache references to each of the origin devices through a number of fixed-size blocks; the size of these blocks, equaling to the size of a caching extent, is configurable only during the creation of a hybrid volume. The size of a caching extent must range between 32 KB and 1 GB, and it must be a multiple of 32 KB; typically, the size of a caching extent is between 256 and 1024 KB. The choice of the caching extents bigger than disk sectors acts a compromise between the size of metadata and the possibility for wasting cache space. Having too small caching extents increases the size of metadata, both on the metadata device and in kernel memory, while having too large caching extents increases the amount of wasted cache space due to caching whole extents even in the case of high hit rates only for some of their parts.[6][10]

Operating modes supported by dm-cache are write-back, which is the default, write-through, and pass-through. In the write-back operating mode, writes to cached blocks go only to the cache device, while the blocks on origin device are only marked as dirty in the metadata. For the write-through operating mode, write requests are not returned as completed until the data reaches both the origin and cache devices, with no clean blocks becoming marked as dirty. In the pass-through operating mode, all reads are performed directly from the origin device, avoiding the cache, while all writes go directly to the origin device; any cache write hits also cause invalidation of the cached blocks. The pass-through mode allows a hybrid volume to be activated when the state of a cache device is not known to be consistent with the origin device.[6][11]

La tasa de migración de datos que realiza dm-cache en ambas direcciones (es decir, promoción y degradación de datos) se puede limitar a una velocidad configurada para preservar la E/S regular hacia los dispositivos de origen y caché. La desactivación de un volumen híbrido o la reducción de un dispositivo de caché requiere el uso de la política de limpieza , que efectivamente vacía todos los bloques marcados en los metadatos como sucios desde el dispositivo de caché al dispositivo de origen. [ 6 ] [ 7 ]

Políticas de caché

A fecha de agosto de 2015 y la versión  4.2 del kernel de Linux, [ 12 ] las siguientes tres políticas de caché se distribuyen con la línea principal del kernel de Linux, de las cuales dm-cache por defecto utiliza la política estocástica de múltiples colas : [ 6 ] [ 7 ]

multicola (mq)
La política de colas múltiples (mq) tiene tres conjuntos de 16 colas , usando el primer conjunto para las entradas que esperan en la caché y los dos conjuntos restantes para las entradas que ya están en la caché, con estos últimos separados de manera que las entradas limpias y sucias pertenezcan a cada uno de los dos conjuntos. La antigüedad de las entradas de caché en las colas se basa en su tiempo lógico asociado. La selección de entradas que van a la caché (es decir, que se promueven) se basa en umbrales variables, y la selección de cola se basa en el número de aciertos de una entrada. Esta política tiene como objetivo considerar diferentes costos de fallos de caché y realizar ajustes automáticos a diferentes patrones de carga.
Esta política realiza un seguimiento interno de las operaciones de E/S secuenciales para que puedan ser enrutadas a través de la caché, con diferentes umbrales configurables para diferenciar entre operaciones de E/S aleatorias y secuenciales. Como resultado, las operaciones de E/S contiguas de gran tamaño se dejan para que las realice el dispositivo de origen, ya que estos patrones de acceso a datos son adecuados para discos duros y porque evitan la invalidación indeseada de la caché.
multicola estocástica (smq)
La política de multicola estocástica (smq) funciona de manera similar a la política de multicola , pero requiere menos recursos para operar; en particular, utiliza cantidades sustancialmente menores de memoria principal para el seguimiento de los bloques en caché. Además, reemplaza el conteo de aciertos de la política de multicola con una cola de "puntos críticos" y decide la promoción y degradación de datos según el criterio de uso menos reciente (LRU). Como resultado, esta política ofrece un mejor rendimiento en comparación con la política de multicola , se ajusta automáticamente mejor a diferentes patrones de carga y elimina la necesidad de configurar varios umbrales.
limpiador
The cleaner policy writes back to the origin device all blocks that are marked as dirty in the metadata. After the completion of this operation, a hybrid volume can be decommissioned or the size of a cache device can be reduced.

Use with LVM

Logical Volume Manager includes lvmcache, which provides a wrapper for dm-cache integrated with LVM.[13]

See also

  • bcache  a Linux kernel's block layer cache, developed by Kent Overstreet
  • Flashcache  a disk cache component for the Linux kernel, initially developed by Facebook
  • Hybrid drive  a storage device that combines flash-based and spinning magnetic media storage technologies
  • ReadyBoost  a disk caching software component of Windows Vista and later Microsoft operating systems
  • Smart Response Technology (SRT)  a proprietary disk storage caching mechanism, developed by Intel for its chipsets
  • ZFS  a cross-OS storage management system that has a similar integrated caching device support (L2ARC)

References

  1. Petros Koutoupis (November 25, 2013). "Advanced Hard Drive Caching Techniques". Linux Journal. Retrieved December 2, 2013.
  2. "dm-cache: Dynamic Block-level Storage Caching". visa.cs.fiu.edu. Archived from the original on July 18, 2014. Retrieved July 24, 2014.
  3. Dulcardo Arteaga; Douglas Otstott; Ming Zhao (May 16, 2012). "Dynamic Block-level Cache Management for Cloud Computing Systems". visa.cs.fiu.edu. Archived from the original(PDF) on December 3, 2013. Retrieved December 2, 2013.
  4. Dulcardo Arteaga; Ming Zhao (June 21, 2014). "Client-side Flash Caching for Cloud Systems". visa.cs.fiu.edu. ACM. Archived from the original(PDF) on September 6, 2015. Retrieved August 31, 2015.
  5. "Red Hat Enterprise Linux 6 Documentation, Appendix A. The Device Mapper". Red Hat. October 8, 2014. Retrieved December 23, 2014.
  6. 1 2 3 4 5 6 7 Joe Thornber; Heinz Mauelshagen; Mike Snitzer (20 de julio de 2015). "Documentación del kernel de Linux: Documentation/device-mapper/cache.txt" . kernel.org . Consultado el 31 de agosto de 2015 .
  7. 1 2 3 Joe Thornber; Heinz Mauelshagen; Mike Snitzer (29 de junio de 2015). "Documentación del kernel de Linux: Documentation/device-mapper/cache-policies.txt" . kernel.org . Consultado el 31 de agosto de 2015 .
  8. Eric Van Hensbergen; Ming Zhao (28 de noviembre de 2006). "Almacenamiento en caché de disco con políticas dinámicas para redes de almacenamiento" (PDF) . Informe de investigación de IBM. IBM . Consultado el 2 de diciembre de 2013 .
  9. "Núcleo de Linux 3.9, Sección 1.3. Dispositivos de caché SSD" . kernelnewbies.org . 28 de abril de 2013. Consultado el 7 de octubre de 2013 .
  10. Jake Edge (1 de mayo de 2013). "LSFMM: Almacenamiento en caché : dm-cache y bcache" . LWN.net . Consultado el 7 de octubre de 2013 .
  11. Joe Thornber (11 de noviembre de 2013). "Árbol fuente del kernel de Linux: kernel/git/torvalds/linux.git: caché dm: agregar modo de paso directo" . kernel.org . Consultado el 6 de febrero de 2014 .
  12. Jonathan Corbet (1 de julio de 2015). "4.2 Ventana de fusión, parte 2" . LWN.net . Consultado el 31 de agosto de 2015 .
  13. Red Hat, Inc. "lvmcache — Almacenamiento en caché LVM" . Páginas de manual de Debian. Una caché de punto caliente de lectura y escritura, que utiliza el módulo del kernel dm-cache.
  • Opciones de almacenamiento en caché de bloques de Linux en el kernel estable (PDF), Dell , diciembre de 2013
  • 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
  • Tutorial sobre almacenamiento en caché SSD mediante dm-cache , julio de 2014, por Kyle Manna
  • Re: [dm-devel] [PATCH 8/8] [dm-cache] objetivo de caché , 14 de diciembre de 2012 (directrices para el dimensionamiento de dispositivos de metadatos)