ฉันเคยเขียนดิสก์เฟิร์มแวร์สำหรับ WD และฉันเคยเขียนเฟิร์มแวร์ซึ่งกำหนดบล็อกเสีย
ก่อนตรวจพบบล็อกที่ไม่ดีส่วนใหญ่ในการอ่านไม่ใช่การเขียน เขียนเสร็จสุ่มสี่สุ่มห้าหมายความว่าข้อมูลจะถูกเขียนโดยไม่ตรวจสอบ ดังนั้นในการเขียนหากสื่อไม่ดีคุณจะไม่ทราบจนกว่าโฮสต์จะอ่านเซกเตอร์นั้น มีส่วนเล็ก ๆ ของเซกเตอร์ (ส่วนหัวเซกเตอร์) ซึ่งอ่านบนการเขียนเพื่อค้นหาเซกเตอร์ที่ถูกต้องดังนั้นถ้ามีข้อผิดพลาดในการอ่านส่วนหัวเซกเตอร์ไดรฟ์จะกำหนดเซกเตอร์และเขียนด้วยข้อมูลที่ได้รับ จากคำสั่งเขียน แต่บล็อกที่ไม่ดีส่วนใหญ่ถูกตรวจพบในการอ่านและเพียงเพราะการเขียนที่ประสบความสำเร็จในภาคส่วนนั้นไม่ได้หมายความว่าสื่อดีหรือไม่ได้รับการกำหนดใหม่
ตอนนี้เกี่ยวกับการมอบหมายบล็อกที่ไม่ดี (เรียกอีกอย่างว่าการจัดสรรใหม่) ใช่โดยปกติแล้วไดรฟ์จะพยายามกำหนดเซกเตอร์ใหม่หากข้อผิดพลาดไม่ดีพอ (เช่นความล้มเหลวของ ECC ไม่ดีพอ) แต่ไดรฟ์ยังคงสามารถกู้คืนข้อมูลได้หลังจากการแก้ไข ECC โดยปกติจะทำโดยอัตโนมัติ ข้อยกเว้นเพียงอย่างเดียวคือโฮสต์อาจบอกกับไดรฟ์ก่อนหน้าว่าไม่ต้องทำการจัดสรรใหม่โดยอัตโนมัติ แต่สิ่งนี้ไม่ได้เกิดขึ้นบ่อยนัก
ดังนั้นจะเกิดอะไรขึ้นถ้าไดรฟ์ทำการอ่านและไม่สามารถกู้คืนข้อมูลได้ ไม่มีอะไร ข้อผิดพลาดถูกรายงานไปยังโฮสต์ แต่ไม่มีการมอบหมายใหม่ ปัญหาคือไดรฟ์สามารถกำหนดเซกเตอร์ใหม่ได้ แต่ไม่มีความคิดเพียงเล็กน้อยว่าข้อมูลใดที่จะเขียนในเซกเตอร์ที่กำหนดใหม่ ถ้ามันเขียนเลขศูนย์จำนวนหนึ่งพูดแล้วก็อ่านเซกเตอร์อีกครั้งมันจะคืนค่าศูนย์ทั้งหมดโดยไม่มีข้อบ่งชี้ว่าข้อมูลไม่ถูกต้อง นี่เป็นสิ่งเดียวกับความเสียหายของข้อมูล ไดรฟ์ไม่สามารถนับบนโฮสต์ที่ติดตามข้อผิดพลาดด้วยเหตุผลหลายประการ (ตัวอย่างเช่นถ้าไดรฟ์ถูกย้ายไปยังโฮสต์ใหม่หรือไม่) ดังนั้นวิธีที่ดีที่สุดคือการไม่ทำอะไรเลยเมื่อข้อมูลสามารถ ' ไม่สามารถกู้คืนได้
อย่างไรก็ตามไดรฟ์สมัยใหม่จะบันทึกตำแหน่งของเซกเตอร์เสียเมื่อไม่สามารถจัดสรรใหม่ได้ จำนวนเซ็กเตอร์ที่ไม่ดีที่รอการจัดสรรใหม่สามารถพบได้ในข้อมูล SMART จะเกิดอะไรขึ้นถ้าการเขียนเสร็จสิ้นลงในหนึ่งในเซกเตอร์ที่ไม่ดีที่รอการจัดสรรใหม่การจัดสรรใหม่จะทำเพราะตอนนี้ไดรฟ์มีข้อมูลที่ถูกต้องที่จะเขียนลงไปหลังจากการจัดสรรใหม่ ดังนั้นเมื่อผู้คนพูดว่าการเขียนไปยังเซกเตอร์ที่ไม่ดีจะทำการจัดสรรใหม่นั่นเป็นเพียงครึ่งหนึ่งของเรื่องราวเท่านั้น ต้องอ่านไดรฟ์ก่อนเพื่อให้ไดรฟ์สามารถค้นพบเซกเตอร์เสียทั้งหมดที่ไม่สามารถจัดสรรใหม่ได้โดยอัตโนมัติ ดังนั้นคุณสามารถเขียนไดรฟ์ทั้งหมดและข้อมูล SMART จะบอกว่าไม่มีเซกเตอร์เสียรอการจัดสรรใหม่ แต่คุณไม่จำเป็นต้องล้างไดรฟ์ของเซกเตอร์เสียทั้งหมด ดังนั้นถ้าคุณต้องการที่จะล้างเซกเตอร์เสียทั้งหมด
มีวิธีอื่นในการจัดการกับบล็อกที่ไม่ดีซึ่งไม่สามารถจัดสรรใหม่ได้ หากไดรฟ์เป็นส่วนหนึ่งของการกำหนดค่า RAID ที่ซ้ำซ้อน (เช่นอะไรก็ได้ยกเว้น RAID 0) ซอฟต์แวร์ RAID ควรกู้คืนข้อมูลโดยอัตโนมัติสำหรับเซกเตอร์เสียจากไดรฟ์อื่นและเขียนลงในเซกเตอร์ที่ถูกจัดสรรใหม่ ดิสก์ SCSI มีคำสั่งกำหนดบล็อกใหม่อย่างชัดเจนซึ่งโฮสต์สามารถใช้เพื่อบังคับให้มอบหมายใหม่ได้แม้ว่าจะไม่มีข้อมูลที่ถูกต้องที่จะเขียนไปยังบล็อก แต่การใช้งานนั้นค่อนข้างต่ำ