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.
- 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