Поделиться через


Изменения записей журнала

Когда файлы, каталоги и другие объекты файловой системы NTFS добавляются, удаляются и изменяются, файловая система NTFS вводит записи журнала изменений в потоках, по одному для каждого тома на компьютере. В каждой записи указывается тип изменения и измененный объект. Смещение от начала потока для определенной записи называется порядковый номер обновления (USN) для конкретной записи. Новые записи добавляются в конец потока.

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

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

Кроме того, несколько изменений в одном файле могут привести к добавлению флага только по одной причине в текущую запись. Если одно и то же изменение происходит несколько раз, файловая система NTFS не записывает новую запись для изменений после первого. Например, несколько операций записи без промежуточных операций закрытия и повторного открытия приводят к созданию только одной записи изменения с установленным флагом причины USN_REASON_DATA_OVERWRITE.

Чтобы проиллюстрировать работу журнала изменений, предположим, что пользователь обращается к файлу в следующем порядке:

  1. Записывает данные в файл.
  2. Задает метку времени для файла.
  3. Записывает данные в файл.
  4. Усекает файл.
  5. Записывает данные в файл.
  6. Закрывает файл.

В этом случае файловая система NTFS выполняет следующие действия в журнале изменений (где | обозначает побитовую операцию ИЛИ).

Событие Действие файловой системы NTFS
Начальная операция записи
Файловая система NTFS записывает новую запись USN с установленным флагом причины USN_REASON_DATA_OVERWRITE. Дополнительные сведения о возможных флагах причин см . в USN_RECORD структуре.
Настройка метки времени файла
Файловая система NTFS записывает новую запись USN с параметром флага USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE.
Вторая операция записи
Файловая система NTFS не записывает новую запись USN. Так как USN_REASON_DATA_OVERWRITE уже задана для существующей записи, изменения в ней не вносятся.
Усечение файла
Файловая система NTFS записывает новую запись USN с параметром флага USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION.
Третья операция записи
Файловая система NTFS не записывает новую запись USN. Так как USN_REASON_DATA_OVERWRITE уже задана для существующей записи, изменения в ней не вносятся.
Операция закрытия
Если пользователь, внося изменения, является единственным пользователем файла, файловая система NTFS записывает новую запись USN со следующим параметром флага: USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION | USN_REASON_CLOSE.

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

Следующий пользователь, который будет получать доступ к файлу и изменять его, создает новую запись USN с одним флагом причины.