{"id":120974,"date":"2024-12-13T15:46:01","date_gmt":"2024-12-13T13:46:01","guid":{"rendered":"https:\/\/prohoster.info\/blog\/novosti-interneta\/vypusk-otkazoustojchivoj-fajlovoj-sistemy-littlefs-2-10"},"modified":"2024-12-13T15:46:01","modified_gmt":"2024-12-13T13:46:01","slug":"vypusk-otkazoustojchivoj-fajlovoj-sistemy-littlefs-2-10","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/news\/vypusk-otkazoustojchivoj-fajlovoj-sistemy-littlefs-2-10","title":{"rendered":"Wydanie odpornej na awarie systemu plik\u00f3w LittleFS 2.10","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Opublikowano wydanie projektu LittleFS 2.10, kt\u00f3ry rozwija kompaktowy system plik\u00f3w dla urz\u0105dze\u0144 wbudowanych i mikrokontroler\u00f3w. Pocz\u0105tkowo system plik\u00f3w zosta\u0142 stworzony przez firm\u0119 ARM dla systemu operacyjnego Mbed OS, ale nast\u0119pnie wydzielono go jako osobny projekt. Kod FS jest napisany w j\u0119zyku C i jest dystrybuowany na licencji BSD. Referencyjna implementacja LittleFS dostarczana jest w postaci biblioteki C, na bazie kt\u00f3rej stworzono modu\u0142 FUSE oraz opakowania dla r\u00f3\u017cnych j\u0119zyk\u00f3w programowania.     <\/p>\n<p>Cechy LittleFS:  <\/p>\n<ul>\n<li class=\"l\"> Niskie wymagania dotycz\u0105ce zasob\u00f3w i wsparcie dla dzia\u0142ania w warunkach ograniczonego rozmiaru RAM. W implementacji LittleFS stosowane s\u0105 wy\u0142\u0105cznie statycznie okre\u015blone bufory (bez dynamicznego przydzielania pami\u0119ci), a wywo\u0142ania rekurencyjne nie s\u0105 u\u017cywane, dzi\u0119ki czemu rozmiar zajmowanej pami\u0119ci operacyjnej i struktury pomocnicze LittleFS na no\u015bniku zawsze pozostaj\u0105 sta\u0142e, niezale\u017cnie od tego, co jest zapisywane w FS i jakiego rozmiaru jest pami\u0119\u0107.\n<li class=\"l\"> \u015arodki do wyr\u00f3wnywania zu\u017cycia no\u015bnik\u00f3w Flash (wear leveling), kt\u00f3re minimalizuj\u0105 ponowne u\u017cycie blok\u00f3w i r\u00f3wnomiernie rozk\u0142adaj\u0105 operacje czyszczenia blok\u00f3w w pami\u0119ci Flash, kt\u00f3rej kontroler nie oferuje rozwi\u0105zania w tej kwestii.\n<li class=\"l\"> Bardzo wysoka odporno\u015b\u0107 na awarie \u2014 FS traktuje przypadkowe zatrzymanie pracy (zaprzestanie dzia\u0142ania w wyniku odci\u0119cia zasilania) jako sytuacj\u0119 awaryjn\u0105 i gwarantuje, \u017ce dane na dysku s\u0105 nienaruszone w ka\u017cdym momencie. Aby zapobiec utracie integralno\u015bci i danych, zastosowano mechanizm copy-on-write (COW), w kt\u00f3rym zmiany nie nadpisuj\u0105 informacji, lecz s\u0105 zapisywane w nowym miejscu.\n<li class=\"l\"> Atomowo\u015b\u0107 wykonywania operacji, takich jak usuwanie i zmiana nazwy, nawet w przypadku utraty zasilania w trakcie ich wykonywania. Zmiany w pliku s\u0105 zapisywane na dysku dopiero po wywo\u0142aniu sync lub close. Niesp\u00f3jno\u015bci wywo\u0142ane operacjami, kt\u00f3re nie mog\u0105 by\u0107 wykonane atomowo, s\u0105 rozwi\u0105zywane przez specjalny procesor deorphan, kt\u00f3ry przeszukuje ca\u0142e drzewo FS po za\u0142adowaniu.\n<li class=\"l\"> Wsparcie dla funkcji podobnych do POSIX do pracy z plikami i katalogami.  <\/ul>\n<p>Zawarto\u015b\u0107 plik\u00f3w w LittleFS jest reprezentowana przez listy COW (Copy-On-Write) CTZ, co zapewnia z\u0142o\u017cono\u015b\u0107 O(1) przy dodawaniu i O(nlogn) przy odczycie. Przydzielanie blok\u00f3w odbywa si\u0119 poprzez skanowanie systemu plik\u00f3w w celu zidentyfikowania u\u017cywanych blok\u00f3w w obszarze o sta\u0142ej wielko\u015bci, przechowywanym w postaci wektora bitowego. Aby upro\u015bci\u0107 skanowanie, wszystkie katalogi s\u0105 cz\u0119\u015bci\u0105 listy powi\u0105zanej, obejmuj\u0105cej ca\u0142y system plik\u00f3w. Je\u015bli podczas zapisywania bloku wyst\u0105pi b\u0142\u0105d, przydzielany jest nowy blok, a dane s\u0105 w nim przenoszone.     <\/p>\n<p>W\u015br\u00f3d zmian w nowej wersji LittleFS:  <\/p>\n<ul>\n<li class=\"l\"> Przerobiono kod analizy \u015bcie\u017cek plik\u00f3w, co pozwoli\u0142o przybli\u017cy\u0107 dzia\u0142anie systemu plik\u00f3w do system\u00f3w POSIX oraz oczekiwa\u0144 u\u017cytkownik\u00f3w w takich sytuacjach, jak zako\u0144czenie \u015bcie\u017cki uko\u015bnikiem, obr\u00f3bka pustych \u015bcie\u017cek i nawigacja poza korzeniem systemu plik\u00f3w.\n<li class=\"l\"> Dodano dwa nowe przyk\u0142ady urz\u0105dze\u0144 blokowych ramcrc32bd oraz ramrsbd, kt\u00f3re wdra\u017caj\u0105 mechanizm korekcji b\u0142\u0119d\u00f3w kompatybilny z LittleFS. W obecnej formie w samym systemie plik\u00f3w LittleFS brakuje wsparcia dla wykrywania i korekcji b\u0142\u0119d\u00f3w, a operacje te s\u0105 przenoszone na poziom urz\u0105dze\u0144 blokowych.\n<li class=\"l\"> Funkcja lfs_mkdir zyska\u0142a wsparcie dla ko\u0144cowych slashy, tzn. wywo\u0142anie lfs_mkdir(&#171;a\/&#187;) nie generuje teraz b\u0142\u0119du.\n<li class=\"l\"> W funkcjach lfs_stat i lfs_getattr teraz wy\u015bwietla si\u0119 b\u0142\u0105d przy u\u017cywaniu ko\u0144cowych uko\u015bnik\u00f3w, je\u015bli istniej\u0105ca w systemie plik\u00f3w \u015bcie\u017cka nie jest katalogiem.\n<li class=\"l\"> Pr\u00f3ba otwarcia pliku za pomoc\u0105 funkcji lfs_file_open z ko\u0144cowym uko\u015bnikiem w nazwie teraz prowadzi do b\u0142\u0119du LFS_ERR_NOTDIR, je\u015bli plik nie jest katalogiem w systemie plik\u00f3w, LFS_ERR_ISDIR, je\u015bli nazwa odnosi si\u0119 do katalogu w systemie plik\u00f3w, oraz LFS_O_CREAT, je\u015bli plik nie istnieje.\n<li class=\"l\"> Pr\u00f3ba dost\u0119pu poza granice korzeniowego FS, np. lfs_stat(&#171;\/..\/a&#187;), teraz prowadzi do wygenerowania b\u0142\u0119du.\n<li class=\"l\"> Wskazanie pustej \u015bcie\u017cki nie jest ju\u017c synonimem odwo\u0142ania si\u0119 do katalogu g\u0142\u00f3wnego, tzn. wywo\u0142anie lfs_stat(&#171;&#187;) spowoduje wygenerowanie b\u0142\u0119du.    <\/ul>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=62398\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 LittleFS 2.10, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0443\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432. \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0444\u0430\u0439\u043b\u043e\u0432\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0431\u044b\u043b\u0430 \u0441\u043e\u0437\u0434\u0430\u043d\u0430 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u0435\u0439 ARM \u0434\u043b\u044f \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b Mbed OS, \u043d\u043e \u0437\u0430\u0442\u0435\u043c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0430 \u0432 \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0435\u043a\u0442. \u041a\u043e\u0434 \u0424\u0421 \u043d\u0430\u043f\u0438\u0441\u0430\u043d \u043d\u0430 \u044f\u0437\u044b\u043a\u0435 \u0421\u0438 \u0438 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0434 \u043b\u0438\u0446\u0435\u043d\u0437\u0438\u0435\u0439 BSD. \u042d\u0442\u0430\u043b\u043e\u043d\u043d\u0430\u044f \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f LittleFS \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u0421\u0438-\u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438, \u043d\u0430 \u0431\u0430\u0437\u0435 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u0441\u043e\u0437\u0434\u0430\u043d FUSE-\u043c\u043e\u0434\u0443\u043b\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-120974","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 LittleFS 2.10, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0443\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/news\/vypusk-otkazoustojchivoj-fajlovoj-sistemy-littlefs-2-10\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b LittleFS 2.10 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 LittleFS 2.10, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0443\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/news\/vypusk-otkazoustojchivoj-fajlovoj-sistemy-littlefs-2-10\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2024-12-13T13:46:01+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2024-12-13T13:46:01+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Wydanie systemu plik\u00f3w odpornego na awarie LittleFS 2.10 | ProHoster","description":"Opublikowano wydanie projektu LittleFS 2.10, rozwijaj\u0105cego kompaktowy system plik\u00f3w dla urz\u0105dze\u0144 wbudowanych i mikro kontroler\u00f3w.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/news\/vypusk-otkazoustojchivoj-fajlovoj-sistemy-littlefs-2-10","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0412\u044b\u043f\u0443\u0441\u043a \u043e\u0442\u043a\u0430\u0437\u043e\u0443\u0441\u0442\u043e\u0439\u0447\u0438\u0432\u043e\u0439 \u0444\u0430\u0439\u043b\u043e\u0432\u043e\u0439 \u0441\u0438\u0441\u0442\u0435\u043c\u044b LittleFS 2.10 | ProHoster","og:description":"\u041e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043d \u0432\u044b\u043f\u0443\u0441\u043a \u043f\u0440\u043e\u0435\u043a\u0442\u0430 LittleFS 2.10, \u0440\u0430\u0437\u0432\u0438\u0432\u0430\u044e\u0449\u0435\u0433\u043e \u043a\u043e\u043c\u043f\u0430\u043a\u0442\u043d\u0443\u044e \u0444\u0430\u0439\u043b\u043e\u0432\u0443\u044e \u0441\u0438\u0441\u0442\u0435\u043c\u0443 \u0434\u043b\u044f \u0432\u0441\u0442\u0440\u0430\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u0441\u0442\u0440\u043e\u0439\u0441\u0442\u0432 \u0438 \u043c\u0438\u043a\u0440\u043e\u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432.","og:url":"https:\/\/prohoster.info\/pl\/blog\/news\/vypusk-otkazoustojchivoj-fajlovoj-sistemy-littlefs-2-10","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2024-12-13T13:46:01+00:00","article:modified_time":"2024-12-13T13:46:01+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"120974","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":"default","schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 08:53:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2026-01-23 08:53:19","updated":"2026-01-23 08:53:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/120974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=120974"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/120974\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=120974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=120974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=120974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}