236
Избыточность, поддерживаемая программно, на уровне ОС,
обеспечивается, как правило, только для особо важной системной
информации: дескрипторов дисков и файлов, таблиц размещения,
каталогов и т.п. При записи одной и той же информации в два разных
блока на диске, даже если сбой произойдет во время записи, один из
блоков будет содержать корректный вариант информации – то ли до ее
изменения, то ли после. Избыточность может вноситься как простым
дублированием управляющих структур данных, так и внесением
избыточности в сами эти структуры. Так, в структуры данных, которые
связываются в списки, часто вводятся дополнительные указатели,
позволяющие получить доступ к одной и той же структуре данных
разными путями. Причем, при штатной работе используется только один
путь, а остальные могут быть использованы для восстановления списка
при нарушении указателей основного пути. Например, если сделать список
свободных блоков на диске двунаправленным, то по обратным прошивкам
можно восстановить этот список при потере указателя на его начало в
дескрипторе диска. Другой пример: алгоритмы функционирования
логической и базовой ФС не нуждаются в том, чтобы имя файла,
имеющееся в элементе каталога, дублировалось в дескрипторе файла.
Однако такое дублирование чрезвычайно облегчит задачу восстановления
доступа к файлам при разрушении системы каталогов.
Начнем с того, что весьма часто нарушение целостности происходит
по вине пользователя – ошибочное удаление файлов или внесение в них
неправильных изменений. Профилактикой этих ошибок является создание
обратных копий (backup) файлов, к которым можно вернуться, если
испорчена или уничтожена текущая копия. Концепция обратных копий
может быть расширена до сохранения нескольких поколений версий файлов:
при изменении файла создается его новая версия, а старая версия
сохраняется. Создание новых версий может производиться разными
способами: