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


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

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

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

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

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

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

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

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

Событие Действие файловой системы 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 с одним флагом причины.