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 en la 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