Команда fsutil USN используется для опроса и управления журналом изменений NTFS Change Journal на указанном томе. Многие не подозревают о существовании такого журнала, так как это достаточно новая (появившаяся только в Windows 2000 и более поздних версиях) возможность файловой системы.

В основном журнал изменений (Change Journal) оказывается полезным для программ резервного копирования, так как позволяет ускорить процесс инкрементного резервного копирования. В операционных системах Windows, которые существовали до появления Windows 2000, при выполнении инкрементного копирования сканировался весь том, что позволяло составить список файлов, изменившихся с момента последнего резервного копирования.

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

Все эти проблемы были исправлены в момент появления журнала изменений NTFS. Использование Change Journal позволяет операционной системе поддерживать собственный индекс файлов и записывать изменения с помощью номеров последовательности обновления (Update Sequence Number — USN). Даже изменения в имени файла или в списке прав доступа записываются в журнал изменений. Приложения резервного копирования, которые по настоящему совместимы с Windows 2000 и более поздними версиями операционной системы Windows, могут использовать Change Journal.

Это означает, что при выполнении инкрементного резервного копирования сканирование всего тома не требуется. Вместо этого список копируемых файлов создается с помощью содержимого Change Journal, что экономит время и ресурсы. Кроме этого, возможность записывать в инкрементные резервные копии изменения в именах и списках прав доступа файлов делает приложения резервного копирования, способные использовать журнал изменений, более точными.

Кроме программ для резервного копирования Change Journal используется следующими службами Windows:

  • Служба репликации файлов (File Replication Services)
  • Служба индексирования (Indexing Service)
  • Служба удаленной установки (Remote Installation Service)
  • Служба удаленного хранения (Remote Storage Service)

В частности, команда fsutil USN позволяет выполнять следующие административные операции по отношению к тому с включенным Change Journal:

  • Создавать новый Change Journal
  • Вносить изменения в существующий Change Journal
  • Отображать список записей Change Journal между определенными значениями USN
  • Получать общую информацию о Change Jounal (вместимость, информацию о записях)
  • Отображать данные USN для определенного файла

Эти задачи выполняются с помощью такого синтаксиса команды fsutil USN:

fsutil USN createjournal <MaxSize> <AllocationDelta> <VolumePath>
fsutil USN deletejournal <flags> <VolumePath>
fsutil USN enumdata <FileRef> <LowUSN> <HighUSN> <VolumePath>
fsutil USN queryjournal <VolumePath>
fsutil USN readdata <FilePath>

Несложно заметить, что существует несколько вариантов этой команды. Параметры каждой версии команды рассматриваются в следующей таблице.

Параметры команды fsutil USN

Параметр

Использование

createjournal

Создает новый Change Journal на указанном томе. Если такой журнал уже существует, параметры Change Journal меняются на указанные в команде

Maxsize

Используется для указания максимального размера журнала (в байтах) для выделения дискового пространства для Change Journal

AllocationDelta

Используется для указания объема данных (в байтах), которые должны быть удалены в начале и добавлены в конец Change Journal. Другими словами, как только Change Journal достигнет максимального размера указанный этим параметром объем старых данных будет стерт для освобождения места новым данным

VolumePath

Используется для указания буквы диска или пути монтирования интересующего тома

deletejournal

Используется для отключения активного Change Journal

flags

Существуют два флага команды fsutil USN deletejournal:

  • /d — отключает активный Change Journal с возвратом управления вводом/выводом системе до завершения операции отключения.
  • /n — отключает активный Change Journal с возвратом управления вводом/выводом системе после завершения операции отключения.

enumdata

Перечисляет данные Change Journal между двумя указанными точками

FileRef

Указывает ординальную позицию файла, в которой начинается перечисление

LowUSN

Указывает нижнюю границу записей USN в Change Journal, которые возвращаются в выводе команды

HighUSN

Указывает верхнюю границу записей USN в Change Journal, которые возвращаются в выводе команды. Файлы, USN которых равны или попадают в интервал от LowUSN до HighUSN, возвращаются командой

queryjournal

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

readdata

Используется для отображения данных USN для определенного файла

Filepath

Используется для указания полного пути к файлу, который должен быть проверен с помощью команды fsutil USN readdata

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

В этом случае необходимо или чаще выполнять инкрементное резервное копирование или увеличить размер Change Journal. Предположим, что для обеспечения корректности резервного копирования необходимо увеличить размер Change Journal до 500МВ. Кроме этого, старые данные должны замещаться новыми порциями по 5МВ. Перед запуском этой команды необходимо преобразовать оба значения из мегабайт в байты. Получается 524288000 и 5242880, соответственно (1МВ = 1048576 байт). Эти значения можно использовать в следующей команде:

fsutil USN createjournal 524288000 5242880 D:

Использование журнала изменений NTFS Change Journal позволяет повысить эффективность работы с файловой системой NTFS.