Últimamente he estado leyendo sobre el almacenamiento en caché de escritura, NCQ, errores de firmware, barreras, etc. con respecto a las unidades SATA, y no estoy seguro de cuál es la mejor configuración que haría que mis datos estén seguros en caso de una falla de energía.
Por lo que entiendo, NCQ permite que la unidad reordene las escrituras para optimizar el rendimiento, al tiempo que mantiene informado al núcleo sobre las solicitudes que se han escrito físicamente.
La caché de escritura hace que la unidad atienda una solicitud mucho más rápido, porque no espera a que los datos se escriban en el disco físico.
No estoy seguro de cómo se mezclan NCQ y Write cache aquí ...
Los sistemas de archivos, especialmente los que tienen un diario, deben estar seguros cuando se ha escrito una solicitud en particular. Además, el proceso de espacio de usuario usa fsync () para forzar el vaciado de un archivo en particular. Esa llamada a fsync () no debería volver hasta que el sistema de archivos esté seguro de que los datos se escriben en el disco.
Hay una característica (FUA, Force Unit Access), que solo he visto en unidades SAS, que obliga a la unidad a omitir la memoria caché y escribir directamente en el disco. Para todo lo demás, hay barreras de escritura, que es un mecanismo proporcionado por el núcleo que puede desencadenar un vaciado de caché en la unidad. Esto obliga a que se escriba todo el caché, no solo los datos críticos, lo que ralentiza todo el sistema si se abusa, con fsync (), por ejemplo.
Y luego hay unidades con errores de firmware, o que mienten deliberadamente sobre cuándo se han escrito físicamente los datos.
Dicho esto ... hay varias formas de configurar las unidades / sistemas de archivos: A) NCQ y caché de escritura deshabilitado B) Solo NCQ habilitado C) Simplemente escribir caché habilitado D) Tanto NCQ como caché de escritura habilitado
Asumo que las barreras están habilitadas. Por cierto, ¿cómo verificar si realmente están habilitadas?
En caso de pérdida de energía, mientras escribo activamente en el disco, supongo que la opción B (NCQ, sin caché) es segura, tanto para el diario del sistema de archivos como para los datos. Puede haber una penalización de rendimiento.
La opción D (NCQ + caché), si usa barreras o FUA, sería segura para el diario del sistema de archivos y las aplicaciones que usan fsync (). Sería malo para los datos que esperaban en el caché, y depende del sistema de archivos detectarlo (suma de verificación), y al menos el sistema de archivos no estará (con suerte) en un estado inestable. En cuanto al rendimiento, debería ser mejor.
Mi pregunta, sin embargo, se mantiene ... ¿Me estoy perdiendo algo? ¿Hay alguna otra variable a tener en cuenta? ¿Hay alguna herramienta que pueda confirmar esto y que mis unidades se comporten como deberían?