Основы операционной системы UNIX

Синхронизация структуры файловой системы


При открытии файла ядро помещает копию дискового индексного дескриптора в соответствующую таблицу в памяти, которая содержит дополнительные атрибуты. В дальнейшем изменение индексного дескриптора происходит в памяти, и измененная структура файловой системы сбрасывается на диск только при выполнении специальной команды, sync. Эта команда выполняется при штатной остановке системы или явно администратором.

Если произошло нештатное прекращение работы системы, структура суперблока и массива индексных дескрипторов на диске не соответствует структуре блоков данных и может быть несогласованной.

Отсутствие синхронизации между образом файловой системы в памяти и ее данными на диске (в случае аварийной остановки системы) может привести к появлению следующих ошибок в файловой системе:

  • Один блок адресуется несколькими дескрипторами (принадлежит нескольким файлам).
  • Блок помечен как свободный, но в тоже время занят (на него ссылается дескриптор).
  • Блок помечен как занятый, но в то же время свободен (ни один дескриптор на него не ссылается).
  • Неправильное количество ссылок в дескрипторе.
  • Несовпадение между размером файла и суммарным размером адресуемых дескриптором блоков.
  • Недопустимые адресуемые блоки (например, расположенные за пределами файловой системы).
  • "Потерянные" файлы (правильные дескрипторы, на которые не ссылаються записи каталогов).
  • Недопустимые номера дескрипторов в записях каталогов.
  • Часть этих проблем может быть устранена специальной утилитой, (см. далее в разделе, посвященном управлению файловой системой). Но принципиальное решение проблемы согласованности и целостности данных в файловых системах UNIX возможно только при использовании журнализации- предварительной записи всех изменений дисковой структуры в отдельную область на диске.



    Содержание раздела