Vydanie odolnej súborovej systémy LittleFS 2.10

Bola zverejnená verzia projektu LittleFS 2.10, ktorá vyvíja kompaktný súborový systém pre zabudované zariadenia a mikrovedené procesory. Pôvodne bol súborový systém vytvorený spoločnosťou ARM pre operačný systém Mbed OS, ale neskôr bol vyčlenený ako samostatný projekt. Kód FS je napísaný v jazyku C a je distribuovaný pod licenciou BSD. Referenčná implementácia LittleFS sa dodáva vo forme knižnice C, na základe ktorej bol vytvorený FUSE modul a väzby pre rôzne programovacie jazyky.

Vlastnosti LittleFS:

  • Nízke požiadavky na zdroje a podpora prevádzky v podmienkach obmedzenej veľkosti RAM. V implementácii LittleFS sú použité iba staticky definované buffery (bez dynamickej alokácie pamäte) a nepožívajú sa rekurzívne volania, čo zabezpečuje, že veľkosť používania operačnej pamäte a pomocných štruktúr LittleFS na úložisku zostáva vždy konštantná, bez ohľadu na to, čo je zapisované do FS a akú veľkosť má úložisko.
  • Prostriedky na vyrovnávanie opotrebovania Flash nosičov (wear leveling), umožňujúce minimalizovať opätovné používanie blokov a rovnomerne rozdeľovať operácie čistenia blokov na Flash pamäti, ktorej riadiaci obvod neposkytuje riešenie tejto úlohy.
  • Veľmi vysoká odolnosť voči chybám — FS považuje náhodné ukončenie činnosti (ukončenie napájaním) za normálnu situáciu a zaručuje, že úložisko na disku je v celistvom stave v ktoromkoľvek momente. Na vylúčenie porušenia celistvosti a straty údajov je zavedený mechanizmus copy-on-write (COW), pri ktorom sa zmeny neprepíšu informácie, ale ukladajú sa na nové miesto.
  • Atomickosť vykonávania operácií, ako je mazanie a premenovanie, aj v prípade výpadku napájania počas ich vykonávania. Zmeny súboru sa zapisujú na disk až po vyvolaní sync alebo close. Rozporuplnosti spôsobené operáciami, ktoré nemôžu byť vykonané atomicky, sa vyriešia špeciálnym spracovateľom deorphan, ktorý prechádza celým stromom FS po načítaní.
  • Podpora POSIX-podobných funkcií na prácu so súbormi a adresármi.

Obsah súborov v LittleFS je predstavovaný COW-zoznamami CTZ, ktoré zabezpečujú zložitostný stupeň O(1) pri pridávaní a O(nlogn) pri čítaní. Pridelenie blokov sa vykonáva prostredníctvom skenovania FS na účely zistenia použitých blokov v oblasti pevnej veľkosti, ktorá je uložená vo forme bitového vektora. Na zjednodušenie skenovania sú všetky adresáre súčasťou prepojeného zoznamu, ktorý pokrýva celú súborovú systém. Ak sa pri zápise bloku zistí chyba, potom sa prideli nový blok a údaje sa prenesú do neho.

Medzi zmenami v novej verzii LittleFS:

  • Prepracovaný kód analýzy súborových ciest, čo umožnilo priblížiť správanie FS k systémom POSIX a očakávaniam používateľov v takých situáciách, ako sú ukončenie cesty lomítkom, spracovanie prázdných ciest a navigácia za hranice koreňa FS.
  • Pridané dva nové príklady blokových zariadení ramcrc32bd a ramrsbd, v ktorých je implementovaný mechanizmus opravy chýb, kompatibilný s LittleFS. V súčasnej podobe vo FS LittleFS chýba podpora určovania a opravy chýb, a tieto operácie sa presúvajú na úroveň blokových zariadení.
  • Do funkcie lfs_mkdir bola pridaná podpora koncových lomítok, t.j. volanie lfs_mkdir("a/") teraz nevedie k vyhodeniu chyby.
  • Vo funkciách lfs_stat a lfs_getattr sa teraz zobrazuje chyba pri používaní koncových lomítok, ak existujúca cesta vo FS nie je adresár.
  • Pokús o otvorenie súboru prostredníctvom funkcie lfs_file_open so záverečným lomítkom v názve teraz povedie k chybe LFS_ERR_NOTDIR, ak súbor nie je adresárom v FS, LFS_ERR_ISDIR, ak názov odkazuje na adresár v FS, a LFS_O_CREAT, ak súbor neexistuje.
  • Pokús o prístup za hranice koreňovej FS, napríklad lfs_stat("/../a"), teraz povedie k vyhodeniu chyby.
  • Zadaný prázdny cestný názov už nie je synonymom prístupu k koreňovému adresáru, t.j. volanie lfs_stat("") povedie k vyhodeniu chyby.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster