Восстанавливаемость файловой системы NTFS

Восстанавливаемость обеспечивается только для системной информации файловой системы (каталогов, атрибутов безопасности и пр.). Проблемы, связанные с восстановлением файловой системы, тесно связаны с понятием транзакции.

Транзакция (transaction) - это неделимая работа. Эта работа, состоящая из подопераций, которая либо полностью выполняется, либо нет. Транзакции, выполненной на половину быть не может.

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

Например: транзакция создания файла на диске. Состоит из подопераций повтора:

Выделить запись в таблице MFT

Добавить имя файла в индекс

Установить биты в битовой карте в 1

Информация для отката:

Удалить запись в таблице MFT

Исключить имя файла из индекса

Обнулить биты в битовой карте

Временная диаграмма событий в ФС

Журнал регистрации транзакций делится на две части: область рестарта и область протоколирования.

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

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

В журнале транзакций существует несколько типов записей:

Модификация. Для каждой подоперации, изменяющей системные данные ФС. Запись состоит из двух части: информации для повтора и для отката.

Фиксация транзакции. Формируется в том случае когда все подоперации транзакции выполнены

Контрольная точка (КТ). Выполняется каждые 5 секунд и включает следующие действия: формируется запись незавершенных транзакций и модифицированных страниц (т.е. тех страниц кэш, которые были модифицированы, но не вытолкнуты на диск. (См. раздел по кэш-памяти) и их номера включаются в запись КТ, а номер записи КТ помещается в область рестарта.

Запись в журналтранзакций

Процесс восстановления включает:

чтение области рестарта и определение номера последней по времени КТ чтение КТ определение номеров записи незавершенных транзакций и модифицированных страниц

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

анализ таблицы модифицированных страниц и определение самой ранней записи модификации

чтение журнала в прямом направлении, начиная с самой ранней модификации и повторение завершенных транзакций ( для устранения потерь вызванных использованием кэша)

анализ таблицы модифицированных страниц и определение самой поздней незавершенной транзакции.

чтение журнала в обратном направлении и выполняет откат незавершенных транзакций. (Все подоперации транзакции связаны в список)

Восстановление(предыстория)

Восстановление