5.8
Mecanismos de recuperación en caso de falla.
Recuperación
Los
archivos y directorios se mantienen tanto en memoria principal como en disco, y
debe tener. Se cuidado para que los fallos del sistema no provoquen una pérdida
de datos o una incoherencia en los mismos.
Comprobación de coherencia.
La
parte de la información de directorios se almacena en la memoria principal (o
en caché) para acelerar el acceso. La información de directorios en11a memoria
principal está, generalmente, más actualizada que la correspondiente
información en el disco, porque la información de directorios almacenada en
caché no se escribe necesariamente en el disco nada más producirse la
actualización.
Considere,
entonces, el posible ejemplo de un fallo de la computadora. El contenido de la
caché y de los búferes, así como de las operaciones de E/S que se estuvieran
realizando en ese momento, pueden perderse, y con él se perderán los cambios
realizados en los directorios correspondientes a los archivos abiertos. Dicho
suceso puede dejar el sistema de archivos en un estado incoherente. El estado
real de algunos archivos no será el que se describe en la estructura de
directorios. Con frecuencia, suele ejecutarse un programa especial durante
el reinicio para comprobar las posibles incoherencias del disco y
corregidas.
El
comprobador de coherencia (un programa del sistema tal como fsck en UNIX o
chkdsk en MS-DOS), compara los datos de la estructura de directorios con los
bloques de datos del disco y trata de corregir todas las incoherencias que
detecte. Los algoritmos de asignación y de gestión del espacio libre dictan los
tipos de problemas que el comprobador puede tratar de detectar y dictan también
el grado de éxito que el comprobador puede tener en esta tarea. Por ejemplo, si
se utiliza un sistema de asignación enlazada y existe un enlace entre cada
bloque y el siguiente, puede reconstruirse el archivo completo a partir de los
bloques de datos y volver a crear la estructura de directorios. Por el
contrario, la pérdida de una entrada de directorio en un sistema de asignación
indexada puede ser desastrosa, porque los bloques de datos no tienen ningún
conocimiento acerca de los demás bloques de datos del archivo. Por esta razón,
UNIX almacena en caché las entradas de directorio para las lecturas, pero todas
las escrituras de datos que provoquen algún cambio en la asignación de espacio
o en algún otro tipo de metadato se realizan síncronamente, antes de escribir
los correspondientes bloques de datos. Por supuesto, también pueden aparecer
problemas si se interrumpe una escritura síncrona debido a un fallo
catastrófico.
No hay comentarios:
Publicar un comentario