# Amiga Fast File System

HINWEIS: Nicht zu verwechseln mit dem Berkeley Fast File System
Das Amiga Fast File System (kurz AFFS, historisch häufiger FFS) ist ein Dateisystem, das auf dem Amiga Personal Computer verwendet wurde.
Das vorherige Amiga-Dateisystem hatte nie einen spezifischen Namen und war ursprünglich einfach als „DOS“ oder AmigaDOS bekannt. Nach der Veröffentlichung von FFS wurde das ursprüngliche Dateisystem als Amiga Old File System (OFS) bekannt. OFS, das in erster Linie für den Einsatz mit Disketten entwickelt worden war, erwies sich als zu langsam, um mit den Festplatten der damaligen Zeit Schritt halten zu können.
FFS wurde als vollständiger Ersatz für das ursprüngliche Amiga-Dateisystem entwickelt. FFS unterscheidet sich von seinem Vorgänger hauptsächlich durch die Eliminierung redundanter Informationen. Die Datenblöcke enthalten nur Daten, so dass das Dateisystem die Übertragung großer Datenmengen direkt vom Hostadapter zum endgültigen Ziel verwalten kann.

## Geschichte

FFS wurde mit Version 1.3 des AmigaOS 1988 eingeführt und ersetzte sowohl das Kickstart-ROM (bzw. die Kickstart-Diskette für Amiga1000) als auch die Workbench-Diskette durch aktualisierte Software. Sie trug wie auch der Rest der AmigaOS 1.3-Komponenten die Versionsnummer v34.
Kickstart 1.3 enthielt Autoboot-Unterstützung, so dass der Amiga nun sowohl von der Festplatte als auch von der reset-sicheren RAM-Disk („RAD:“) gebootet werden konnte. Frühere Kickstart-Versionen konnten nur von Diskette booten. Workbench 1.3 stellte das FFS-Dateisystem auf Diskette zur Verfügung, das in den RDB (Rigid Disk Block) auf Festplatten kopiert werden konnte. Konforme Blockgeräte luden und installierten dann den Dateisystemtreiber, bevor Dateisysteme gemountet wurden, und ermöglichten so die Verwendung von ladbaren Dateisystemen auf Festplatten. Kickstart 1.2 konnte Workbench 1.3 von Diskette booten (und umgekehrt), aber man brauchte sowohl Kickstart als auch Workbench 1.3, um FFS-formatierte Festplatten automatisch zu booten.
Ab Kickstart 2.0 wurde die FFS-Dateisystem in das ROM integriert, so dass es nicht mehr notwendig war, FFS im RDB zu installieren. Die Option, Dateisysteme aus dem RDB zu laden, wurde jedoch beibehalten, um Fehler im ROM zu beheben, neue FFS-Funktionen zu nutzen oder ein Dateisystem eines anderen Herstellers zu verwenden.
Disketten sind unpartitionierte Geräte ohne RDB und kannten daher auch keinen Autoboot-Mechanismus. Sie waren nur bootfähig, wenn der DOS-Typ der Diskette einer war, dass das Dateisystem im ROM verstand. Daher waren FFS-formatierte Disketten bis zur Veröffentlichung von Kickstart 2.0 nicht bootfähig, und das Mounten unter Workbench 1.3 erforderte einige Hacks. Auch die „Directory Cache“-Varianten waren bis Kickstart 3.0 weder bootfähig noch wurden sie unterstützt. Die verschiedenen FFS-Varianten hatten keine Kompatibilitätsprobleme mit Amiga-Software, da diese entweder die Systemaufrufe nutzte und daher mit jedem Dateisystem funktionierte, oder sie war ein „Trackloader“ und benutzte überhaupt kein Dateisystem.
FFS arbeitet in verschiedenen Modi, die durch sogenannte „DOS-Typen“ definiert werden. AmigaOS-Dateisysteme werden durch einen Vier-Buchstaben-Deskriptor identifiziert, der entweder im RDB, in einer Einhänge-Liste oder einem DOSdriver angegeben wird. Alternativ, wie es bei trackdisk-ähnlichen Geräten wie Disketten der Fall war, kann die Diskette selbst in jedem DOS-Typ formatiert werden. Diese können eine Blockgröße zwischen 512 Bytes und 32 Kilobytes verwenden, sowie als multi-user file system (muFS) bezeichnetes Äquivalent zu AFFS vorliegen. Das FFS des AmigaOS 1.3 kannte zwei verschiedene Modi dieses Dateisystems, deren FFS-DOS-Typen die folgenden waren:

### DOS\0

    Der Modus für das ursprüngliche Amiga-Dateisystem („OFS,“ original file system) für Disketten, auch als „altes“ Amiga-Dateisystem („OFS,“ old file system) bezeichnet. Es wurde aus Kompatibilitätsgründen beibehalten. Dies bedeutete, dass auch Nutzer mit OFS-formatierten Laufwerken diese lesen konnten, wenn FFS im RDB installiert war. Die meisten Disketten, die von Software-Firmen oder als Magazin-Coverdisks ausgeliefert wurden, verwendeten diesen DOS-Typ, so dass sie auf Amiga mit Workbench < 2.x wie dem Amiga 500 booten konnten.

### DOS\1

    Das erste Amiga Fast File System (FFS oder AFFS). Das neue Dateisystem, FFS. Die erste (diskettenbasierte) Version von FFS kannte keine weiteren Modi.
Mit AmigaOS 2.04 wurde FFS in der Version 37 ein Teil des Kickstart-ROMs. Damit einhergehend wurden zusätzliche Modi für die korrekten Umwandlung von Groß- und Kleinschreibung der Akzentzeichen (diakritischer Zeichen) eingeführt. Zudem wurde ein On-Disk-Verzeichnis-Cache hinzugefügt. Jeder dieser neuen Modi war als OFS- und als FFS-DOS-Typ verfügbar. Dieses ungerade System diente der Parität: OFS-Modi mit Ausnahme von DOS\0 wurden fast nie verwendet, waren aber dennoch verfügbar. (Obwohl diese Modi auf OFS basierten, waren sie nicht kompatibel mit Amiga-Systemen ohne FFS).
Die folgenden vier neuen DOS-Typen wurden mit v37 des FFS eingeführt:

### DOS\2

    Der internationale Modus für OFS (OFS-INTL). Dieser ermöglichte es, Dateinamen mit Akzentzeichen (diakritischer Zeichen) zu verwenden (d. h. solche Zeichen, die im lateinischen Zeichensatz nicht vorkommen wie zum Beispiel ä und ê).

### DOS\3

    Der internationaler Modus für FFS (FFS-INTL). Dies war der am häufigsten verwendete FFS-Modus. Bei allen höheren DOS-Typen ist der internationale Modus immer aktiviert.

### DOS\4

    Verzeichnis-Caching für OFS (OFS-DC). Über einen einfachen Cache-Mechanismus wurden dedizierte Verzeichnislisten erstellt, anstatt die verknüpften Verzeichnis- und Dateieinträge, die auf dem Speichermedium verstreut sind, zu sammeln. Zum Speichern der Verzeichnisdaten wurde ein gewisser (kleiner) Speicherbereich reserviert. Dies verbesserte die Lesegeschwindigkeit von Verzeichnissen drastisch, aber das Erstellen, Löschen und Umbenennen von Dateien wurde langsamer. Die Lesegeschwindigkeit für einzelne Dateien blieb unverändert.
Es wurde zu einer beliebten Wahl auf Amiga-Festplatten, aber laut Olaf Barthel, dem Programmierer von FFS2, ist die Verwendung von Modi mit Verzeichnis-Caching besser für Disketten als für Festplatten geeignet, wo es zu einer allgemeinen Verschlechterung der Performance im Vergleich zu den DOS-Modi ohne Verzeichnis-Caching führt. Trotzdem wurde dieser Modus auf Disketten nur selten verwendet, da der Cache wertvollen Speicherplatz verbrauchte und der begrenzte Platz eine große Anzahl von Dateien von vornherein verhinderte. Dem Verzeichnis-Caching-Modus fehlt eine automatische Speicherbereinigung, was bedeutet, dass teilweise gefüllte Cache-Blöcke nie konsolidiert werden und weiterhin Platz verbrauchen.

### DOS\5

    Verzeichnis-Caching für FFS (FFS-DC). Beide Modi waren mit früheren Versionen von FFS nicht rückwärts kompatibel.
Version 40.1 war die letzte von Commodore veröffentlichte FFS-Version und wurde mit AmigaOS 3.1 sowohl auf Disketten als auch im ROM ausgeliefert. Danach erschienen mehrere inoffizielle Patches, die den Einsatz auf Festplatten mit einem 64-Bit-Adressierungssystem namens TrackDisk64 bzw. TD64 über die ersten 2 GB hinaus erlaubten, die die Versionsnummer v44 trugen. Die 2-GB-Dateigrößenbeschränkung und die 127-GB-Partitionsgrößenbeschränkung blieben aber bestehen, da dies eine Beschränkung der AmigaOS dos.library und aller damals aktuellen Amiga-Software war. Die Version von FFS, die mit AmigaOS 3.5 und 3.9 mitgeliefert wurde, war v45 und unterschied sich durch ein anderes 64-Bit-Adressierungssystem, das sogenannte New Style Device oder NSD.
In jüngerer Zeit (ab 2003) haben MorphOS and AmigaOS 4 Unterstützung für ein leicht aktualisiertes „FFS2“ von Olaf Barthel (FFS v46 bzw. v50) eingeführt. Dieses ist zum älteren FFS kompatibel. Es ist PowerPC-nativ und hat zwei weitere DOS-Typen eingeführt (die vom älteren FFS nicht gelesen werden können):

### DOS\6

    Lange Dateinamen für OFS (OFS-LNFS). Dies erlaubte längere Dateinamen (bis zu 107 Zeichen) als das übliche Amiga-Limit von 31 Zeichen.[7]

### DOS\7

    Lange Dateinamen für FFS (FFS-LNFS).
Für die LNFS-DOS-Typen gab es keine Verzeichnis-Caching-Modi; der internationale Modus war immer aktiviert.
Trotz der Möglichkeit, lange Dateinamen zu verwenden, galt FFS damals als weniger leistungsfähig als andere verfügbare Amiga-Dateisysteme. Abgesehen von den zusätzlichen DOS-Typen gibt es nur wenige funktionale Unterschiede zwischen FFS und FFS2 (obwohl einige ältere, nicht spezifizierte Fehler behoben wurden). Es wird allgemein empfohlen, es nur für ältere Zwecke zu verwenden. Die Festplattenvalidierung ist in FFS2 weiterhin erforderlich und kann wie bereits in FFS zu Datenverlust führen.
Im September 2018 veröffentlichte Hyperion Entertainment AmigaOS 3.1.4 (basierend auf den Quellen von AmigaOS 3.1). Es enthielt ein aktualisiertes FFS V46 im Kickstart-ROM und unterstützte nativ die APIs für TD_64, NSD sowie die klassischen 32-Bit TD_ Speicheraufrufe. Dies ermöglichte es AmigaOS v3.x, große Medien (> 4 Gigabyte) zu verwenden und von diesen zu booten. Außerdem waren Partitionsgrößen von > 2 Gigabyte möglich. Das Update 3.1.4.1 vom Juli 2019 enthielt ein zusätzliches, dateibasiertes Update für FFS. Im Mai 2021 wurde ein aktualisiertes AmigaOS 3.2 veröffentlicht und bot ein ROM-basiertes V47 FFS-Update, wodurch es schneller und multithreaded wurde.

## Weitere Implementierungen

Es gab nur wenige andere Implementierungen, die in der Lage waren, FFS-Dateisysteme zu lesen, die normalerweise einen Amiga-Emulator und eine Kopie des Betriebssystem-ROMs zum Lesen benötigten. Insbesondere die Unterstützung für AFFS (Amiga Fast File System) kann in den Linux-Kernel einkompiliert werden und bietet volle Lese-, Schreib- und Formatierungsunterstützung für FFS- und OFS-Partitionen aller DOS-Typen (außer DOS\6 und DOS\7, die nur selten genutzt wurden).
Für den Amiga gab es die Freeware-Anwendung XFileSystem (kurz xfs, nicht zu verwechseln mit xFS oder XFS), die neben vielen anderen Dateisystemen auch OFS- und FFS-formatierte Laufwerke lesen und schreiben konnte. Es war auch das einzige Dateisystem für den Amiga (neben FFS/FFS2 selbst), das dies konnte. Allerdings wurden weder die DOS\6 oder DOS\7 Modi noch das Formatieren von Laufwerken unterstützt.