建立、修改和刪除變更日誌

系統管理員可以建立、刪除及重新建立變更日誌。 當目前的更新序號 (USN) 值接近最大可能 USN 值時,系統管理員應該刪除日誌,如USN_JOURNAL_DATA結構的MaxUsn成員所指出。 系統管理員也可以刪除並重新建立變更日誌以回收磁碟空間。 若要執行這項作業和其他所有非程式設計變更日誌作業,您必須擁有系統管理員許可權。 也就是說,您必須是 Administrators 群組的成員。

若要以程式設計方式在指定的磁片區上建立或修改變更日誌,請使用 FSCTL_CREATE_USN_JOURNAL 控制項程式碼。

當您建立新的變更日誌或修改現有的日誌時,NTFS 檔案系統會從 CREATE_USN_JOURNAL_DATA 結構中的資訊設定該變更日誌的資訊, FSCTL_CREATE_USN_JOURNAL 做為輸入。 CREATE_USN_JOURNAL_DATA 成員 MaximumSizeAllocationDelta

MaximumSize 是變更日誌以位元組為單位的目標大小上限。 變更日誌可以成長超過此值,但在 NTFS 檔案系統檢查點時,NTFS 檔案系統會檢查日誌,並在其大小超過 MaximumSize 的值加上 AllocationDelta的值時加以修剪。 (在 NTFS 檔案系統檢查點上,作業系統會將記錄寫入 NTFS 檔案系統記錄檔,以允許 NTFS 檔案系統判斷從 failure 復原所需的處理。)

AllocationDelta 是新增至結尾的位元組數目,並在每次配置或解除配置記憶體時,從變更日誌的開頭移除。 換句話說,配置和解除配置會以這個大小的單位進行。 叢集大小的整數倍數是這個成員的合理值。

如果系統管理員修改現有的變更日誌以擁有較大的 MaximumSize 值,例如,如果磁片區太常重新編制索引,變更日誌只會收到新的專案,直到超過新的大小上限為止。

若要刪除變更日誌,請使用 FSCTL_DELETE_USN_JOURNAL 控制項程式碼。 當您使用此作業時,它會逐步解說磁片區上的所有檔案,並將每個檔案的 USN 重設為零。 作業接著會刪除現有的變更日誌。 此作業會在系統重新開機期間持續存在,直到完成為止。 在此程式期間讀取、建立或修改變更日誌的任何嘗試都失敗,錯誤碼 ERROR_JOURNAL_DELETE_IN_PROGRESS

您也可以使用 FSCTL_DELETE_USN_JOURNAL 控制項程式碼來判斷某些其他程式所啟動的刪除是否正在進行中。 例如,您的應用程式在啟動時,可以判斷刪除是否正在進行中。 由於日誌刪除會在系統重新開機期間保存,因此在系統重新開機時啟動的服務與應用程式應該檢查是否有進行中的刪除。

變更日誌不一定會在啟動時建立。 若要建立變更日誌,系統管理員可以明確執行此動作,或啟動需要變更日誌的另一個服務。