Veröffentlichung des ausfallsicheren Dateisystems LittleFS 2.10.

Die Veröffentlichung des Projekts LittleFS 2.10 wurde veröffentlicht, das ein kompaktes Dateisystem für eingebettete Geräte und Mikrocontroller entwickelt. Ursprünglich wurde das Dateisystem von ARM für das Betriebssystem Mbed OS erstellt, später jedoch als eigenständiges Projekt ausgegliedert. Der Code des Dateisystems ist in C geschrieben und wird unter der BSD-Lizenz veröffentlicht. Die Referenzimplementierung von LittleFS wird als C-Bibliothek bereitgestellt, auf deren Grundlage ein FUSE-Modul und Bindungen für verschiedene Programmiersprachen entwickelt wurden.

Merkmale von LittleFS:

  • Geringe Ressourcenanforderungen und Unterstützung für den Betrieb unter eingeschränkten RAM-Größen. In der Implementierung von LittleFS werden nur statisch definierte Puffer verwendet (ohne dynamische Speicherzuweisung), und rekursive Aufrufe werden nicht verwendet, wodurch die Größe des verbrauchten Arbeitsspeichers und der Hilfsstrukturen von LittleFS auf dem Speicherträger immer konstant bleibt, unabhängig davon, was im Dateisystem geschrieben wird und wie groß der Speicher ist.
  • Mittel zur Ausgleichung des Verschleißes von Flash-Speichern (Wear Leveling), die eine Minimierung der Wiederverwendung von Blöcken ermöglichen und die Löschoperationen gleichmäßig auf den Flash-Speicher verteilen, dessen Controller diese Aufgabe nicht löst.
  • Sehr hohe Fehlertoleranz — Das Dateisystem betrachtet ein unerwartetes Herunterfahren (Abschalten durch Stromausfall) als normalen Zustand und garantiert, dass die gespeicherten Daten zu jeder Zeit intakt sind. Um die Integrität zu wahren und Datenverlust zu verhindern, wird der Mechanismus Copy-on-Write (COW) verwendet, bei dem Änderungen nicht überschrieben, sondern an einem neuen Ort gespeichert werden.
  • Atomare Durchführung von Operationen wie Löschen und Umbenennen, selbst im Falle eines Stromausfalls während ihrer Ausführung. Änderungen an Dateien werden erst nach dem Aufruf von sync oder close auf die Festplatte geschrieben. Inkonsistenzen, die durch nicht atomare Operationen verursacht werden, werden von einem speziellen Deorphan-Handler behoben, der den gesamten Baum des Dateisystems nach dem Booten durchläuft.
  • Unterstützung für POSIX-ähnliche Funktionen zur Verwaltung von Dateien und Verzeichnissen.

Der Inhalt von Dateien im LittleFS wird durch COW-Listen (Copy-On-Write) dargestellt, die eine Komplexität von O(1) beim Hinzufügen und O(nlogn) beim Lesen bieten. Die Blöcke werden durch das Scannen des Dateisystems auf verwendete Blöcke in einem festgelegten Bereich, der als Bitvektor gespeichert ist, zugewiesen. Um das Scannen zu erleichtern, sind alle Verzeichnisse Teil einer verketteten Liste, die das gesamte Dateisystem umfasst. Wenn beim Schreiben eines Blocks ein Fehler auftritt, wird ein neuer Block zugewiesen und die Daten werden in diesen übertragen.

Zu den Änderungen in der neuen Version von LittleFS gehören:

  • Der Code zur Analyse von Dateipfaden wurde überarbeitet, was das Verhalten des Dateisystems näher an die POSIX-Systeme und die Erwartungen der Benutzer in Situationen wie das Beenden des Pfades mit einem Slash, die Verarbeitung leerer Pfade und die Navigation über die Grenze des Wurzelverzeichnisses ermöglicht hat.
  • Es wurden zwei neue Beispiele für Blockgeräte ramcrc32bd und ramrsbd hinzugefügt, die einen Fehlerkorrekturmechanismus implementieren, der mit LittleFS kompatibel ist. In der aktuellen Form unterstützt das LittleFS-Dateisystem selbst keine Fehlererkennung und -korrektur, und diese Operationen werden auf die Ebene der Blockgeräte verlagert.
  • Die Funktion lfs_mkdir unterstützt jetzt abschließende Schrägstriche. Das bedeutet, dass der Aufruf von lfs_mkdir("a/") nun nicht mehr zu einer Fehlermeldung führt.
  • In den Funktionen lfs_stat und lfs_getattr wird jetzt ein Fehler angezeigt, wenn abschließende Schrägstriche verwendet werden, wenn der vorhandene Pfad im Dateisystem kein Verzeichnis ist.
  • Ein Versuch, eine Datei mit einem abschließenden Schrägstrich im Namen über die Funktion lfs_file_open zu öffnen, führt jetzt zu einem Fehler LFS_ERR_NOTDIR, wenn die Datei kein Verzeichnis im Dateisystem ist, LFS_ERR_ISDIR, wenn der Name auf ein Verzeichnis im Dateisystem verweist, und LFS_O_CREAT, wenn die Datei nicht existiert.
  • Ein Versuch, über die Grenze des Wurzel-Dateisystems hinaus zuzugreifen, wie lfs_stat("/../a"), führt nun zu einer Fehlermeldung.
  • Das Angeben eines leeren Pfads ist jetzt kein Synonym mehr für den Zugriff auf das Wurzelverzeichnis. Ein Aufruf von lfs_stat(" ") führt zu einer Fehlermeldung.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster