คำตอบนี้คือการรวมกันของที่ @ lechlukaszและ @ db48xรวมถึงบางประเด็นที่แสดงความคิดเห็นรวมถึงความคิดของฉันเองด้วย
เส้นทางแบบง่าย ๆ คือการรวมระบบไฟล์เข้ากับเมทาดาทาที่แยกกัน
ด้วยการใช้ระบบไฟล์ที่ทำการแฮ็กข้อมูลและตรวจสอบความถูกต้องเช่นZFSหรือBtrfs (โปรดทราบว่าถึงแม้ว่าจะมีการใช้งานที่ก้าวหน้ามาก Btrfs ยังไม่พร้อมสำหรับการใช้งานจริงในขณะนี้) ตรวจสอบให้แน่ใจว่าหากข้อมูลสามารถอ่านจากดิสก์โดยไม่เกิดข้อผิดพลาดกับระบบปฏิบัติการข้อมูลที่อ่านจะถูกเขียนลงดิสก์ตามวิธีที่ระบบไฟล์ต้องการ ด้วยการรันการดำเนินการ "ขัด" เป็นระยะข้อมูลทั้งหมดจะถูกอ่านและตรวจสอบกับแนวคิดของระบบไฟล์ว่าควรเป็นอย่างไร
อย่างไรก็ตามที่ป้องกันความเสียหายบนดิสก์เท่านั้น (บล็อกที่อ่านไม่ได้, ข้อผิดพลาดการเขียนฮาร์ดแวร์ทันที, ไม่ถูกต้องเขียนว่าส่วนที่เสียหายของข้อมูลโดยตรงบนอุปกรณ์บล็อก ฯลฯ ) มันไม่ได้ป้องกันข้อผิดพลาดของซอฟต์แวร์การทำงานของผู้ใช้ที่ไม่ถูกต้องหรือซอฟต์แวร์ที่เป็นอันตรายซึ่งทำงานผ่านระบบปฏิบัติการที่ตั้งใจไว้สำหรับการทำงานกับไฟล์โดยถือว่าสิ่งอำนวยความสะดวกเหล่านั้นปราศจากข้อบกพร่องดังกล่าว
เพื่อป้องกันหลังคุณจำเป็นต้องมีการป้องกันอีกชั้น การตรวจสอบข้อมูลหรือการแฮชข้อมูลจากมุมมองของแอปพลิเคชันผู้ใช้จะช่วยป้องกันความเสี่ยงต่าง ๆ ที่กล่าวมาข้างต้น แต่ต้องดำเนินการแยกต่างหาก (ไม่ว่าจะเป็นการดำเนินการตามกระบวนการในตัวซอฟต์แวร์หรือกระบวนการแยกต่างหาก)
ด้วยฮาร์ดแวร์ของทุกวันนี้และสิ่งใดที่เป็นประโยชน์สำหรับการจัดเก็บข้อมูลจำนวนมาก (การหมุนดิสก์ฮาร์ดดิสก์เมื่อเทียบกับ solid-state disk / SSDs) แม้แต่อัลกอริทึมการแฮชที่ซับซ้อนเช่น SHA1 จะเป็น I / O-bound เป็นส่วนใหญ่ ข้อมูลที่ถูกแฮชจะเป็นหน้าที่ของความเร็วในการอ่านของระบบจัดเก็บข้อมูลมากกว่าความสามารถของตัวประมวลผลของคอมพิวเตอร์ในการคำนวณแฮช ฉันทำการทดลองใช้การแปลงข้อมูล MD5 พื้นที่ผู้ใช้มากกว่า 150 GB ของข้อมูลในปี 2012 ว่าเป็นพีซีสำหรับผู้บริโภคระดับกลางและเสร็จสิ้นหลังจากออกกำลังกายดิสก์โดยทั่วไปโดยไม่หยุดชะงักเป็นเวลาประมาณ 40 นาที การเพิ่มตัวเลขเหล่านี้ให้สูงขึ้น 100 เท่าคุณจะได้รับ MD5 hash ของคอลเล็กชัน 15 TB ในเวลาประมาณสามวันบนฮาร์ดแวร์เดียวกัน โดยการเพิ่มอัตราการอ่านการถ่ายโอน (ซึ่งสามารถทำได้ง่ายเช่นตัวอย่างRAID 0คือการสตริปโดยไม่มีความซ้ำซ้อนซึ่งโดยทั่วไปจะใช้เพื่อให้ได้ประสิทธิภาพการอ่าน / เขียนที่สูงขึ้นเมื่อรวมกับ RAID 1 ที่สร้างRAID 10 ) เวลาในการดำเนินการจะลดลงตามปริมาณข้อมูลที่เท่ากัน
ด้วยการผสานทั้งสองอย่างเข้าด้วยกันคุณจะได้รับสิ่งที่ดีที่สุดทั้งสองโลก: ระบบไฟล์ช่วยให้คุณมั่นใจได้ว่าสิ่งที่คุณได้รับเมื่ออ่านไฟล์คือสิ่งที่ถูกเขียนขึ้นจริงและกระบวนการตรวจสอบความแน่นอนที่แยกต่างหาก เก็บไว้ยังคงตรงกับสิ่งที่ถูกกลืนเข้าไปในคลัง ความไม่ลงรอยกันระหว่างทั้งสอง (ระบบไฟล์บอกว่าไฟล์นั้นโอเคการตรวจสอบฟิกซ์เจอร์บอกว่ามันไม่ใช่) จะระบุไฟล์ที่ถูกแก้ไขนอกโหมดการทำงานของไฟล์เก็บถาวร แต่จากภายในหน่วยปฏิบัติการของระบบปฏิบัติการ คัดลอก (สำรอง) การตรวจสอบ fixity สามารถทำงานได้ในช่วงเวลาที่นานขึ้นซึ่งเป็นสิ่งจำเป็นสำหรับการเก็บถาวรที่มีขนาดใหญ่มาก แต่การเข้าถึงออนไลน์ใด ๆ ยังคงรับประกันว่าจะไม่เกิดความเสียหายบนฮาร์ดแวร์หากการอ่านสำเร็จ ในหลักการ ซอฟต์แวร์เก็บถาวรสามารถพึ่งพาระบบไฟล์เพื่อรายงานความไม่สอดคล้องกันว่าเป็นข้อผิดพลาดในการอ่านและทำการตรวจสอบ fixity แยกต่างหากในพื้นหลังขณะที่ผู้ใช้ทำงานกับไฟล์และแสดงข้อความที่เหมาะสมหากบ่งชี้ว่าไฟล์ไม่ตรงกับสิ่งที่ติดเครื่อง ลงในที่เก็บถาวร การใช้ระบบไฟล์บล็อกการแฮชแบบแผนดังกล่าวจะมีผลกระทบต่อประสิทธิภาพการรับรู้น้อยที่สุดในขณะที่ยังให้ความมั่นใจว่าเนื้อหานั้นถูกต้อง