CHKDSK / F บนไดรฟ์ข้อมูลที่ล็อคได้รับ "กำหนด" เมื่อรีบูตอย่างไร


14

ฉันใช้chkdsk /Fหลาย ๆ ครั้งในช่วงหลายปีที่ผ่านมา ... และวันนี้ฉันต้องรันมันบนเซิร์ฟเวอร์ 2008 R2 ของฉันและฉันได้รับข้อความปกติ:

Chkdsk ไม่สามารถทำงานได้เนื่องจากไดรฟ์ข้อมูลนั้นกำลังใช้งานโดยกระบวนการอื่น คุณต้องการกำหนดเวลาให้ไดรฟ์ข้อมูลนี้เพื่อตรวจสอบในครั้งต่อไปที่ระบบเริ่มต้นใหม่หรือไม่ (Y / N) y

ไดรฟ์ข้อมูลนี้จะถูกตรวจสอบในครั้งต่อไปที่ระบบเริ่มต้นใหม่

ฉันได้ดูเอกสาร Technet ที่นี่: http://technet.microsoft.com/en-us/library/cc730714.aspxเช่นเดียวกับการค้นหา google ปกติและค้นหาบน Technet และไซต์: microsoft.com บน google แต่สามารถ ค้นหาสิ่งที่ฉันกำลังมองหา ...

คำถาม:

Windows กำหนดเวลานี้ไว้ที่ใดเมื่อเริ่มต้นใหม่ มันไม่ได้อยู่ใน Task Scheduler หรือ RunOnce หรือที่คล้ายกันซึ่งทำให้รู้สึกว่าจำเป็นต้องเรียกใช้ก่อนที่ Windows จะล็อคโวลุ่ม ... ดังนั้น Windows จะตั้งค่า "task task" ให้ตรงกับที่ว่า สัปดาห์ต่อมาในระหว่างการบำรุงรักษาหน้าต่างรีบูต?

คำตอบ:


19

คำถามที่ดี คำตอบคือVolumeDirtyบิตถูกตั้งค่าบนไดรฟ์ข้อมูลซึ่ง (ฉันต้องสมมติ) จะถูกตรวจสอบในระหว่างการบูทเครื่อง อาจจะคล้ายกับวิธีที่จะตรวจสอบเมื่อแฟลชไดรฟ์ถูกแทรกและหนึ่งได้รับป๊อปอัพที่ระบุว่าการสแกนหรือดำเนินการต่อโดยไม่ต้องสแกน

ฉันเคยพยายามหาวิธีจัดตารางเวลาให้กับ chkdsk สำหรับเซิร์ฟเวอร์อัตโนมัติที่มีการบำรุงรักษาใกล้ศูนย์โดยการตั้งค่าvolumedirtyบิตผ่านสคริปต์ PowerShell ( dirtybitset = $true) แต่มันไม่ทำงาน ฉันอาจกลับมาดูอีกครั้งว่ามันปรากฏจากลิงค์ของฉันมี ScheduleAutoChk ที่ทำเช่นนั้นและทำงานร่วมกับ dirtybit

การวิจัยเพิ่มเติมที่นี่รัฐ:

ทุกครั้งที่ Windows เริ่มต้นใหม่ Autochk.exe จะถูกเรียกใช้โดยเคอร์เนลเพื่อสแกนโวลุ่มทั้งหมดเพื่อตรวจสอบว่ามีการตั้งค่าบิตสกปรกของไดรฟ์หรือไม่ หากตั้งค่าบิตสกปรก

ข้อมูลเพิ่มเติมเกี่ยวกับautochk.exeสามารถพบได้ที่นี่เพื่อช่วยอธิบายสิ่งที่เกิดขึ้นในเว็บไซต์ Microsoft TechnetและWikipediaซึ่ง Wikipedia ระบุว่า:

เมื่อโหลดไดรเวอร์และระบบแล้วทั้งหมดเคอร์เนล (เธรดระบบ) จะเริ่มระบบย่อยตัวจัดการเซสชัน (smss.exe)

ก่อนที่จะเปิดไฟล์ใด ๆ Autochk จะเริ่มโดย smss.exe Autochk ติดตั้งไดรฟ์ทั้งหมดและตรวจสอบทีละตัวเพื่อดูว่าพวกเขาถูกถอดออกหรือไม่ หาก autochk กำหนดหนึ่งหรือมากกว่าหนึ่งเล่มสกปรกมันจะทำงานโดยอัตโนมัติ chkdsk

มันจะปรากฏขึ้นโดยเฉพาะถ้าคุณดูในรีจิสทรีภายใต้:

ผู้จัดการ HKLM \ System \ CurrentControlSet \ Control \ Session

มีค่าBootExecuteที่เปลี่ยนจากautocheck autochk *เป็นสิ่งที่ชอบautocheck autochk /p \\??\C: autocheck autochk *


1
aha ... โอเคเยี่ยมฉันพบรายละเอียดเพิ่มเติมฉันจะเพิ่มคำตอบของคุณ ... ขอบคุณครับ!
TheCleaner

1
สำหรับการอ้างอิง: ดูเหมือนว่าคุณสามารถใช้chkntfs /c %SystemDrive%กำหนดเวลาปริมาณการบู๊ตสำหรับการตรวจสอบการรีบูตโดยไม่ต้องเข้าไปยุ่งกับรีจิสตรีโดยตรง (แน่นอนว่าคุณต้องมีสิทธิ์ของผู้ดูแลระบบในการทำเช่นนั้น)
cHao

@cHao - คุณไม่ต้องโคลนกับรีจิสทรีโดยตรงโดยไม่คำนึงถึง `chkdsk / f% SystemDrive% ทำสิ่งเดียวกัน บางทีฉันอาจไม่ได้ติดตามความคิดเห็นของคุณ
TheCleaner

@TheCleaner: chkntfs /cแม้ว่าคุณจะไม่ได้รับ "คุณต้องการกำหนดเวลา ... หรือไม่" รวดเร็ว ซึ่งอาจเป็นความแตกต่างที่สำคัญหากคุณต้องการทำให้ไดรฟ์สกปรกเนื่องจากเป็นส่วนหนึ่งของงานที่กำหนดเวลาไว้
cHao

2
@ MDMoore313: /cเป็นตัวเลือกในการกำหนดเวลาตรวจสอบ ถ้าไม่มีมันก็chkntfsจะบอกคุณว่าเช็คได้รับการกำหนด
cHao
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.