Por definición, la información que reside en el almacenamiento estable nunca se pierde. Incluso, si el disco y la CPU tienen algunos errores, nunca perderá ningún dato.
Implementación de almacenamiento estable:
para lograr dicho almacenamiento, necesitamos replicar la información requerida en múltiples dispositivos de almacenamiento con modos de falla independientes. La escritura de una actualización debe coordinarse de tal forma que no borre todas las copias del estado y que, cuando estemos recuperándonos de un fallo, podamos forzar todas las copias a un valor consistente y correcto, incluso si otro se produce un error durante la recuperación. En estos, discutimos cómo satisfacer estas necesidades.
La operación de escritura en disco da como resultado uno de los siguientes resultados:
- Finalización exitosa:
los datos se escribirán correctamente en el disco. - Falla parcial:
en este caso, la falla se produjo en medio de la transferencia de datos, por lo que solo algunos sectores se escribieron con los nuevos datos y el sector que se escribió durante la falla puede haberse dañado. - Falla total:
la falla ocurrió antes de que comenzara la escritura en el disco, por lo que los valores de datos anteriores en el disco permanecen intactos.
Durante la escritura de un bloque de alguna manera si ocurre una falla, el primer trabajo del sistema es detectar la falla y luego invocar un proceso de recuperación para restaurar el estado consistente. Para ello, el sistema debe contener dos bloques físicos por cada bloque lógico.
Una operación de salida se ejecuta de la siguiente manera:
- Escriba la información en el primer bloque físico.
- Cuando la primera escritura se complete con éxito, escriba la misma operación en el segundo bloque físico.
- Cuando ambas operaciones se declaren correctamente, declare la operación como completa.
Durante la recuperación de un fallo, se examina cada uno de los bloques físicos. Si ambos son iguales y no existe ningún error detectable, entonces no es necesaria ninguna otra acción. Si un bloque contiene errores detectables, reemplazamos su contenido con el valor del otro bloque. Si ninguno de los bloques contiene el error detectable, pero el bloque difiere en contenido, reemplazamos el contenido del primer bloque con el contenido del segundo bloque. Este procedimiento de recuperación nos da la conclusión de que la escritura en contenido estable se realizó correctamente o resulta en ningún cambio.
Este procedimiento se extenderá si queremos un número arbitrariamente grande de copias de cada bloque del almacenamiento estable. Con el uso de una gran cantidad de copias, se reducen las posibilidades de falla. Generalmente, suele ser razonable simular un almacenamiento estable con solo dos copias. Los datos presentes en el almacenamiento estable están seguros a menos que una falla destruya todas las copias. Se garantiza que los datos que están presentes en el almacenamiento estable están seguros a menos que una falla destruya todas las copias.
Debido a que esperar a que se completen las escrituras en el disco lleva mucho tiempo, muchas arrays de almacenamiento agregan NVRAM como caché. Dado que la memoria no es volátil, se puede confiar en que almacenará los datos en ruta a los discos. De esta manera se considera como parte del almacenamiento estable. Escribir en el almacenamiento estable es mucho más rápido que en el disco, por lo que el rendimiento mejora considerablemente.
Publicación traducida automáticamente
Artículo escrito por itskawal2000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA