Bagaimana CHKDSK / F pada volume yang terkunci mendapatkan "dijadwalkan" saat reboot?

14

Saya telah menjalankan chkdsk /Fberkali-kali selama bertahun-tahun ... dan hari ini saya harus menjalankannya di salah satu server 2008 R2 saya dan saya mendapatkan pesan normal:

Chkdsk tidak dapat berjalan karena volume sedang digunakan oleh proses lain. Apakah Anda ingin menjadwalkan volume ini untuk diperiksa pada saat sistem restart? (Y / T) y

Volume ini akan diperiksa pada saat sistem dimulai ulang.

Saya telah melihat dokumen Technet di sini: http://technet.microsoft.com/en-us/library/cc730714.aspx serta pencarian dan pencarian google normal di Technet dan situs: microsoft.com di google, tetapi dapat dapat menemukan apa yang saya cari ...

Pertanyaan:

BAGAIMANA / di mana Windows menjadwalkan ini saat restart? Itu tidak ada di Penjadwal Tugas atau RunOnce atau serupa, yang masuk akal jika perlu dijalankan sebelum Windows mengunci volume ... jadi di mana tepatnya Windows mengatur "tugas terjadwal" ini terjadi sehingga server tahu tentang hal itu bahkan Seminggu kemudian selama pemeliharaan jendela reboot?

Pembersih
sumber

Jawaban:

19

Pertanyaan bagus jawabannya adalah VolumeDirtybit diatur pada volume, yang (saya harus berasumsi) diperiksa selama bootup. Mungkin mirip dengan cara itu diperiksa ketika flash drive dimasukkan dan orang mendapat popup yang mengatakan Pindai atau Lanjutkan Tanpa Memindai .

Saya pernah mencoba menemukan cara untuk menjadwalkan chkdsk untuk server otomatis yang hampir tidak memiliki pemeliharaan, dengan mengatur volumedirtybit melalui skrip PowerShell ( dirtybitset = $true), tetapi tidak berhasil. Saya dapat meninjau kembali bahwa seperti yang terlihat dari tautan saya ada ScheduleAutoChk yang melakukan hal itu dan bekerja bersama dengan dirtybit.

Penelitian lebih lanjut di sini menyatakan:

Setiap kali Windows dinyalakan kembali, Autochk.exe dipanggil oleh Kernel untuk memindai semua volume untuk memeriksa apakah volume bit kotor diatur. Jika bit kotor diatur.

Info lebih lanjut tentang autochk.exedapat ditemukan di sini untuk membantu menjelaskan apa yang terjadi di situs Microsoft Technet dan Wikipedia , di mana Wikipedia menyatakan:

Setelah semua driver Boot dan Sistem dimuat, kernel (utas sistem) memulai Subsistem Sesi Manajer (smss.exe).

Sebelum file dibuka, Autochk dimulai dengan smss.exe. Autochk memasang semua drive dan memeriksanya satu per satu untuk melihat apakah tidak terpasang dengan benar atau tidak. Jika autochk menentukan satu atau lebih volume kotor, maka otomatis akan menjalankan chkdsk

Khususnya itu muncul jika Anda melihat di registri di bawah:

HKLM \ System \ CurrentControlSet \ Control \ Session Manager

Ada nilai BootExecuteyang diubah dari autocheck autochk *sesuatu sepertiautocheck autochk /p \\??\C: autocheck autochk *

MDMoore313
sumber
1
aha ... OK keren saya menemukan detail tambahan saya akan menambahkan jawaban Anda ... terima kasih pak!
TheCleaner
1
Untuk referensi: tampaknya Anda dapat menggunakan chkntfs /c %SystemDrive%untuk menjadwalkan volume boot untuk memeriksa saat reboot tanpa mucking dengan registri secara langsung. (Tentu saja, Anda harus memiliki hak admin untuk melakukannya.)
cHao
@ cHao - Anda tidak perlu mengotori registri secara langsung. `chkdsk / f% SystemDrive% melakukan hal yang sama. Mungkin saya tidak mengikuti komentar Anda.
TheCleaner
@TheCleaner: Dengan chkntfs /c, Anda tidak mendapatkan "Apakah Anda ingin menjadwalkan ...?" cepat. Itu bisa menjadi perbedaan penting jika Anda ingin mengotori drive sebagai bagian dari tugas yang dijadwalkan, misalnya.
cao
2
@ MDMoore313: /cadalah opsi untuk menjadwalkan cek. Tanpa itu, chkntfshanya akan memberi tahu Anda apakah cek sudah dijadwalkan.
cao