# Smart File System

Das Smart File System (kurz SFS) ist ein Journaling-Dateisystem für Amiga-Computer und AmigaOS-abgeleitete Betriebssysteme. Es wurde mit dem Ziel entwickelt, die Leistung, Skalierbarkeit und Integrität im Vergleich zu nativen Amiga-Dateisystemen wie dem Amiga Fast File System (FFS) zu verbessern und bietet zudem einige einzigartige Funktionen. SFS ist auch auf modernen Systemen wie MorphOS und AROS verfügbar und kann über spezielle Treiber auf Linux genutzt werden.

## Geschichte

SFS wurde 1998 von John Hendrikx als Freeware entwickelt und erstmals veröffentlicht. Es war das erste Amiga-Dateisystem, das Journaling unterstützte, was die Datenintegrität auch bei plötzlichen Systemabstürzen oder Stromausfällen sicherstellt. Ab dem Jahr 2000, als Hendrikx die Amiga-Szene verließ, wurde der Quellcode von SFS veröffentlicht und die Entwicklung von Joerg Strohmaier für AmigaOS und Ralph Schmidt für MorphOS weitergeführt. Seit Mai 2005 sind die Programme SFSobject und SFSconfig, die zur Verwaltung von SFS-Partitionen dienen, unter der GNU General Public License (GPL) verfügbar. Diese Veröffentlichungen ermöglichte eine stärkere Einbindung der Community in die Weiterentwicklung des Dateisystems, was sich in unzähligen Tools im Aminet widerspiegelt.
SFS wurde kontinuierlich weiterentwickelt und es existieren mittlerweile Versionen für verschiedene AmigaOS-Varianten, MorphOS, AROS und sogar eine Linux-Implementierung, die das Lesen und experimentelle Schreiben von SFS-formatierten Medien ermöglicht. Darüber hinaus wird SFS von GRUB, dem Grand Unified Bootloader, nativ unterstützt. Es existieren auch freie-Software-Treiber für die Nutzung von SFS über UEFI-Systeme. SFS wurde 2008 als eines der wenigen freien und weiterhin genutzten Dateisysteme auf Amiga-Computern hervorgehoben.

### Weiterentwicklung zu SFS/2

Eine bedeutende Weiterentwicklung des Smart File Systems stellt SFS/2 dar, das speziell für die Anforderungen moderner Amiga-Systeme optimiert wurde. SFS/2 hebt die bisherigen Beschränkungen von SFS auf und bietet unter anderem:
* Unterstützung für Partitionen mit einer Größe von mehr als 2 Terabyte durch 64-Bit-Adressen.
* Verbesserte Leistung durch optimierte Algorithmen für den Zugriff auf große Datenmengen.
* Eine verbesserte Kompatibilität mit modernen AmigaOS-Varianten wie AmigaOS 4 und MorphOS sowie älteren Systemen.
SFS/2 wurde als Community-getriebenes Projekt veröffentlicht und erfreut sich weiterhin aktiver Nutzung. Die Weiterentwicklung zeigt, dass auch ältere Dateisysteme an neue Hardware und moderne Anforderungen angepasst werden können. Es ist auf Aminet verfügbar und bietet eine nahtlose Integration in Amiga-Systeme.

## Eigenschaften
### Allgemeine Merkmale

SFS verwendet Blockgrößen von 512 Byte bis 32.768 Byte und unterstützt Partitionen mit einer maximalen Größe von 128 GB. Es bietet eine verbesserte Leistung im Vergleich zu FFS, insbesondere bei großen Festplatten und vielen kleinen Dateien, und gewährleistet die Integrität des Dateisystems durch ein Transaktionsprotokoll, das alle Änderungen an den Metadaten aufzeichnet.

### Journaling und Integrität

Ein herausragendes Merkmal von SFS ist die Verwendung eines Journaling-Systems. Dies bedeutet, dass alle Änderungen an den Metadaten zunächst in einem Transaktionsprotokoll (Journal) gespeichert werden. Diese Technik schützt vor Datenverlust oder Beschädigung im Falle eines unerwarteten Systemabsturzes oder Stromausfalls, da das System beim nächsten Start den letzten konsistenten Zustand wiederherstellt. Das Transaktionsprotokoll wird zunächst in freien Speicherplatz auf der Festplatte geschrieben, bevor die Metadatenblöcke überschrieben werden.
Während das Journaling die Integrität der Metadaten gewährleistet, sind die eigentlichen Dateidaten nicht automatisch vor Beschädigungen geschützt, falls ein Schreibvorgang unterbrochen wird. Trotzdem wird durch das Journaling die Integrität des Dateisystems im Allgemeinen sehr selten gefährdet.
Mit SFS/2 wurde das Journaling weiter optimiert, um bei größeren Partitionen eine noch höhere Zuverlässigkeit zu gewährleisten.

### Defragmentierung

SFS bietet eine selbständige Defragmentierungsfunktion, die auch während der Nutzung des Dateisystems aktiv ist. Diese Funktion funktioniert sogar mit gesperrten Dateien und ist fast vollständig zustandslos, was bedeutet, dass der Vorgang jederzeit unterbrochen und fortgesetzt werden kann, ohne Daten zu gefährden. Das Dateisystem stellt sicher, dass die Metadaten und Dateiinhalt bei der Defragmentierung intakt bleiben. Während dieses Prozesses versucht SFS, Dateien an einen neuen Ort zu verschieben, wenn Fragmentierung droht.

### Verzeichnis gelöschter Dateien

Ein weiteres bemerkenswertes Feature von SFS ist das Verzeichnis gelöschter Dateien, das eine einfache Wiederherstellung von versehentlich gelöschten Dateien ermöglicht. Gelöschte Dateien werden nicht sofort aus dem Dateisystem entfernt, sondern in einem speziellen Bereich abgelegt, aus dem sie später wiederhergestellt werden können.

### Blockstruktur und Dateiverwaltung

SFS verfolgt die Dateidaten mithilfe von Extents, die in einer B+-Baumstruktur organisiert sind. Diese Methode reduziert die Fragmentierung und verbessert die Performance bei der Dateiverwaltung. Zusätzlich wird eine Bitmap verwendet, um den freien Speicherplatz auf der Festplatte effizient zu verwalten.

### Skalierbarkeit und Leistung

Das Smart File System ist speziell für Skalierbarkeit und Leistung konzipiert und eignet sich besonders für große Festplatten und leistungsintensive Anwendungen. Dank der Blockstruktur und der Gruppierung von Verzeichniseinträgen in einzelnen Blöcken sowie der Metadatenblöcke in Clustern kann SFS bei großen Datenmengen eine hohe Geschwindigkeit bei Lese- und Schreiboperationen gewährleisten.

## Bedeutung für die Amiga-Szene

Die Weiterentwicklung des Smart File Systems zu SFS/2 verdeutlicht, dass die Amiga-Szene weit mehr als nur eine Retro-Community ist. Durch Projekte wie SFS/2 wird gezeigt, dass auch klassische Systeme an moderne Anforderungen angepasst werden können. SFS/2 hat nicht nur das Potenzial, bestehende Amiga-Systeme zu verbessern, sondern dient auch als Beispiel für die Innovationskraft einer lebendigen Community.