¿Qué es un caché de respaldo de batería?

8

He leído un artículo sobre la optimización del rendimiento de Innodb y en esa publicación el autor mencionaba repetidamente algo llamado "caché de respaldo de batería". Para mí no está claro de qué estaba hablando y Google tampoco ayudó. Supongo que este es algún tipo de almacenamiento de respaldo en caso de que haya un corte de energía. Estoy en lo cierto?

Adam Arold
fuente
1
normalmente se encuentra en tarjetas RAID de servidor que admiten el almacenamiento en caché de escritura. Si falla la alimentación y hay datos no escritos, la batería la mantendrá viva en la memoria caché para que pueda escribirse en el disco cuando el servidor se recupere
jqa

Respuestas:

7

Las matrices RAID utilizan una memoria caché respaldada por batería, por lo que pueden procesar datos más rápido de lo que pueden escribirlos. Sin la batería, no podrían almacenar en caché sin riesgo de pérdida de datos durante una falla de energía.

Esa es la única instancia en la que puedo pensar donde necesitarías un caché que esté específicamente respaldado por batería . Si estuviera respaldando la memoria volátil, no importaría.

Supongo que debería tener en cuenta que esta es una característica de una configuración RAID de hardware de nivel profesional, y no un software o RAID "a bordo" de nivel de consumidor. Las baterías son sustanciales, aproximadamente del tamaño de una lata de altoids . Tienden a ir mal cada 4-5 años, lo que mata su almacenamiento en caché y afecta el rendimiento de su tienda de respaldo.

Satanicpuppy
fuente
1 - el artículo original en realidad especifica una 'batería de copia de seguridad de caché RAID' así que esto es casi seguro que
razethestray
Sí, una matriz RAID de hardware es una aplicación perfecta para esta técnica. En general, es un concepto muy general que se puede utilizar en muchas aplicaciones.
Andyz Smith
3

El almacenamiento magnético es lento, por lo que es mejor colocar un caché frente a él. Es fácil ver cómo eso acelera las lecturas, pero ¿también puede acelerar las escrituras?

  • un caché de escritura no lo hace, porque aunque mantiene una copia de los datos escritos en el caché (para lecturas posteriores), no reconoce la operación como exitosa hasta que está en almacenamiento real ("golpea el óxido de hierro").

  • una memoria caché de reescritura sí, porque le indica al host que la operación finaliza tan pronto como esté en la memoria caché. Se escribirá en el almacenamiento permanente (magnético) un poco más tarde, en segundo plano.

Al principio, las memorias caché de reescritura suenan mejor, pero presentan una ventana de vulnerabilidad: si hay una pérdida de energía, cualquier dato reconocido pero aún no escrito se perderá. Los sistemas de archivos o las bases de datos no pueden evitar esto, ya que cualquier registro diario, barreras del planificador, orden de operación, etc., dependen del reconocimiento de escritura, lo que significa que los datos ya están escritos de manera segura.

La solución es agregar una pequeña batería al caché, para permitirle sobrevivir a una pérdida de energía. Tan pronto como se restablezca la alimentación, se completarán las escrituras pendientes (incluso antes de que se inicie el host).

Ahora también hay otras dos alternativas:

  • reemplace la memoria caché RAM con almacenamiento no volátil. Los SSD pueden ser mucho más grandes por el mismo costo, pero no son tan rápidos como la RAM. Aún así, en muchos casos son más rápidos que el enlace de datos, por lo que pueden ser lo suficientemente rápidos.

  • agregue una pequeña memoria no volátil al caché. En caso de pérdida de energía, una batería muy pequeña (o un supercondensador) le permite suficiente tiempo extra para guardar las entradas de caché pendientes para que parpadeen. No es necesario mantener viva la RAM durante una cantidad indeterminada de horas.

Javier
fuente
1

El almacenamiento en caché se utiliza para acelerar las operaciones. Un patrón de uso típico para un usuario es acceder al mismo registro un par de veces. Léalo, revíselo, obtenga algunos detalles, etc. Si el sistema subyacente guarda cualquier registro en la memoria, aunque sea brevemente, la próxima vez que el usuario intente interactuar con el registro, el acceso es miles de veces más rápido que cargarlo desde disco de nuevo.

El problema surge cuando los ingenieros tienen la brillante idea de que, para mejorar el rendimiento del sistema, colocarán en la memoria cosas que el usuario ha agregado al registro por un tiempo. Los datos no se escriben en el disco hasta que se vacía la memoria caché, que podría ser de unos segundos o quizás diez segundos, pero debido a que la memoria caché es pequeña y muchos cambios no caben, existe la posibilidad de que algunos cambios se escriban en el disco , mientras que otros permanecerán brevemente en caché de escritura . Si se corta la luz mientras está en el limbo, los resultados pueden ser devastadores para la integridad de un sistema de archivos o bases de datos.

Por lo tanto, algunos sistemas implementan un esquema de protección lógica en el software, fechando cambios o registrando cambios almacenados en caché o todo tipo de cosas un poco locas. Pero si tiene un caché de escritura respaldado por batería, puede prescindir de esas cosas y saber con seguridad que el caché de escritura siempre se escribirá .

Andyz Smith
fuente