The design of the UNIX Operating System 86 страница



 

Порядок выполнения операций

 

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

 

Рассмотрим пример создания жесткой связи для файла [Робачевский, 1999]. Для этого файловой системе необходимо выполнить следующие операции:

 

• создать новую запись в каталоге, указывающую на индексный узел файла;

 

• увеличить счетчик связей в индексном узле.

 

Если аварийный останов произошел между 1-й и 2-й операциями , то в каталогах файловой системы бу-дут существовать два имени файла , адресующих индексный узел со значением счетчика связей , равному 1. Если теперь будет удалено одно из имен, это приведет к удалению файла как такового. Если же поря-док операций изменен и, как прежде, останов произошел между первой и второй операциями, файл будет иметь несуществующую жесткую связь, но существующая запись в каталоге будет правильной. Хотя это тоже является ошибкой, но ее последствия менее серьезны, чем в предыдущем случае.

 

Журнализация

 

Другим средством поддержки целостности является заимствованный из систем управления базами дан-ных прием, называемый журнализация (иногда употребляется термин "журналирование"). Последова-тельность действий с объектами во время файловой операции протоколируется, и если произошел оста-нов системы, то, имея в наличии протокол, можно осуществить откат системы назад в исходное целост-


Основы операционных систем 123

ное состояние, в котором она пребывала до начала операции. Подобная избыточность может стоить до-рого, но она оправданна, так как в случае отказа позволяет реконструировать потерянные данные.

 

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

 

Журнализация реализована в NTFS, Ext3FS, ReiserFS и других системах. Чтобы подчеркнуть сложность задачи, нужно отметить, что существуют не вполне очевидные проблемы, связанные с процедурой отка-та. Например, отмена одних изменений может затрагивать данные, уже использованные другими файло-выми операциями. Это означает, что такие операции также должны быть отменены. Данная проблема по-лучила название каскадного отката транзакций [Брукшир, 2001]

 

Проверка целостности файловой системы при помощи утилит

 

Если же нарушение все же произошло, то для устранения проблемы несовместимости можно прибегнуть к утилитам (fsck, chkdsk, scandisk и др .), которые проверяют целостность файловой системы. Они могут запускаться после загрузки или после сбоя и осуществляют многократное сканирование разнообразных структур данных файловой системы в поисках противоречий.


Дата добавления: 2021-01-21; просмотров: 139; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!