Search
Write a publication
Pull to refresh

Comments 15

Little Fs - это небольшая отказоустойчивая файловая система

Везде, где есть упоминание LFS все считают своим долгом упомянуть отказоустойчивость, хотя при вырубании питания мрёт оная за милую душу. Иногда просто перестаёт монтировать раздел, иногда пишет нулевое свободное пространство, но так или иначе, продолжать работать без реинициализации невозможно. Ещё одна вымораживающая фишка в том, что если не флашить изменения, то после вырубания питания на руках будем иметь нулевой файл. Посему надо обязательно изменения флашить. И всё бы ничего, но на каждый флаш LFS начинает вытирать кучу блоков, что-то массово перезаписывать, и это выливается в конкретные тормоза. Решением может быть применение ртоси, буферизаций и т.п. Отмечу, что всё перечисленное имеет/ло место при работе с сырым NAND, и есть вероятность, что LFS плохо учитывает особенности такой памяти.

Lazy write - это алгоритм записи, который записывает данные только в том случае, если они реально отсутствуют в памяти.

Тут вы, батенька, что-то опять выдумываете (или повторяете выдуманное кем-то). Lazy - это отложенная операция (не только записи, но и много чего другого). Складываем изменения, а когда подошло подходящее время (здесь должен быть мем про котика, часами смотрящего на часы.жпг), пишем. А незапись повторяющихся данных - это просто микрооптимизация в драйвере FS, реализуемая самым примитивным образом (хоть и не без оверхеда). То же касается и вытирания уже вытертых блоков (такое не редкость).

Увидит ли ПК файлы, если запрограммировать LittleFs на SD карте?

Есль подумать чуть-чуть, то ответ очевиден. Хотя могут быть варианты. Интрузивный - ставить драйвер на ПеКа, или не очень - подключать сам девайс и использовать USB MTP (т.е. спрятать LFS, чтобы его никто не видел).

Если бороться с падениями файловых систем ,то можно сделать raid5.

Как из sd карты прочитать сырой дамп? Это может быть полезно если там какая-нибудь другая файловая система, скажем little fs.

dd if=/dev/sdb of=/path/to/your/disk_image.img

Под виндой наверное тоже что-то есть. Или можно своё, через винапи.

Посмотрите в официальном репозитории на гитхаб список ссылок в конце описания. Там есть ссылка на littlefs fuse.

Отмечу, что всё перечисленное имеет/ло место при работе с сырым NAND, и есть вероятность, что LFS плохо учитывает особенности такой памяти.

Есть современный чип для NAND. Называется W25M02GV. W25M02GV - это NAND Flash на 256 MByte с доступом по SPI от компании WinBond.

Можете привести сценарии, когда фс мрёт при потере питания?

Про флаш не совсем понятно, так как до его вызова данные могут быть буферизированы. Вы в каком режиме записываете данные в файл: append или переписываете контент файла?

Сценарий один, набрали измерений, записали, повторили. В какой-то момент питание пропало (это нормальное явление). И так много раз. На какой-то из них оно мрёт.

Про флаш не совсем понятно, так как до его вызова данные могут быть буферизированы.

Понятно, данные буферизированы. Но буфер в одну страницу, а переписывается блок, и ещё вытирается пара. Данные дописываются в конец, обычный логгинг.

Опять изобретение велосипедов.
У FC7300x память - это типичная NAND. Под NAND есть достаточно готовых и портированых FS. Та же YAFFS отлично подходит и по скорости будет быстрее.
В реальных же микроконтроллерах типа STM32 все гораздо труднее, потому что там стираемый сектор аж 132 Kб и LittleFS такую память убъет очень быстро.

А вот файловая система STfs специально заточена на мелкую гранулярность и большие сектора стирания. И также дает равномерный износ.

Это уже не актуально.
Сейчас мне Cloude Sonnet поверх любого медиа может за минуты сотворить любую архитектуру хранения данных, с резервированием, шифрацией, валидацией и проч.
Оно и раньше то было не сильно валидно. Я под все FS всегда делал свой низкий уровень. И он определял быстродействие и надежность.
Да даже в этой теме я запостил только потому что так совпало, что сегодня надо было сделать оконого менеджера для STFs. Причем клоду вообще не объяснял по API STfs. А он просто взял и сделал. Прикольно. Вот решил поделиться.

 Есть ли возможность дать Cloude Sonnet исходники LitteFs для анализа и построения понятной документации?

А вот файловая система STfs специально заточена на мелкую гранулярность и большие сектора стирания.

https://github.com/stef/stfs это оно? Как понимаю, годится только для встроенного флеша, и на большой (сотни мегабайт, гигабайты) памяти будет тормозить?

Та же YAFFS отлично подходит и по скорости будет быстрее.

Только если вдруг завалялась большая куча рамы (если нужен большой флеш). А так да неплоха, устойчива.

В реальных же микроконтроллерах типа STM32 все гораздо труднее, потому что там стираемый сектор аж 132 Kб и LittleFS такую память убъет очень быстро.

В STM32 LittleFS можно запустить на 2x -3x секторах по 16kByte.

Sign up to leave a comment.

Articles