โฮมเพจ » ทำอย่างไร » ข้อมูลในฮาร์ดไดรฟ์ลดลงโดยไม่มีคำเตือนเกี่ยวกับความเสียหายหรือไม่

    ข้อมูลในฮาร์ดไดรฟ์ลดลงโดยไม่มีคำเตือนเกี่ยวกับความเสียหายหรือไม่

    เราทุกคนกังวลเกี่ยวกับการรักษาข้อมูลและไฟล์ของเราให้ปลอดภัยและไม่เป็นอันตราย แต่เป็นไปได้หรือไม่ที่ข้อมูลจะเสียหายและเข้าถึงได้โดยผู้ใช้โดยไม่มีการแจ้งเตือนหรือเตือนใด ๆ เกี่ยวกับปัญหา? โพสต์ SuperUser คำถาม & คำตอบนี้มีคำตอบสำหรับคำถามของผู้อ่านที่เป็นกังวล.

    เซสชั่นคำถามและคำตอบในวันนี้มาถึงเราด้วยความอนุเคราะห์จาก SuperUser - แผนกย่อยของ Exchange Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถาม - ตอบ.

    ภาพถ่ายที่ได้รับความเห็นชอบจาก generalising (Flickr).

    คำถาม

    SuperUser อ่าน topo morto ต้องการทราบว่าข้อมูลในฮาร์ดไดรฟ์สามารถลดระดับและสามารถเข้าถึงได้โดยไม่ต้องมีคำเตือนเกี่ยวกับความเสียหาย:

    เป็นไปได้หรือไม่ที่การเสื่อมสภาพทางกายภาพของฮาร์ดไดรฟ์อาจทำให้บิต "พลิก" ในเนื้อหาของไฟล์โดยไม่มีระบบปฏิบัติการสังเกตเห็นการเปลี่ยนแปลงและแจ้งให้ผู้ใช้ทราบเมื่ออ่านไฟล์? ตัวอย่างเช่นสามารถ“ p” (ไบนารี 01110000) ในไฟล์ข้อความ ASCII เปลี่ยนเป็น“ q” (ไบนารี 01110001) จากนั้นเมื่อผู้ใช้เปิดไฟล์พวกเขาเห็น“ q” โดยไม่ทราบว่ามีความล้มเหลวเกิดขึ้น?

    ฉันสนใจคำตอบเกี่ยวกับ FAT, NTFS หรือ ReFS (ถ้ามันสร้างความแตกต่าง) ฉันต้องการทราบว่าระบบปฏิบัติการปกป้องผู้ใช้จากสิ่งนี้หรือไม่หรือถ้าเราควรตรวจสอบข้อมูลของเราเพื่อหาความแปรปรวนระหว่างการทำสำเนาในช่วงเวลาหนึ่ง.

    ข้อมูลในฮาร์ดไดรฟ์สามารถลดขนาดและเข้าถึงได้โดยไม่ต้องมีคำเตือนเกี่ยวกับความเสียหาย?

    คำตอบ

    ผู้สนับสนุน SuperUser Guntram Blohm มีคำตอบสำหรับเรา:

    ใช่มีสิ่งที่เรียกว่าบิตเน่า แต่ไม่จะไม่ส่งผลกระทบต่อผู้ใช้ที่ไม่ได้สังเกต.

    เมื่อฮาร์ดไดรฟ์เขียนเซ็กเตอร์ไปยัง platters มันไม่เพียง แต่เขียนบิตในลักษณะเดียวกับที่เก็บไว้ใน RAM มันใช้การเข้ารหัสเพื่อให้แน่ใจว่าไม่มีลำดับของบิตเดียวกันที่ยาวเกินไป นอกจากนี้ยังเพิ่มรหัส ECC ที่อนุญาตให้ซ่อมแซมข้อผิดพลาดที่ส่งผลกระทบต่อบิตเพียงเล็กน้อยและตรวจจับข้อผิดพลาดที่ส่งผลกระทบมากกว่าสองสามบิต.

    เมื่อฮาร์ดไดรฟ์อ่านเซกเตอร์มันจะตรวจสอบรหัส ECC เหล่านี้และซ่อมแซมข้อมูลหากจำเป็น (และถ้าเป็นไปได้) สิ่งที่เกิดขึ้นต่อไปขึ้นอยู่กับสถานการณ์และเฟิร์มแวร์ของฮาร์ดไดรฟ์ซึ่งได้รับอิทธิพลจากการกำหนดของไดรฟ์.

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

    นี่คือหนึ่งในความแตกต่างที่สำคัญระหว่างฮาร์ดไดรฟ์ที่ขายเป็น "เดสก์ท็อป", "NAS / RAID" หรือ "การเฝ้าระวังวิดีโอ" ฮาร์ดไดรฟ์ ฮาร์ดไดรฟ์ RAID สามารถยอมแพ้ได้อย่างรวดเร็วและทำให้ตัวควบคุมซ่อมแซมเซกเตอร์เพื่อหลีกเลี่ยงความล่าช้าในด้านของผู้ใช้ ฮาร์ดไดรฟ์บนเดสก์ท็อปจะพยายามต่อไปเรื่อย ๆ อีกครั้งเพราะการให้ผู้ใช้รอสักครู่อาจดีกว่าบอกพวกเขาว่าข้อมูลหายไป และฮาร์ดไดรฟ์วิดีโอค่าอัตราข้อมูลคงที่มากกว่าการกู้คืนข้อผิดพลาดตามปกติจะไม่สังเกตเห็นเฟรมที่เสียหาย.

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

    • ฉันไม่เคยเห็นข้อผิดพลาดเพียงเล็กน้อย แต่ฉันเห็นฮาร์ดไดรฟ์จำนวนมากซึ่งภาคทั้งหมดล้มเหลว.

    ฮาร์ดไดรฟ์จะรู้ว่ามีบางอย่างผิดปกติกับเซ็กเตอร์ แต่จะไม่รู้ว่าบิตใดล้มเหลว บิตเดียวที่ล้มเหลวจะถูกจับโดย ECC เสมอ.

    โปรดทราบว่า chkdsk และระบบไฟล์ที่ซ่อมแซมตัวเองโดยอัตโนมัติไม่ได้ทำการแก้ไขข้อมูลภายในไฟล์ สิ่งเหล่านี้มีเป้าหมายที่ความเสียหายภายในโครงสร้างของระบบไฟล์เองเช่นความแตกต่างของขนาดไฟล์ระหว่างรายการไดเรกทอรีและจำนวนบล็อกที่จัดสรร คุณสมบัติการรักษาตัวเองของ NTFS จะตรวจสอบความเสียหายของโครงสร้างและป้องกันไม่ให้กระทบกับข้อมูลของคุณต่อไป แต่จะไม่ซ่อมแซมข้อมูลใด ๆ ที่ได้รับความเสียหาย.

    แน่นอนว่ามีเหตุผลอื่น ๆ ที่ทำให้ข้อมูลเสียหาย ตัวอย่างเช่น RAM ที่ไม่ดีบนตัวควบคุมอาจเปลี่ยนแปลงข้อมูลก่อนที่จะถูกส่งไปยังฮาร์ดไดรฟ์ ในกรณีนั้นไม่มีกลไกใดในฮาร์ดไดรฟ์ที่จะตรวจจับหรือซ่อมแซมข้อมูลและนี่อาจเป็นเหตุผลหนึ่งว่าทำไมโครงสร้างของระบบไฟล์เสียหาย เหตุผลอื่น ๆ รวมถึงข้อบกพร่องของซอฟต์แวร์, ไฟดับขณะเขียนไปยังฮาร์ดไดรฟ์ (แม้ว่าจะถูกแก้ไขโดยการทำเจอร์นัลระบบไฟล์) หรือไดรเวอร์ระบบไฟล์ที่ไม่ดี (ไดรเวอร์ NTFS บน Linux เริ่มต้นเป็นอ่านอย่างเดียวเป็นเวลานาน ไม่ได้บันทึกไว้และนักพัฒนาไม่เชื่อถือรหัสของตัวเอง).

    • ฉันมีสถานการณ์นี้ครั้งหนึ่งที่แอปพลิเคชันจะบันทึกไฟล์ทั้งหมดไว้ในเซิร์ฟเวอร์สองแห่งในศูนย์ข้อมูลสองแห่งเพื่อเก็บสำเนาข้อมูลที่ใช้งานได้ภายใต้สถานการณ์ทั้งหมด หลังจากสองสามเดือนเราสังเกตเห็นว่าประมาณร้อยละ 0.1 ของไฟล์ที่คัดลอกทั้งหมดไม่ตรงกับผลรวมตรวจสอบ MD5 ที่แอปพลิเคชันเก็บไว้ในฐานข้อมูล มันกลายเป็นสายเคเบิลไฟเบอร์ที่ผิดปกติระหว่างเซิร์ฟเวอร์และ SAN.

    สาเหตุอื่น ๆ เหล่านี้คือสาเหตุที่ระบบไฟล์บางระบบเช่น ZFS เก็บข้อมูลผลรวมการตรวจสอบเพิ่มเติมเพื่อตรวจหาข้อผิดพลาด พวกมันถูกออกแบบมาเพื่อปกป้องคุณจากสิ่งต่าง ๆ ที่อาจผิดพลาดได้มากกว่าเพียงแค่การเน่า.


    มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่ ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่.