Мое встроенное устройство Linux использует SD-карту для сохранения определенных диагностических данных, которых слишком много для внутренней флэш-памяти.
Проблема в том, что если устройство неожиданно выключается, файловая система (FAT32) на карте повреждена.
Невозможно предотвратить непредвиденное отключение электроэнергии или его отключение пользователем, и устройство должно быть относительно необслуживаемым. Хуже того, данные записываются непрерывно, поэтому повреждения происходят очень часто, и Linux при обнаружении неисправной файловой системы автоматически монтирует ее в режиме только для чтения.
Какие методы вы бы посоветовали смягчить? Достаточно ли будет автоматически запускать fsck.vfat при запуске?
Дополнительная информация:
Вы можете использовать block2mtd
драйвер для использования транзакционных файловых систем jffs2 или yaffs (2), которые вы, кажется, используете в другом месте для своей SD-карты, что решит вашу проблему потери данных или повреждения файловой системы при выключении питания.
Однако это может вызвать другие проблемы. Поскольку SD-карта, скорее всего, будет иметь собственные механизмы для выравнивания износа и переназначения секторов, они могут помешать реализациям jffs2 и yaffs делать то же самое, уменьшая срок службы или производительность вашей SD-карты. Если это не проблема, стоит попробовать.
Проверьте, поддерживает ли используемое ядро флаг сброса и / или синхронизации для vfat (кажется, некоторые версии игнорируют его, будьте осторожны!).
Или просто полностью избавиться от файловой системы если все можно поместить в один файл (как в случае с необработанным потоком журнала!) или в несколько файлов фиксированного размера (используйте разделы;)