Tôi hiểu rằng các ổ đĩa cứng và SSD thực hiện một số sửa lỗi cơ bản bên trong ổ đĩa và hầu hết các cấu hình RAID, ví dụ: mdadm sẽ phụ thuộc vào điều này để quyết định khi nào một ổ đĩa không sửa lỗi và cần phải ngoại tuyến. Tuy nhiên, điều này phụ thuộc vào việc lưu trữ chính xác 100% trong chẩn đoán lỗi. Điều đó không phải vậy, và một cấu hình phổ biến như gương RAID-1 hai ổ đĩa sẽ dễ bị tổn thương: giả sử một số bit trên một ổ đĩa bị hỏng âm thầm và ổ đĩa không báo lỗi đọc. Do đó, các hệ thống tệp như btrfs và ZFS thực hiện tổng kiểm riêng của họ, để không tin tưởng vào các phần cứng ổ đĩa lỗi, cáp SATA rối rắm, v.v.
Tương tự, RAM cũng có thể có vấn đề về độ tin cậy và do đó chúng ta có RAM ECC để giải quyết vấn đề này.
Câu hỏi của tôi là : cách thức kinh điển để bảo vệ tệp hoán đổi Linux khỏi sự hỏng hóc im lặng / thối bit không bị bắt bởi phần sụn ổ đĩa trên cấu hình hai đĩa (tức là sử dụng trình điều khiển hạt nhân chính)? Dường như với tôi rằng một cấu hình thiếu bảo vệ đầu cuối ở đây (chẳng hạn như được cung cấp bởi btrfs) phần nào phủ nhận sự an tâm do RAM ECC mang lại. Tuy nhiên, tôi không thể nghĩ ra một cách hay:
- btrfs hoàn toàn không hỗ trợ hoán đổi. Bạn có thể thiết lập một thiết bị lặp từ tệp btrfs và thực hiện trao đổi trên đó. Nhưng điều đó có vấn đề:
- Viết ngẫu nhiên không hoạt động tốt: https://btrfs.wiki.kernel.org/index.php/Gotchas#Frag sắc
- Đề xuất ở đó để vô hiệu hóa sao chép khi ghi cũng sẽ vô hiệu hóa kiểm tra - do đó đánh bại toàn bộ điểm của bài tập này. Giả định của họ là tệp dữ liệu có các biện pháp bảo vệ nội bộ riêng.
- ZFS trên Linux cho phép sử dụng ZVOL làm trao đổi, mà tôi đoán có thể hoạt động: http://zfsonlinux.org/faq.html#CanIUseaZVOLforSwap - tuy nhiên, từ việc đọc của tôi, ZFS thường yêu cầu bộ nhớ và làm cho nó hoạt động trong một trao đổi ứng dụng chỉ nghe có vẻ như một số công việc tìm ra nó. Tôi nghĩ rằng đây không phải là lựa chọn đầu tiên của tôi. Tại sao bạn phải sử dụng một số mô-đun hạt nhân ngoài luồng chỉ để có một trao đổi đáng tin cậy nằm ngoài tôi - chắc chắn có một cách để thực hiện điều này với hầu hết các bản phân phối / hạt nhân Linux hiện đại trong thời đại ngày nay?
- Thực sự có một luồng trong danh sách gửi thư nhân Linux với các bản vá để kích hoạt tổng kiểm tra trong chính trình quản lý bộ nhớ, vì chính xác những lý do tôi thảo luận trong câu hỏi này: http://thread.gmane.org/gmane.linux.kernel/989246 - Thật không may, theo như tôi có thể nói, bản vá đã chết và không bao giờ khiến nó ngược dòng vì những lý do mà tôi không biết. Quá tệ, nó có vẻ như là một tính năng tốt. Mặt khác, nếu bạn đặt trao đổi trên RAID-1 - nếu hỏng vượt quá khả năng sửa chữa của tổng kiểm tra, bạn sẽ muốn trình quản lý bộ nhớ thử đọc từ ổ đĩa khác trước khi hoảng loạn hoặc bất cứ điều gì, đó là có lẽ nằm ngoài phạm vi của những gì một người quản lý bộ nhớ nên làm.
Tóm tắt:
- RAM có ECC để sửa lỗi
- Các tệp trên bộ nhớ vĩnh viễn có btrfs để sửa lỗi
- Hoán đổi có ??? <--- đây là câu hỏi của tôi