Skapa, ändra och ta bort en ändringsjournal
Administratörer kan skapa, ta bort och återskapa ändringsjournaler efter behov. En administratör bör ta bort en journal när det aktuella usn-värdet (update sequence number) närmar sig det högsta möjliga USN-värdet, vilket anges av MaxUsn medlem i USN_JOURNAL_DATA-strukturen. En administratör kan också ta bort och återskapa en ändringsjournal för att frigöra diskutrymme. Om du vill utföra detta och alla andra icke-programmatiska ändringsjournalåtgärder måste du ha systemadministratörsbehörighet. Du måste alltså vara medlem i gruppen Administratörer.
Om du vill skapa eller ändra en ändringsjournal på en angiven volym programmatiskt använder du FSCTL_CREATE_USN_JOURNAL-kontrollkoden.
När du skapar en ny ändringsjournal eller ändrar en befintlig, anger NTFS-filsystemet information för den ändringsjournalen från information i CREATE_USN_JOURNAL_DATA struktur, som FSCTL_CREATE_USN_JOURNAL tar som indata. ** CREATE_USN_JOURNAL_DATA har attributen MaximumSize och AllocationDelta.
MaximumSize är målstorleken för ändringsjournalen i byte. Ändringsjournalen kan bli större än det här värdet, men vid NTFS-filsystemets kontrollpunkter undersöker NTFS-filsystemet journalen och trimmar den när dess storlek överskrider värdet för MaximumSize plus värdet för AllocationDelta. (Vid kontrollpunkter för NTFS-filsystem skriver operativsystemet poster till loggfilen för NTFS-filsystemet som gör det möjligt för NTFS-filsystemet att avgöra vilken bearbetning som krävs för att återställa från ett fel.)
AllocationDelta är antalet byte som läggs till i slutet och tas bort från början av ändringsjournalen varje gång minnet allokeras eller frigörs. Med andra ord sker allokering och frigöring i enheter av den här storleken. En heltalsmultipel av en klusterstorlek är ett rimligt värde för den här medlemmen.
Om en administratör ändrar en befintlig ändringsjournal så att den har ett större MaximumSize- värde, till exempel om en volym indexeras om för ofta, tar ändringsjournalen helt enkelt emot nya poster tills den överskrider den nya maximala storleken.
Om du vill ta bort en ändringsjournal använder du FSCTL_DELETE_USN_JOURNAL-kontrollkoden. När du använder den här åtgärden går den igenom alla filer på volymen och återställer USN för varje fil till noll. Åtgärden tar sedan bort den befintliga ändringsjournalen. Den här åtgärden kvarstår mellan systemomstarter tills den är klar. Alla försök att läsa, skapa eller ändra ändringsjournalen under den här processen misslyckas med felkoden ERROR_JOURNAL_DELETE_IN_PROGRESS.
Du kan också använda FSCTL_DELETE_USN_JOURNAL-kontrollkoden för att avgöra om en borttagning som startats av någon annan process pågår. Ditt program kan till exempel när det startas avgöra om en borttagning pågår. Eftersom journalborttagningar kvarstår mellan systemomstarter bör tjänster och program som startas vid omstart av systemet söka efter en pågående borttagning.
Ändringsjournaler skapas inte nödvändigtvis vid start. Om du vill skapa en ändringsjournal kan en administratör göra det explicit eller starta en annan tjänst som kräver en ändringsjournal.