คำตอบสั้น ๆ :เขียนสิ่งใหม่ในเซกเตอร์ (แม้แต่ศูนย์ - ซึ่งมีรูปแบบที่ยาว)
คำตอบยาว ๆ
ฮาร์ดไดรฟ์วันนี้พยายามซ่อนเซกเตอร์เสียจากคอมพิวเตอร์โฮสต์ คอมพิวเตอร์แม่ข่ายขอให้ไดรฟ์ส่งคืนเนื้อหาของหมายเลขเซกเตอร์เฉพาะ โดยปกติแล้วไดรฟ์จะอ่านเซกเตอร์ส่งคืนไปยังเครื่องโฮสต์และทุกอย่างเรียบร้อย
ฮาร์ดไดรฟ์รู้ว่าค่าที่อ่านนั้นถูกต้องหรือไม่เพราะไดรฟ์ใช้รหัสแก้ไขข้อผิดพลาด (ECC)เพื่อตรวจสอบว่าเนื้อหาที่อ่านนั้นถูกต้องหรือไม่ หากไดรฟ์ตรวจพบว่าเนื้อหาของเซกเตอร์นั้นไม่ถูกต้องจะลองอ่านอีกครั้ง ความหวังคือถ้าเพียงแค่อ่านอีกครั้งก็อาจได้รับเนื้อหาภาคที่ถูกต้อง มันจะทำการลองใหม่จนกว่าจะได้รับค่าที่ดีหรือถึงเวลาที่กำหนดแล้ว (หรือที่รู้จักกันอย่างเป็นทางการว่าการจำกัด เวลาเสร็จสิ้นคำสั่งหรือ CCTL )
ในระหว่างการลองใหม่ไดรฟ์จะปรากฏขึ้นตาย ในขณะที่มันจะไม่ตอบสนองต่อคำสั่ง
อะไหล่สำรอง
ไดรฟ์ที่ทันสมัยส่วนใหญ่ประกอบด้วยเซ็กเตอร์"อะไหล่"จำนวนหนึ่ง(เช่น 1,024 เซกเตอร์สำรอง) หากไดรฟ์รับรู้ถึงเซกเตอร์ที่ไม่ดีมันจะหยุดใช้งาน คำร้องขอเพื่ออ่านหรือเขียนไปยังเซกเตอร์ที่เสียหายนั้นจะถูกเปลี่ยนเส้นทางไปยังเซกเตอร์สำรอง การทำเครื่องหมายออกจากเซกเตอร์ที่ไม่ดีและการจัดสรรข้อมูลซ้ำไปยังเซกเตอร์สำรองเรียกว่าเหตุการณ์การจัดสรรใหม่ และจำนวนรวมของภาคที่ได้รับการจัดสรร (และดังนั้นวิธีการที่หลายภาคส่วนอะไหล่ของคุณได้ถูกนำมาใช้) เป็นจำนวนโรงงานภาค
ในตัวอย่างนี้จากหนึ่งในฮาร์ดไดรฟ์ของฉันพบว่า 64 ภาคไม่ดี นั่นหมายความว่ามีการเรียก 64 ภาคการใช้งานของไดรฟ์สำรอง:
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
ในฮาร์ดไดรฟ์เดียวกันนี้มีการจัดสรรเหตุการณ์อีก4 ครั้ง ซึ่งหมายความว่ามีอยู่สี่ครั้งที่ไดรฟ์ระบุว่าเซกเตอร์เสียและใช้เซกเตอร์สำรองแทน
ID Current Worst Threshold Raw
============================= ======= ===== ========= ===
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
ถ้าหากมันไม่สามารถอ่านข้อมูลได้
การกระทำเหล่านี้ของภาคการอ่านซ้ำใช้เวลาว่างส่วนหลังของคอมพิวเตอร์เป็นสิ่งที่ดี หมายความว่าระบบปฏิบัติการโฮสต์ไม่ต้องจัดการกับปัญหาของเซกเตอร์ที่ล้มเหลว ตัวไดรฟ์สามารถจัดการรายละเอียดเหล่านั้นได้
โบนัสแช็ท : ในสมัยก่อนฮาร์ดไดรฟ์ของคุณมาพร้อมกับสติกเกอร์ติดอยู่ สติกเกอร์นี้มีรายการข้อบกพร่องจากโรงงาน ; รายการจุดที่รู้จักทั้งหมดบนไดรฟ์
หากคุณทำการฟอร์แมตไดรฟ์ในระดับต่ำคุณจะต้องใช้เครื่องมือเพื่อพิมพ์ตำแหน่งที่อยู่ทรงกระบอกเซกเตอร์ทั้งหมดของจุดที่ไม่ดี
ไดรฟ์ SCSI มีคำสั่งIOCTL_DISK_REASSIGN_BLOCKS
เพื่อบอกให้จัดสรรตำแหน่งที่ไม่ดีบนไดรฟ์ใหม่หลังจากระบบปฏิบัติการตรวจพบ ในไดรฟ์ IDE สิ่งนี้เกิดขึ้นโดยอัตโนมัติโดยไม่จำเป็นต้องมีการแทรกแซงของระบบปฏิบัติการ
โดยหลักการแล้วไดรฟ์จะรับรู้ว่าเซกเตอร์กำลังล้มเหลวย้ายข้อมูลไปยังเซกเตอร์สำรองและไม่เคยใช้เซกเตอร์ดั้งเดิมอีกครั้ง แต่จะเกิดอะไรขึ้นถ้าไดรฟ์ไม่สามารถอ่านเซกเตอร์ได้สำเร็จ?
นี่คือสิ่งที่Pending Sectors
เป็น ไดรฟ์ตรวจพบว่าเซกเตอร์กำลังล้มเหลวและจำเป็นต้องมีการแมปกับอะไหล่สำรอง แต่มันไม่สามารถทำได้จนกว่าจะสามารถอ่านข้อมูลได้สำเร็จ เมื่อไดรฟ์รู้ว่าเซ็กเตอร์นั้นไม่ดีและจำเป็นต้องทำการแมปใหม่ แต่ยังไม่สามารถทำได้เนื่องจากมันกำลังรอการอ่านที่ดีจากเซกเตอร์: นั่นคือการเรียกเซกเตอร์ที่ค้างอยู่ :
ID Current Worst Threshold Raw
============================= ======= ===== ========= ====
(05) Reallocated Sector Count 192 192 140 64
(C4) Reallocated Event Count 196 196 0 4
(C5) Current Pending Sector 100 100 0 2
ฮาร์ดไดรฟ์ของฉันมี2ส่วนที่ไดรฟ์รับรู้ว่าไม่ดี แต่ยังไม่สามารถจัดสรรใหม่ได้ หากคุณต้องอ่านหนึ่งใน 'เซกเตอร์ที่รอดำเนินการ' เหล่านี้ไดรฟ์อาจลองอีกครั้ง (และลองอีกครั้งและลองใหม่) และในที่สุดก็ส่งคืนข้อผิดพลาดการอ่านไปยังระบบปฏิบัติการโฮสต์:
ยอมแพ้ในภาคที่รอดำเนินการและจะได้รับการจัดสรรใหม่
มีสองวิธีที่ไดรฟ์สามารถจัดสรรเซกเตอร์ในที่สุดและใช้เซกเตอร์สำรองอื่น:
- ในที่สุดมันก็จะได้รับการอ่านที่ดี
- คุณไม่สนใจสิ่งที่อยู่ในภาคอีกต่อไป
หากไดรฟ์อ่านเซกเตอร์ในที่สุดก็รู้ว่าสามารถปันส่วนเซกเตอร์
วิธีอื่นที่ไดรฟ์สามารถจัดสรรเซกเตอร์ใหม่คือถ้าคุณปล่อยให้มันรู้ว่าเนื้อหาของเซกเตอร์นั้นไม่เกี่ยวข้อง ที่คุณไม่สนใจสิ่งที่อยู่ในนั้นอีกต่อไป คุณจะทำอย่างไร
โดยการเขียนสิ่งใหม่ให้กับภาคส่วน
เมื่อใดก็ตามที่คุณอ่านจากหรือเขียนไปยังภาคบนฮาร์ดไดรฟ์ที่คุณต้องอ่าน / เขียนทั้งภาค 512 ไบต์1 คุณไม่สามารถเขียนส่วนใดส่วนหนึ่งได้ เมื่อระบบปฏิบัติการเขียนข้อมูลไปยังเซกเตอร์มันจะต้องระบุทั้ง 512- ไบต์ หากคุณบอกฮาร์ดไดรฟ์ว่าคุณต้องการให้เนื้อหาใหม่เหล่านี้มาแทนที่เซกเตอร์เสียนี้จากนั้นฮาร์ดไดรฟ์ก็รู้ว่าคุณไม่สนใจสิ่งที่อยู่ในเซกเตอร์เสีย แล้วก็สามารถจัดสรรภาคที่ดีที่จะเป็นหนึ่งในเครื่องและภาคจะไม่รอ
นี่คือเหตุผลที่เมื่อผู้คนถามเกี่ยวกับการมีCurrent Pending Sectors
คำแนะนำทั่วไปคือการใช้เครื่องมือ (เช่น Data LifeGuard ของ Western Digital) เพื่อเขียนศูนย์ทั้งหมดลงในไดรฟ์
ด้วยการเขียนเลขศูนย์ให้ทุกส่วนบนไดรฟ์คุณกำลังบอกไดรฟ์ว่าในที่สุดสามารถจัดสรรภาคที่ค้างอยู่ที่น่ารำคาญได้ทั้งหมด หลังจากการล้างข้อมูลทั้งหมดของคุณPending Sectors
จะกลายเป็นReallocated Sectors
:
ID Current Worst Threshold Raw
============================= ======= ===== ========= ====
(05) Reallocated Sector Count 192 192 140 66
(C4) Reallocated Event Count 196 196 0 5
(C5) Current Pending Sector 100 100 0 0
หมายเหตุ:ไม่จำเป็นต้องใช้เครื่องมือ "ระดับต่ำ" อย่าง Data LifeGuard ของ Western Digital หากคุณสั่งให้ Windows ดำเนินการในรูปแบบเต็มรูปแบบ (เช่นรูปแบบที่ไม่ใช่แบบด่วน ) ของไดรฟ์ข้อมูลมันจะเขียนเลขศูนย์ไปยังทุกส่วนในไดรฟ์ข้อมูล
ระบบการจัดเก็บข้อมูล OS รองรับการทำเครื่องหมายส่วนต่างๆว่าไม่ดี
ด้วยความรู้นี้เราจะสำรวจสถานการณ์ที่สับสนโดยทั่วไป
ก่อนการถือกำเนิดของIntegrated Drive Electronics (IDE) ระบบปฏิบัติการโฮสต์มีหน้าที่ตรวจจับเซกเตอร์ที่ไม่ดีลองอ่านใหม่ย้ายข้อมูลไปยังเซกเตอร์อื่นและทำเครื่องหมายเซกเตอร์เก่าว่าไม่ดี
หากคุณต้องchkdsk /r c:
ใช้งานระบบปฏิบัติการโฮสต์มันจะรับรู้ว่าเซ็กเมนต์ "ค้างอยู่"นั้นไม่ดีและทำเครื่องหมายว่าตัวเองแย่และไม่เคยลองใช้งานอีกเลย:
> C:\Windows\system32>chkdsk /r c:
The type of the file system is NTFS.
Volume label is OS.
12 KB in bad sectors.
ดังนั้นสมมติว่าฮาร์ดไดรฟ์เซกเตอร์ขนาด 512 ไบต์, 12 KB ของ 'ส่วนที่รอดำเนินการ' หรือในตัวอย่างนี้ 12KB ที่ทำเครื่องหมายโดยระบบปฏิบัติการเป็น 'เซ็กเตอร์ที่ไม่ดี' ซึ่งจะตรงกับทศนิยม 24 หรือเลขฐานสิบหก 0x18 เช่นข้อมูล Crystal Disk:
ID Attribute Name Current Worst Threshold Raw
============================= ======= ===== ========= ====
(C5) Current Pending Sector 100 100 0 18
หมายเหตุ : ยูทิลิตี้ Data LifeGuard v1.31 (ล่าสุด ณ วันที่ 8/31/2560) ยูทิลิตี้ไม่ปรากฏขึ้นเพื่อแสดงค่าตัวนับ 'ดิบ' สมาร์ทปัจจุบันอย่างถูกต้อง
ตอนนี้ถ้าคุณทำรูปแบบเต็ม (ซึ่งจะเขียนเลขศูนย์ไปยังทุกภาคส่วนในปริมาณ) :
นั่นหมายถึงทุกภาคส่วนที่Pending
จะได้รับการจัดสรรใหม่ ตอนนี้มันปลอดภัยสำหรับระบบการจัดเก็บที่จะใช้เซกเตอร์เหล่านั้นอีกครั้ง ในการสั่งให้ระบบการจัดเก็บข้อมูลนั้นเซกเตอร์เหล่านั้นไม่"เลวร้าย"อีกต่อไปคุณทำการเลือกที่จะประเมินเซกเตอร์เสีย:
>chkdsk c: /B
ที่เอกสารคำสั่งพูดว่า
/B NTFS only: Re-evaluates bad clusters on the volume
(implies /R)
หรือ
ตามที่:
https://technet.microsoft.com/en-us/library/cc730714(v=ws.11).aspx
/B NTFS only: Clears the list of bad clusters on the volume and
rescans all allocated and free clusters for errors. /b includes
the functionality of /r. Use this parameter after imaging a
volume to a new hard disk drive.
นี่คือการเขียนทั้งหมดและภาพหน้าจอทั้งหมดสำหรับบางสิ่งที่ไม่เคยอ่าน