Bagikan melalui


Membuat, Memodifikasi, dan Menghapus Jurnal Perubahan

Administrator dapat membuat, menghapus, dan membuat ulang jurnal perubahan sesering mungkin. Administrator harus menghapus jurnal ketika nilai nomor urutan pembaruan (USN) saat ini mendekati nilai USN maksimum yang mungkin, seperti yang ditunjukkan oleh anggota MaxUsn dari struktur USN_JOURNAL_DATA . Administrator juga dapat menghapus dan membuat ulang jurnal perubahan untuk mengklaim kembali ruang disk. Untuk melakukan ini dan semua operasi jurnal perubahan non-terprogram lainnya, Anda harus memiliki hak istimewa administrator sistem. Artinya, Anda harus menjadi anggota grup Administrator.

Untuk membuat atau mengubah jurnal perubahan pada volume tertentu secara terprogram, gunakan kode kontrol FSCTL_CREATE_USN_JOURNAL .

Ketika Anda membuat jurnal perubahan baru atau memodifikasi yang sudah ada, sistem file NTFS menetapkan informasi untuk jurnal perubahan tersebut dari informasi dalam struktur CREATE_USN_JOURNAL_DATA , yang FSCTL_CREATE_USN_JOURNAL ambil sebagai input. CREATE_USN_JOURNAL_DATA memiliki anggota MaximumSize dan AllocationDelta.

MaximumSize adalah ukuran maksimum target untuk jurnal perubahan dalam byte. Jurnal perubahan dapat tumbuh lebih besar dari nilai ini, tetapi di titik pemeriksaan sistem file NTFS, sistem file NTFS memeriksa jurnal dan memangkasnya ketika ukurannya melebihi nilai MaximumSize ditambah nilai AllocationDelta. (Pada titik pemeriksaan sistem file NTFS, sistem operasi menulis rekaman ke file log sistem file NTFS yang memungkinkan sistem file NTFS menentukan pemrosesan apa yang diperlukan untuk pulih dari kegagalan.)

AllocationDelta adalah jumlah byte yang ditambahkan ke akhir dan dihapus dari awal jurnal perubahan setiap kali memori dialokasikan atau dibatalkan alokasinya. Dengan kata lain, alokasi dan pembatalan alokasi berlangsung dalam satuan ukuran ini. Kelipatan bilangan bulat dari ukuran kluster adalah nilai yang wajar untuk anggota ini.

Jika administrator memodifikasi jurnal perubahan yang ada untuk memiliki nilai MaximumSize yang lebih besar, misalnya jika volume diindeks ulang terlalu sering, jurnal perubahan hanya menerima entri baru sampai melebihi ukuran maksimum baru.

Untuk menghapus jurnal perubahan, gunakan kode kontrol FSCTL_DELETE_USN_JOURNAL . Ketika Anda menggunakan operasi ini, ia berjalan melalui semua file pada volume dan mengatur ulang USN untuk setiap file ke nol. Operasi kemudian menghapus jurnal perubahan yang ada. Operasi ini berlanjut di seluruh sistem dimulai ulang hingga selesai. Setiap upaya untuk membaca, membuat, atau memodifikasi jurnal perubahan selama proses ini gagal dengan kode kesalahan ERROR_JOURNAL_DELETE_IN_PROGRESS.

Anda juga dapat menggunakan kode kontrol FSCTL_DELETE_USN_JOURNAL untuk menentukan apakah penghapusan yang dimulai oleh beberapa proses lain sedang berlangsung. Misalnya, aplikasi Anda, saat dimulai, dapat menentukan apakah penghapusan sedang berlangsung. Karena penghapusan jurnal berlanjut di seluruh mulai ulang sistem, layanan dan aplikasi yang dimulai saat mulai ulang sistem harus memeriksa penghapusan yang sedang berlangsung.

Jurnal perubahan belum tentu dibuat saat startup. Untuk membuat jurnal perubahan, administrator dapat melakukannya secara eksplisit atau memulai layanan lain yang memerlukan jurnal perubahan.