Здійснення захисту від пошкодження SD-карти


11

Мій вбудований пристрій linux використовує SD-карту для збереження певних діагностичних даних, занадто багатих для внутрішнього спалаху.

Проблема полягає в тому, що якщо пристрій несподівано вимкнеться, файлова система (FAT32) на картці пошкоджена.

Ні в якому разі не можна запобігти несподіваному відключенню електроенергії або користувачеві вимкнути його так, і пристрій має бути відносно не потребує обслуговування. Гірше, що дані записуються постійно, тому пошкодження дуже часті, і Linux при виявленні несправних FS перераховує їх лише для читання.

Які методи ви б запропонували пом'якшити це? Чи вистачить автоматичного запуску fsck.vfat при запуску?

Ще трохи інформації:

  • Картка користувачем не вважається видаленою. Це слід вважати внутрішнім диском. Будь-які збережені на ньому дані будуть доступні для завантаження через мережу або на USB-накопичувач, а система автоматично очищає найдавніші записи. Це означає, що його не потрібно читати у вашому середньому ПК.
  • Наразі система підтримує FAT, yaffs та jffs2. Додавання інших файлових систем до ядра можливо, але якщо існують інші способи, то ми вважаємо за краще їх спочатку.
  • Запис можна призупинити на вимогу навіть на кілька хвилин без втрати даних.
  • прийнятна часткова втрата даних або незначна корупція. Повної зупинки лісозаготівлі немає.
  • потужні події майже повністю непередбачувані.
  • система працює на ARM9, 200 МГц, 64 МБ оперативної пам’яті, 32 Мб внутрішньої спалаху і використовує більшу частину процесорного живлення для своєї основної ролі. Враховуйте це, думаючи про фантастичні важкі рішення.

3
Ви, мабуть, вже вважали це, але варто згадати інших, хто блукає над цим питанням: Більшість флеш-карт (SD, CF тощо) мають толерантність до запису в кілька тисяч циклів (у кращому випадку). Використання звичайних карт для запису даних або подібних завдань вбиває їх з часом (і зазвичай за менший час, ніж думають люди).
Кріс S

@ChrisS: Це здебільшого лише додавання та заміна найдавніших найновіших записів має властивий дуже хороший баланс завантаження записів, особливо що місяці заповнюють карту. Проблема може бути з самим записом FAT, але я вірю, що контролер робить щось розумним у цьому.
СФ.

Яка вартість, якщо ваш пристрій вимкнено та не записує ці дані на карту? Наприклад, якщо діагностичні дані не записуються, ви втратите багато часу або грошей або просто не будете мати файли журналів?
Freiheit

1
@Freiheit: Відсутня досить незрозуміла, але не зовсім неважлива функція, яка продається для клієнтів, і, крім того, якщо хтось інший викрутить насправді погано і шукає козла відпущення, ми втрачаємо один із способів захисту в суді. Справа в тому, що дані до можливої ​​несправності є найціннішими - доказом того, що пристрій працював правильно до останнього моменту, а не те, що власна помилка змусила події перерости в катастрофу.
СФ.

Помічено. Ви чітко фіксуєте дані для чогось важливого!
Freiheit

Відповіді:


8

Ви можете використовувати block2mtdдрайвер для використання транзакційних файлів у файлах jffs2 або yaffs (2), які ви, здається, використовуєте в іншому місці для вашої SD-карти, що вирішить вашу проблему втрати даних або пошкодження файлової системи при потужному переході.

Однак це може спричинити й інші проблеми. Оскільки SD-карта, ймовірно, має власні механізми вирівнювання зносу та перекомплектування секторів, вони можуть заважати виконанню jffs2 та yaffs робити те саме, скорочуючи термін експлуатації та продуктивність вашої SD-карти. Якщо це не проблема, варто спробувати.


Якщо місяць або два заповнити SD-карту 2 Гб, досягнення межі зносу навіть при повністю рандомізованому балансуванні навантаження це не повинно бути проблемою.
СФ.

5

Перевірте, чи підтримує ядро, яке ви використовуєте, флеш і / або прапор синхронізації для vfat (схоже, деякі версії ігнорують його, будьте обережні!).

Або просто скасуйте файлову систему, якщо все може входити в один файл (як у випадку з необробленим потоком журналу!) Або в кілька файлів фіксованого розміру (використовуйте розділи;)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.