Протоколирование транзакций.

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

Незавершенная операция с диском несет угрозу целостности файловой системы. Каким образом файловая система может реализовать свойство транзакций. Решение в этом случае может быть одно — не­обходимо протоколировать (запоминать) все изменения, происходящие в рам­ках транзакции, чтобы на основе этой информации в случае прерывания тран­закции можно было отменить все уже выполненные подоперации, т. е сделать так наз. откат транзакции.

В файловых системах с кэшированием диска для восстановления системы после сбоя кроме отката незавершенных транзакций необходимо выполнить дополни­тельное действие — повторение зафиксированных транзакций. Когда происхо­дит сбой по питанию или крах ОС, все данные, находящиеся в оперативной памяти, теряются, в том числе и модифицированные блоки данных, которые ме­неджер дискового кэша не успел вытолкнуть на диск. Единственный способ вос­становить утерянные изменения данных — это повторить все завершенные тран­закции, которые участвовали в модификации этих блоков. Чтобы обеспечить возможность повторения транзакций, система должна включать в протокол не только данные, которые могут быть использованы для отката транзакции, но и данные, которые позволят в случае необходимости повторить всю транзакцию.

Для восстановления файловой системы используется упреждающее протоколирование транзакций. Оно заключается в том, что перед изменением какого-либо блока данных на диске или в дисковом кэше производится запись в специаль­ный системный файл — журнал транзакций (log file), где отмечается, какая тран­закция делает изменения, какой файл и блок изменяются и каковы старое и новое значения изменяемого блока. Только после успешной регистрации всех подопера­ций в журнале делаются изменения в исходных блоках. Если транзакция прерывается, то информация журнала регистрации используется для приведения фай­лов, каталогов и служебных данных файловой системы в исходное состояние, т. е производится откат. Если транзакция фиксируется, то и об этом делается запись в журнал регистрации, но новые значения измененных данных сохраня­ются в журнале еще некоторое время, чтобы сделать возможным повторение тран­закции, если это потребуется.

Журнал транзакций.

Используется несколько типов записей. Это записи модификации и записи контрольной точки.

Записи модификации.

Большинство записей в журнале – это запись модификации. Каждая запись модификации содержит два вида информации:

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

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

Рассмотрим записи модификации в журнале транзакций для операции создания файла.

В журнал транзакций записано три модификации. Рассмотрим первую запись T1a, T1b, T1с.

T1a.

Повтор. Выделить и инициализировать файловую запись в MFT.

Отмена. Освободить файловую запись в MFT.

T1b.

Повтор. Добавить имя файла в каталог.

Отмена. Удалить имя файла из каталога.

T1c.

Повтор. Установить биты 3-9 в битовой карте. Пометить кластеры как занятые.

Отмена. Очистить биты 3-9 в битовой карте. Пометить кластеры как свободные.

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

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

NTFS организована как реляционная база данных. Отмена транзакций проводится в обратном направлении. Если повторение идёт в прямом, то откат идёт в обратном направлении.

Информация для повтора и отмены может быть выражена либо физически, либо логически. Физическое описание задаёт модификацию тома как диапазон байт. Логическое описание представляет модификацию в терминах операций. Например, удалить файл a.dat. NTFS генерирует записи модификации для каждой из следующих транзакций: создание файла (каталога), удаление файла (каталога), расширение файла (каталога), урезание файла (каталога), остановка файловой информации, перенос, изменение прав доступа.

Записи контрольной точки.

Запись контрольной точки помогает NTFS определить, какая обработка необходима для тома после сбоя. Благодаря записи контрольной точки NTFS знает, как далеко ей надо пройти, чтобы начать восстановление.

После восстановления после сбоя NTFS считает журнал пустым.

41. Записи модификации, записи контрольной точки, таблица транзакций, таблица измененных страниц в журнале транзакций.

Записи модификации.

Большинство записей в журнале – это запись модификации. Каждая запись модификации содержит два вида информации:

3. Информация для повтора, которая содержит сведения о том, как вновь применить к тому подоперацию полностью запротоколированной подтверждённой транзакции. Если сбой системы произошёл до того, как транзакция была переписана из кэша на диск. Если какая-либо операция выполнена, то её надо повторить.

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

Рассмотрим записи модификации в журнале транзакций для операции создания файла.

В журнал транзакций записано три модификации. Рассмотрим первую запись T1a.

T1a.

Повтор. Выделить и инициализировать файловую запись в MFT. Отмена. Освободить файловую запись в MFT.

T1b.

Повтор. Добавить имя файла в каталог. Отмена. Удалить имя файла из каталога.

T1c.

Повтор. Установить биты 3-9 в битовой карте. Пометить кластеры как занятые. Отмена. Очистить биты 3-9 в битовой карте. Пометить кластеры как свободные.

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

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

NTFS организована как реляционная база данных. Отмена транзакций проводится в обратном направлении. Если повторение идёт в прямом, то откат идёт в обратном направлении.

Информация для повтора и отмены может быть выражена либо физически, либо логически. Физическое описание задаёт модификацию тома как диапазон байт. Логическое описание представляет модификацию в терминах операций. Например, удалить файл a.dat. NTFS генерирует записи модификации для каждой из следующих транзакций: создание файла (каталога), удаление файла (каталога), расширение файла (каталога), урезание файла (каталога), остановка файловой информации, перенос, изменение прав доступа.

Записи контрольной точки.

Запись контрольной точки помогает NTFS определить, какая обработка необходима для тома после сбоя. Благодаря записи контрольной точки NTFS знает, как далеко ей надо пройти, чтобы начать восстановление.

Таблица транзакций.

Таблица транзакций(transaction table)— предназначена для отслеживания начатых, но еще не зафиксированных транзакций. B процессе восстановления результаты подопераций этих транзакций должны быть удалены с диска. Таблица транзакций содержит LSN незафиксированных (незавершенных) транзакций.

Таблица измененных страниц в журнале транзакций.

Таблица измененных страниц(dirty page table)— в нее записывается информация о том, какие страницы кэша содержат изменения структуры файловой системы, еще не записанные на диск. Эти данные в процессе восстановления должны быть сброшены на диск. Таблица измененных страниц — LSN записей, соответствующих модификациям кэша, не отраженным на диске. LSN самой старой записи, найденной NTFS в двух таблиц, определяет, откуда начнется проход повтора. Однако, если последняя запись контрольной точки окажется более ранней, NTFS начнет проход повтора именно с нее.

42. Восстановление данных в NTFS. Проход анализа. Проход повтора. Проход отмены.

Наши рекомендации