ความเข้าใจของฉันคือฮาร์ดไดรฟ์และ SSD ใช้การแก้ไขข้อผิดพลาดพื้นฐานภายในไดรฟ์และการกำหนดค่า RAID ส่วนใหญ่เช่น mdadm จะขึ้นอยู่กับสิ่งนี้เพื่อตัดสินใจว่าเมื่อใดที่ไดรฟ์ล้มเหลวในการแก้ไขข้อผิดพลาดและจำเป็นต้องออฟไลน์ อย่างไรก็ตามขึ้นอยู่กับการจัดเก็บที่ถูกต้อง 100% ในการวิเคราะห์ข้อผิดพลาด ไม่เช่นนั้นและการกำหนดค่าทั่วไปเช่นมิเรอร์ RAID-1 แบบสองไดรฟ์จะมีความเสี่ยง: สมมติว่าบิตบางส่วนบนไดรฟ์หนึ่งเสียหายอย่างเงียบ ๆ และไดรฟ์ไม่รายงานข้อผิดพลาดการอ่าน ดังนั้นระบบไฟล์เช่น btrfs และ ZFS จะใช้เช็คซัมของตัวเองเพื่อที่จะไม่ไว้วางใจเฟิร์มแวร์ของรถบั๊กกี้สายเคเบิลที่มีความผิดพลาดของสาย SATA และอื่น ๆ
ในทำนองเดียวกัน RAM ยังมีปัญหาความน่าเชื่อถือและทำให้เรามี ECC RAM เพื่อแก้ไขปัญหานี้
คำถามของฉันคือสิ่งที่เป็นวิธีที่บัญญัติในการป้องกันไฟล์ swap Linux จากความเสียหายเงียบ / บิตเน่าไม่ได้จับโดยเฟิร์มแวร์ไดรฟ์ในการกำหนดค่าสองดิสก์ (เช่นการใช้ไดรเวอร์เคอร์เนล mainline)? สำหรับฉันแล้วดูเหมือนว่าการกำหนดค่าที่ไม่มีการป้องกันแบบครบวงจรที่นี่ (เช่นที่จัดทำโดย btrfs) จะลบล้างความสงบของจิตใจที่นำมาจาก ECC RAM แต่ฉันไม่สามารถคิดวิธีที่ดี:
- btrfs ไม่รองรับ swapfiles เลย คุณสามารถตั้งค่าอุปกรณ์ลูปจากไฟล์ btrfs และทำการสลับในนั้น แต่นั่นมีปัญหา:
- การเขียนแบบสุ่มทำงานได้ไม่ดี: https://btrfs.wiki.kernel.org/index.php/Gotchas#Fragmentation
- คำแนะนำที่นั่นเพื่อปิดการใช้งาน copy-on-write จะปิดการใช้งานการตรวจสอบด้วย - ดังนั้นการเอาชนะจุดทั้งหมดของแบบฝึกหัดนี้ สมมติฐานของพวกเขาคือไฟล์ข้อมูลมีการป้องกันภายในของตัวเอง
- ZFS บน Linux อนุญาตให้ใช้ ZVOL เป็น swap ซึ่งฉันคิดว่าสามารถใช้งานได้: http://zfsonlinux.org/faq.html#CanIUseaZVOLforSwap - อย่างไรก็ตามจากการอ่านของฉัน ZFS มักจะเรียกใช้หน่วยความจำและทำให้มันทำงานได้ใน swap แอพพลิเคชั่นเพียงอย่างเดียวดูเหมือนว่าบางงานจะคิดออก ฉันคิดว่านี่ไม่ใช่ตัวเลือกแรกของฉัน ทำไมคุณต้องใช้โมดูลเคอร์เนลแบบ out-of-tree เพื่อให้การแลกเปลี่ยนที่เชื่อถือได้นั้นเกินกว่าฉัน - แน่นอนว่ามีวิธีที่จะทำให้สำเร็จด้วยการกระจาย / เคอร์เนล Linux ที่ทันสมัยที่สุดในยุคนี้?
- ที่จริงแล้วมีเธรดในรายการส่งเมลเคอร์เนล Linux ที่มีแพตช์เพื่อเปิดใช้งาน checksums ภายในตัวจัดการหน่วยความจำเองด้วยเหตุผลที่ฉันพูดถึงในคำถามนี้: http://thread.gmane.org/gmane.linux.kernel/989246 - โชคไม่ดีเท่าที่ฉันจะบอกได้ว่าแผ่นแปะนั้นตายไปและไม่เคยทำให้มันทวนน้ำเพราะฉันไม่ทราบสาเหตุ แย่มากมันฟังดูเหมือนเป็นคุณสมบัติที่ดี ในทางกลับกันถ้าคุณใส่ swap ใน RAID-1 - หากความเสียหายนั้นเกินความสามารถในการตรวจสอบการซ่อมแซมคุณต้องการให้ตัวจัดการหน่วยความจำพยายามอ่านจากไดรฟ์อื่นก่อนที่จะตกใจหรืออะไรก็ตาม อาจอยู่นอกขอบเขตของสิ่งที่ตัวจัดการหน่วยความจำควรทำ
สรุป:
- RAM มี ECC เพื่อแก้ไขข้อผิดพลาด
- ไฟล์บนที่เก็บข้อมูลถาวรมี btrfs เพื่อแก้ไขข้อผิดพลาด
- สลับมี ??? <--- นี่คือคำถามของฉัน