Мое встроенное устройство Linux использует SD-карту для сохранения определенных диагностических данных, слишком много для внутренней флэш-памяти.
Проблема в том, что если устройство неожиданно выключилось, файловая система (FAT32) на карте повреждена.
Не существует способа предотвратить непредвиденные перебои с питанием или отключение пользователем таким образом, и устройство должно быть относительно необслуживаемым. Хуже того, данные записываются непрерывно, поэтому повреждения происходят очень часто, и Linux, обнаружив неисправный FS, автоматически перезаписывает его только для чтения.
Какие методы вы бы предложили, чтобы смягчить это? Будет ли достаточно запуска fsck.vfat при запуске?
Еще немного информации:
- Карта не должна считаться удаляемой пользователем. Это следует рассматривать как внутренний диск. Любые данные, хранящиеся на нем, будут доступны для загрузки по сети или на USB-накопитель, и система автоматически удалит самые старые записи. Это означает, что он не должен быть читаемым на вашем обычном ПК.
- В настоящее время система поддерживает FAT, yaffs и jffs2. Добавление других файловых систем в ядро возможно, но если существуют другие возможности, мы бы предпочли их в первую очередь.
- Запись может быть приостановлена по требованию даже на несколько минут без потери данных.
- частичная потеря данных или незначительное повреждение допустимы. Полной остановки регистрации нет.
- события отключения питания в большинстве случаев совершенно непредсказуемы.
- система работает на ARM9, 200 МГц, 64 МБ ОЗУ, 32 МБ встроенной флэш-памяти и использует большую часть ресурсов процессора для выполнения своей основной роли. Примите это во внимание, думая о причудливых ресурсоемких решениях.
linux
filesystems
corruption
embedded
sd-card
Научная фантастика
источник
источник
Ответы:
Вы можете использовать
block2mtd
драйвер для использования транзакционных файловых систем jffs2 или yaffs (2), которые вы, похоже, используете в других местах для своей SD-карты, что решило бы вашу проблему потери данных или повреждения файловой системы при отключении питания.Это может повлечь за собой другие проблемы. Поскольку SD-карта, скорее всего, будет иметь собственные механизмы выравнивания износа и переназначения секторов, они могут мешать реализации jffs2 и yaffs, делая то же самое, уменьшая срок службы или производительность вашей SD-карты. Если это не проблема, стоит попробовать.
источник
Проверьте, поддерживает ли используемое вами ядро флаг сброса и / или синхронизации для vfat (кажется, что некоторые версии игнорируют его, будьте осторожны!).
Или просто покончите с файловой системой, если все может войти в один файл (как в случае с необработанным потоком журнала!) Или в несколько файлов фиксированного размера (используйте разделы;)
источник