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.
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):
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 copia 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