Назад | Перейти на главную страницу

Защита SD-карты от повреждения

Мое встроенное устройство Linux использует SD-карту для сохранения определенных диагностических данных, которых слишком много для внутренней флэш-памяти.

Проблема в том, что если устройство неожиданно выключается, файловая система (FAT32) на карте повреждена.

Невозможно предотвратить непредвиденное отключение электроэнергии или его отключение пользователем, и устройство должно быть относительно необслуживаемым. Хуже того, данные записываются непрерывно, поэтому повреждения происходят очень часто, и Linux при обнаружении неисправной файловой системы автоматически монтирует ее в режиме только для чтения.

Какие методы вы бы посоветовали смягчить? Достаточно ли будет автоматически запускать fsck.vfat при запуске?

Дополнительная информация:

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

Однако это может вызвать другие проблемы. Поскольку SD-карта, скорее всего, будет иметь собственные механизмы для выравнивания износа и переназначения секторов, они могут помешать реализациям jffs2 и yaffs делать то же самое, уменьшая срок службы или производительность вашей SD-карты. Если это не проблема, стоит попробовать.

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

Или просто полностью избавиться от файловой системы если все можно поместить в один файл (как в случае с необработанным потоком журнала!) или в несколько файлов фиксированного размера (используйте разделы;)