Estoy familiarizado con lo que pretende hacer un BBWC (caché de escritura con respaldo de batería), y los usé anteriormente en mis servidores incluso con un buen UPS. Obviamente hay fallas para las que no brinda protección. Tengo curiosidad por entender si realmente ofrece algún beneficio real en la práctica.
(Nota: estoy buscando específicamente respuestas de personas que tienen BBWC y tuvieron accidentes / fallas y si BBWC ayudó a la recuperación o no)
Actualizar
Después de los comentarios aquí, soy cada vez más escéptico sobre si un BBWC agrega algún valor.
Para tener alguna confianza sobre la integridad de los datos, el sistema de archivos DEBE saber cuándo los datos se han comprometido con el almacenamiento no volátil (no necesariamente el disco, un punto al que volveré). Vale la pena señalar que muchos discos mienten sobre cuándo se han enviado datos al disco ( http://brad.livejournal.com/2116715.html ). Si bien parece razonable suponer que deshabilitar la memoria caché en el disco podría hacer que los discos sean más honestos, todavía no hay garantía de que este sea el caso tampoco.
Debido a las memorias intermedias típicamente grandes en un BBWC, una barrera puede requerir una cantidad significativamente mayor de datos que se comprometerán en el disco, causando retrasos en las escrituras: el consejo general es deshabilitar las barreras cuando se usa una memoria caché de escritura no volátil (y deshabilitar en- almacenamiento en caché de disco). Sin embargo, esto parecería socavar la integridad de la operación de escritura, solo porque se mantengan más datos en un almacenamiento no volátil no significa que sea más consistente. De hecho, podría decirse que sin una demarcación entre las transacciones lógicas parece haber menos oportunidades para garantizar la coherencia que de otra manera.
Si el BBWC reconociera las barreras en el momento en que los datos ingresan en su almacenamiento no volátil (en lugar de estar comprometido con el disco), parecería satisfacer el requisito de integridad de los datos sin una penalización de rendimiento, lo que implica que las barreras aún deberían estar habilitadas. Sin embargo, dado que estos dispositivos generalmente exhiben un comportamiento consistente con el vaciado de los datos al dispositivo físico (significativamente más lento con las barreras) y el consejo generalizado de desactivar las barreras, por lo tanto, no pueden comportarse de esta manera. ¿POR QUÉ NO?
Si la E / S en el sistema operativo se modela como una serie de secuencias, entonces existe cierto margen para minimizar el efecto de bloqueo de una barrera de escritura cuando el sistema operativo gestiona el almacenamiento en caché de escritura, ya que en este nivel solo se realiza la transacción lógica (una sola secuencia ) necesita ser comprometido. Por otro lado, un BBWC sin conocimiento de qué bits de datos componen la transacción tendría que enviar toda su caché al disco. Si los sistemas kernel / files realmente implementan esto en la práctica requeriría mucho más esfuerzo del que estoy dispuesto a invertir en este momento.
Una combinación de discos que dicen mentiras sobre lo que se ha cometido y la pérdida repentina de energía indudablemente conduce a la corrupción, y con un sistema de archivos estructurado Journalling o log que no realiza un fsck completo después de una interrupción, es poco probable que se detecte la corrupción y mucho menos Se intentó repararlo.
En términos de los modos de falla, en mi experiencia, la mayoría de los apagones repentinos ocurren debido a la pérdida de la alimentación de la red eléctrica (se mitiga fácilmente con un UPS y el apagado administrado). Las personas que extraen el cable incorrecto del bastidor implica una falta de higiene en el centro de datos (etiquetado y gestión de cables). Hay algunos tipos de eventos de pérdida repentina de energía que no son evitados por un UPS: una falla en la PSU o VRM, un BBWC con barreras proporcionaría integridad de datos en caso de una falla aquí, sin embargo, ¿qué tan comunes son tales eventos? Muy raro a juzgar por la falta de respuestas aquí.
Ciertamente, mover la tolerancia a fallas más alto en la pila es significativamente más costoso que un BBWC; sin embargo, implementar un servidor como un clúster tiene muchos otros beneficios para el rendimiento y la disponibilidad.
Una forma alternativa de mitigar el impacto de la pérdida repentina de energía sería implementar un SAN - AoE hace de esto una propuesta práctica (realmente no veo el punto en iSCSI) pero nuevamente hay un costo más alto.