Làm thế nào để CHKDSK / F trên khối lượng bị khóa nhận được lịch trình của lịch sử khi khởi động lại?


14

Tôi đã chạy chkdsk /Fnhiều lần trong nhiều năm ... và hôm nay tôi phải chạy nó trên một trong những máy chủ 2008 R2 của tôi và tôi nhận được thông báo bình thường:

Chkdsk không thể chạy vì âm lượng được sử dụng bởi một quy trình khác. Bạn có muốn lên lịch cho khối lượng này để được kiểm tra vào lần tiếp theo hệ thống khởi động lại không? (Y / N) y

Âm lượng này sẽ được kiểm tra vào lần tiếp theo hệ thống khởi động lại.

Tôi đã xem tài liệu Technet ở đây: http://technet.microsoft.com/en-us/l Library / cc730714.aspx cũng như tìm kiếm và tìm kiếm google bình thường trên Technet và trang web: microsoft.com trên google, nhưng có thể Tôi không tìm thấy những gì tôi đang tìm kiếm ...

Câu hỏi:

Làm thế nào / Windows lên lịch này khi khởi động lại? Nó không có trong Trình lập lịch tác vụ hoặc RunOnce hoặc tương tự, điều này hợp lý nếu nó cần chạy trước khi Windows khóa âm lượng ... vì vậy, chính xác thì Windows đã đặt "tác vụ theo lịch trình" này để máy chủ biết về nó ngay cả tuần sau trong một lần khởi động lại cửa sổ bảo trì?

Câu trả lời:


19

Câu hỏi tuyệt vời. Câu trả lời là VolumeDirtybit được đặt trên ổ đĩa, mà (tôi phải giả sử) được kiểm tra trong quá trình khởi động. Có lẽ tương tự như cách nó được kiểm tra khi ổ đĩa flash được chèn và người ta nhận được cửa sổ bật lên có nội dung Quét hoặc Tiếp tục mà không quét .

Tôi đã từng cố gắng đưa ra một cách để lên lịch chkdsk cho một máy chủ tự động có bảo trì gần như bằng không, bằng cách đặt volumedirtybit qua tập lệnh powershell ( dirtybitset = $true), nhưng nó sẽ không hoạt động. Tôi có thể xem lại rằng khi nó xuất hiện từ liên kết của tôi, có một Lịch trìnhAutoChk thực hiện điều đó và hoạt động cùng với bẩn.

Nghiên cứu sâu hơn ở đây nêu rõ:

Mỗi khi Windows khởi động lại, Autochk.exe được Kernel gọi để quét tất cả các ổ đĩa để kiểm tra xem bit bẩn có được đặt không. Nếu bit bẩn được đặt.

Thông tin thêm về autochk.execó thể được tìm thấy ở đây để giúp giải thích những gì đang diễn ra trong trang web Microsoft TechnetWikipedia , nơi Wikipedia tuyên bố:

Khi tất cả các trình điều khiển Khởi động và Hệ thống đã được tải, kernel (luồng hệ thống) sẽ khởi động Hệ thống con Trình quản lý phiên (smss.exe).

Trước khi bất kỳ tệp nào được mở, Autochk được khởi động bởi smss.exe. Autochk gắn kết tất cả các ổ đĩa và kiểm tra từng ổ đĩa một lần để xem liệu chúng có được xóa sạch hay không. Nếu autochk xác định một hoặc nhiều ổ đĩa bị bẩn, nó sẽ tự động chạy chkdsk

Cụ thể nó xuất hiện nếu bạn xem trong sổ đăng ký bên dưới:

HKLM \ System \ CurrentControlset \ Control \ Trình quản lý phiên

Có một giá trị BootExecuteđược thay đổi từ autocheck autochk *một cái gì đó nhưautocheck autochk /p \\??\C: autocheck autochk *


1
aha ... OK tuyệt Tôi đã tìm thấy chi tiết bổ sung Tôi sẽ thêm vào câu trả lời của bạn ... cảm ơn ngài!
TheCleaner

1
Để tham khảo: có vẻ như bạn có thể sử dụng chkntfs /c %SystemDrive%để lên lịch cho khối lượng khởi động để kiểm tra khi khởi động lại mà không cần lén lút với sổ đăng ký. (Tất nhiên, bạn phải có quyền quản trị để thực hiện.)
cHao

@cHao - bạn không cần phải trực tiếp đăng ký với registry. `chkdsk / f% SystemDrive% cũng làm điều tương tự. Có lẽ tôi không theo dõi bình luận của bạn.
TheCleaner

@TheCleaner: chkntfs /cMặc dù vậy, bạn không nhận được "Bạn có muốn lên lịch ...?" lời nhắc. Đó có thể là một sự khác biệt quan trọng nếu bạn muốn làm bẩn ổ đĩa như một phần của một tác vụ theo lịch trình, ví dụ.
cHao

2
@ MDMoore313: /clà tùy chọn để lên lịch kiểm tra. Không có nó, chkntfssẽ chỉ cho bạn biết một kiểm tra đã được lên lịch.
cHao
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.