Vydání odolného souborového systému LittleFS 2.10

Byl zveřejněn výstup projektu LittleFS 2.10, který vyvíjí kompaktní souborový systém pro vestavěná zařízení a mikrokontroléry. Původně byl souborový systém vytvořen společností ARM pro operační systém Mbed OS, ale poté byl vyčleněn do samostatného projektu. Kód FS je napsán v jazyce C a je distribuován pod licencí BSD. Referenční implementace LittleFS je dodávána jako C-knihovna, na jejímž základě byl vytvořen FUSE modul a obvazy pro různé programovací jazyky.

Vlastnosti LittleFS:

  • Nízké požadavky na zdroje a podpora provozu v podmínkách omezené velikosti RAM. V implementaci LittleFS se používají pouze staticky definované buffery (bez dynamické alokace paměti) a nevyužívají se rekurzivní volání, což znamená, že velikost spotřebované operační paměti a systémových struktur LittleFS na úložišti zůstává vždy konstantní, bez ohledu na to, co je do FS zapisováno a jaké velikosti je úložiště.
  • Nástroje pro vyrovnávání opotřebení Flash médií (wear leveling), které umožňují minimalizovat opětovné používání bloků a rovnoměrně rozdělit operace vymazání bloků na Flash paměti, jejíž řadič tuto úlohu nezajišťuje.
  • Velmi vysoká odolnost vůči selhání — FS považuje náhodné přerušení práce (ukončení práce při výpadku napájení) za standardní situaci a zajišťuje, že úložiště na disku je v celistvém stavu v jakémkoli okamžiku. K vyloučení porušení celistvosti a ztráty dat se používá mechanizmus copy-on-write (COW), při kterém změny nepřepisují informace, ale ukládají se na nové místo.
  • Atomické provádění operací, jako je odstranění a přejmenování, i v případě výpadku napájení během jejich provádění. Změny souboru jsou zapisovány na disk pouze po vyvolání příkazu sync nebo close. Nesoulady, způsobené operacemi, které nelze provádět atomicky, se řeší speciálním zpracovatelem deorphan, který prochází celé strom FS po načtení.
  • Podpora POSIX-podobných funkcí pro práci se soubory a adresáři.

Obsah souborů v LittleFS je prezentován COW seznamy CTZ, které zajišťují úroveň složitosti O(1) při přidávání a O(nlogn) při čtení. Přidělování bloků je realizováno skenováním FS ohledně použitých bloků v oblasti pevné velikosti, uložené ve formě bitového vektoru. Pro usnadnění skenování jsou všechny adresáře součástí propojeného seznamu, který pokrývá celý souborový systém. Pokud je při zápisu bloku zjištěna chyba, je přidělen nový blok a data jsou do něj přesunuta.

Mezi změnami v nové verzi LittleFS:

  • Přepracovaný kód pro analýzu cest souborů, který přiblížil chování FS systémům POSIX a očekáváním uživatelů v takových situacích, jako je ukončení cesty lomítkem, zpracování prázdných cest a navigace za hranice kořenového FS.
  • Byly přidány dva nové příklady blokových zařízení ramcrc32bd a ramrsbd, ve kterých je implementován mechanizmus korekce chyb, kompatibilní s LittleFS. V aktuálním stavu samostatný FS LittleFS postrádá podporu pro detekci a korekci chyb, a tyto operace jsou přesunuty na úroveň blokových zařízení.
  • Do funkce lfs_mkdir byla přidána podpora koncových lomítek, tj. volání lfs_mkdir(„a/“) nyní nevede k vyvolání chyby.
  • Ve funkcích lfs_stat a lfs_getattr se nyní vyvolává chyba při používání koncových lomítek, pokud existující cesta ve FS není adresářem.
  • Pokus o otevření souboru pomocí funkce lfs_file_open se jménem končícím lomítkem nyní povede k chybě LFS_ERR_NOTDIR, pokud soubor není adresářem ve FS, LFS_ERR_ISDIR, pokud jméno odkazuje na adresář ve FS, a LFS_O_CREAT, pokud soubor neexistuje.
  • Pokus o přístup za hranice kořenového FS, například lfs_stat(„/../a“), nyní povede k vyvolání chyby.
  • Určení prázdné cesty nyní není synonymem pro přístup k kořenovému adresáři, tj. volání lfs_stat(„“) povede k vyvolání chyby.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster