Sistema de archivo
5.8 MECANISMO DE RECUPERACIÓN EN CASO DE FALTA
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.
Como hemos explicado en la Sección
11.3, 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.
Fig. 5.8.1 Errores
La perdida de la información es uno
de los factores que se le debe de dar mayor importancia, por la sencilla razón
de que al perder información se puede perder lo que no nos podemos imaginar en
cuanto a la misma y ocasionar perdidas hasta hablar de una gran cantidad de
dinero. Para solucionar este o estos problemas todo sistema operativo cuenta
con al menos una herramienta de software que nos permite recuperar información
perdida hasta cierta medida, esto obedece de acuerdo al daño causado o los
daños. Si el sistema no cuenta con la herramienta necesaria, deberá adquirirse
el software apropiado de algún fabricante especializado en el ramo, por ejemplo
Norton.
Es necesario proteger la información
alojada en el sistema de archivos, efectuando los resguardos correspondientes.
De esta manera se evitan las
consecuencias generalmente catastróficas de la pérdida de los sistemas de
archivos.
Las pérdidas se pueden deber a problemas
de hardware, software, hechos externos, etc.
Manejo de un bloque defectuoso:
Se utilizan soluciones por hardware y
por software.
La solución en hardware:
- Consiste en dedicar un sector del disco a
la lista de bloques defectuosos.
- Al inicializar el controlador por primera vez:
- Lee la “lista de bloques defectuosos”.
- Elige un bloque (o pista) de reserva para
reemplazar los defectuosos.
- Registra la asociación en la lista de bloques
defectuosos.
- En lo sucesivo, las solicitudes del bloque
defectuoso utilizarán el de repuesto.
La solución en software:
- Requiere que el usuario o el sistema de
archivos construyan un archivo con todos los bloques defectuosos.
- Se los elimina de la “lista de bloques
libres”.
- Se crea un “archivo de bloques
defectuosos”:
- Esta constituido por los bloques defectuosos.
- No debe ser leído ni escrito.
- No se debe intentar obtener copias de
respaldo de este archivo.
Respaldos (copias de seguridad o de
back-up):
Fig. 5.8.2 Es
necesario realizar respaldos para asegurar información
Es muy importante respaldar los
archivos con frecuencia.
Los discos magnéticos fallan en
ocasiones y es necesario tener cuidado para garantizar que los datos perdidos
debido a esos fallos no se pierdan para siempre. Con este fin, pueden
utilizarse programas del sistema para realizar una copia de seguridad de los
datos del disco en otro dispositivo de almacenamiento, como por ejemplo un
disquete, una cinta magnética, un disco óptico incluso otro disco duro. La
recuperación de la pérdida de un archivo individual o de un disco completo
puede ser entonces, simplemente, una cuestión de restaurar los datos a partir
de la copia de seguridad.
Los respaldos pueden consistir en
efectuar copias completas del contenido de los discos (flexibles o rígidos).
Una estrategia de respaldo consiste
en dividir los discos en áreas de datos y áreas de respaldo ,
utilizándolas de a pares:
- Se desperdicia la mitad del almacenamiento de
datos en disco para respaldo.
- Cada noche (o en el momento que se
establezca), la parte de datos de la unidad 0 se copia a la parte de
respaldo de la unidad 1 y viceversa.
Otra estrategia es el vaciado por
incrementos o respaldo incremental :
- Se obtiene una copia de respaldo
periódicamente (por ej.: una vez por mes o por semana), llamada copia
total.
- Se obtiene una copiza diaria solo de aquellos
archivos modificados desde la última copia total; en estrategias
mejoradas, se copian solo aquellos archivos modificados desde la última
vez que dichos archivos fueron copiados.
- Se debe mantener en el disco información de
control como una “lista de los tiempos de copiado” de cada
archivo, la que debe ser actualizada cada vez que se obtienen copias de
los archivos y cada vez que los archivos son modificados.
- Puede requerir una gran cantidad de cintas de
respaldo dedicadas a los respaldos diarios entre respaldos completos.
Para minimizar la cantidad de datos
que haya que copiar, podemos utilizar la información contenida en la entrada de
directorio de cada archivo. Por ejemplo, si el programa de copia de seguridad
sabe cuándo se realizó la última copia de seguridad de un archivo y la fecha de
última modificación del archivo contenida en el directorio indica que el
archivo no ha cambiado desde esa fecha, no será necesario volver a copiar el
archivo. Así un plan típico de copia de seguridad podría ser el siguiente:
• Día 1. Copiar en el soporte
de copia de seguridad todos los archivos del disco. Esto se denomina copia de
seguridad completa.
• Día 2. Copiar en otro soporte
físico todos los archivos que se hayan modificado desde el día 1. Esta es una
copia de seguridad incremental.
• Día 3. Copiar en otro soporte
físico todos los archivos que se hayan modificado desde el día 2.
• Día N. Copiar en otro soporte
físico todos los archivos que se hayan modificado desde el día N - 1. Después,
volver al día 1.
Podemos escribir las copias de
seguridad correspondientes al nuevo ciclo sobre el conjunto anterior de
soportes físicos o en un nuevo conjunto de soportes de copia de seguridad. De
esta forma, podemos restaurar un disco completo comenzando la restauración con
la copia de seguridad completa y continuando con cada una de las copias de
seguridad incrementales. Por supuesto, cuanto mayor sea el valor de N, más
cintas o discos habrá que leer para efectuar una restauración completa. Una
ventaja adicional de este ciclo de copia de seguridad es que podemos restaurar
cualquier archivo que haya sido borrado accidentalmente durante ese ciclo,
extrayendo el archivo borrado de la copia de seguridad del día anterior. La
longitud del ciclo será un compromiso entre la cantidad de soportes físicos de
copia de seguridad requeridos y el número de días pasados a partir de los
cuales podamos realizar una restauración. Para reducir el número de cintas que
haya que leer para efectuar una restauración, una opción consiste en realizar
una copia de seguridad completa y luego copiar cada día todos los archivos que
hayan cambiado desde la última copia de seguridad completa. De esta forma,
puede realizarse la restauración utilizando sólo la copia de seguridad
incremental más reciente y la copia de seguridad completa, no necesitándose
ninguna otra copia de seguridad incremental. El compromiso inherente a este
sistema es que el número de archivos modificado se incrementa a diario, por lo
que cada copia de seguridad incremental sucesiva contiene más archivos y
requiere más espacio en el soporte de copia de seguridad.
Consistencia del
sistema de archivos:
Muchos sistemas de archivos leen
bloques, los modifican y escriben en ellos después.
Si el sistema falla antes de escribir
en los bloques modificados, el sistema de archivos puede quedar en
un “estado inconsistente”.
La inconsistencia es particularmente
crítica si alguno de los bloques afectados son:
- Bloques de nodos-i.
- Bloques de directorios.
- Bloques de la lista de bloques libres.
La mayoría de los sistemas dispone de
un programa utilitario que verifica la consistencia del sistema de
archivos:
- Se pueden ejecutar al arrancar el sistema o a
pedido.
- Pueden actuar sobre todos o algunos de los
discos.
- Pueden efectuar verificaciones a nivel de
bloques y a nivel de archivos.
- La consistencia del sistema de archivos no
asegura la consistencia interna de cada archivo, respecto de su contenido.
- Generalmente pueden verificar también el
sistema de directorios y / o de bibliotecas.
Generalmente los utilitarios utilizan
dos tablas:
- Tabla de bloques en uso.
- Tabla de bloques libres.
- Cada bloque debe estar referenciado en una de
ellas.
Si un bloque no aparece en ninguna de
las tablas se trata de una falla llamada bloque faltante:
- No produce daños pero desperdicia espacio en
disco.
- Se soluciona añadiendo el bloque a la tabla de
bloques libres.
También podría detectarse la
situación de falla debida a un bloque referenciado dos veces en la tabla
de bloques libres:
- Esta falla no se produce en los sistemas de
archivos basados en mapas de bits, sí en los basados en tablas o listas.
- La solución consiste en depurar la tabla de
bloques libres.
Una falla muy grave es
que el mismo bloque de datos aparezca referenciado dos o más veces en la
tabla de bloques en uso:
- Como parte del mismo o de distintos archivos.
- Si uno de los archivos se borra, el bloque
aparecería en la tabla de bloques libres y también en la de bloques en
uso.
- Una solución es que el verificador del sistema
de archivos:
- Asigne un bloque libre.
- Copie en el bloque libre el contenido del
bloque conflictivo.
- Actualice las tablas afectando el bloque
copia a alguno de los archivos.
- Agregue el bloque conflictivo a la tabla de
bloques libres.
- Informe al usuario para que verifique el daño
detectado y la solución dada.
Otro error posible es que un
bloque esté en la tabla de bloques en uso y en la tabla de bloques libres:
- Se soluciona eliminándolo de la tabla de
bloques libres.
Las verificaciones de directorios
incluyen controles como:
- Número de directorios que apuntan a un nodo-i
con los contadores de enlaces almacenados en los propios nodos-i; en un
sistema consistente de archivos deben coincidir.
Una posible falla es que el
contador de enlaces sea mayor que el número de entradas del directorio:
- Aunque se eliminaran todos los archivos de los
directorios el contador sería distinto de cero y no se podría eliminar el
nodo-i.
- No se trata de un error serio pero produce
desperdicio de espacio en disco con archivos que no se encuentran en
ningún directorio.
- Se soluciona haciendo que el contador de
enlaces en el nodo-i tome el valor correcto; si el valor correcto es 0, el
archivo debe eliminarse.
Otro tipo de error es
potencialmente catastrófico:
- Si dos entradas de un directorio se enlazan a
un archivo, pero el nodo-i indica que solo existe un enlace, entonces, al
eliminar cualquiera de estas entradas de directorio, el contador del
nodo-i tomará el valor 0.
- Debido al valor 0 el sistema de archivos lo
señala como no utilizado y libera todos sus bloques.
- Uno de los directorios apunta hacia un nodo-i
no utilizado, cuyos bloques se podrían asignar entonces a otros archivos.
- La solución es forzar que el contador de
enlaces del nodo-i sea igual al número de entradas del directorio.
También se pueden hacer verificaciones
heurísticas , por ej.:
- Cada nodo-i tiene un modo, pero algunos modos
son válidos aunque extraños:
- Ej.: Se prohibe el acceso al propietario y
todo su grupo, pero se permite a los extraños leer, escribir y ejecutar
el archivo.
- La verificación debería detectar e informar
de estas situaciones.
Se debería informar como sospechosos
aquellos directorios con excesivas entradas, por ej., más de mil.
No hay comentarios:
Publicar un comentario