Я розумію, що жорсткі диски та SSD-диски реалізують основні виправлення помилок всередині накопичувача, і більшість конфігурацій RAID, наприклад mdadm, буде залежати від цього, щоб вирішити, коли диск не виправить помилку і його потрібно вимкнути в автономному режимі. Однак це залежить від того, що сховище є на 100% точним у своїй діагностиці помилок. Це не так, і загальна конфігурація, як дзеркало RAID-1 з двома приводами, буде вразливою: припустимо, деякі біти на одному накопичувачі мовчки пошкоджені, а привід не повідомляє про помилку читання. Таким чином, файлові системи, такі як btrfs та ZFS, реалізують власні контрольні суми, щоб не довіряти грандіозним мікропрограмним накопичувачам, глянцевим SATA-кабелям тощо.
Так само оперативна пам'ять може також мати проблеми з надійністю, і, таким чином, у нас є ECC RAM для вирішення цієї проблеми.
Моє запитання таке : що є канонічним способом захисту файлу swap Linux від тихої корупції / бітової гнилі, не зафіксованої прошивкою диска на конфігурації двох дисків (тобто за допомогою драйверів основного ядра)? Мені здається, що конфігурація, якій тут не вистачає захисту від кінця до кінця (наприклад, такої, яку надає btrfs), дещо заперечує спокій, внесений оперативною пам’яттю ECC. Але я не можу придумати гарний спосіб:
- btrfs взагалі не підтримує свопфіли. Ви можете налаштувати циклічний пристрій з файлу btrfs і зробити своп на цьому. Але в цьому є проблеми:
- Випадкові записи не працюють добре: https://btrfs.wiki.kernel.org/index.php/Gotchas#Fragmentation
- Пропозиція відключити копіювання під час запису також відключить контрольну суму - тим самим переможивши всю точку цієї вправи. Їх припущення полягає в тому, що файл даних має свій внутрішній захист.
- ZFS в Linux дозволяє використовувати ZVOL як своп, що, напевно, може спрацювати: http://zfsonlinux.org/faq.html#CanIUseaZVOLforSwap - однак, з мого читання, ZFS, як правило, вимагає пам’яті, і змушує його працювати в свопі. -тільки додаток звучить як деякий твір, що з'ясовує це. Я думаю, що це не мій перший вибір. Чому вам доведеться використовувати якийсь модуль ядра поза деревом просто для того, щоб мати надійний своп поза мною - безумовно, є спосіб досягти цього з найсучаснішими дистрибутивами / ядрами Linux в цей день і вік?
- В списку розсилки ядра Linux з патчами насправді була нитка для включення контрольних сум у самому диспетчері пам'яті, саме з тих причин, які я обговорюю в цьому питанні: http://thread.gmane.org/gmane.linux.kernel/989246 - на жаль, наскільки я можу сказати, патч загинув і ніколи не ввійшов до нього за течією з незрозумілих мені причин. Шкода, це звучало як приємна особливість. З іншого боку, якщо ви помістите своп на RAID-1 - якщо пошкодження виходить за рамки можливості контрольної суми для відновлення, ви хочете, щоб менеджер пам'яті спробував прочитати з іншого диска, перш ніж панікувати або що завгодно, що є ймовірно, виходить за рамки того, що повинен робити менеджер пам'яті.
Підсумовуючи:
- ОЗУ має ECC для виправлення помилок
- Файли на постійному сховищі мають btrfs для виправлення помилок
- Зміна має ??? <--- це моє питання