Обрабатывать полный размер журнала USN

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

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

Так что же на самом деле происходит, когда журнал полон? Все записи удаляются? или все только это удалит самую старую запись и сделает запись для новой? Как я могу обработать полный размер дела журнала?

1 ответ

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

Единицей работы для обнуления является AllocationDelta. Каждый раз, когда происходит обнуление, NTFS устанавливает новое значение LowestValidUsn.

Поэтому, когда вы делаете резервную копию, вам нужно записать NextUsn..., который является указателем того, куда будет записан следующий номер USN. Затем, когда вы делаете последующее резервное копирование, и ваш сохраненный NextUsn больше, чем LowestValidUsn, тогда все изменения, произошедшие с момента последнего резервного копирования, все еще там, и вы можете полагаться на USN для оптимизации процесса резервного копирования.

Если USN фактически переполняет MaxUsn, я не уверен, что на самом деле происходит. Кажется невероятно маловероятным - и стоит знать, что может вызвать это. Похоже, я прочитал противоречивые сведения о том, что на самом деле происходит - либо прекращение ведения журнала - либо NTFS просто сбрасывает журнал холодным.

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

Другие вопросы по тегам