| FFS (Fast File System) | |
| Fejlesztő | Commodore |
| Bevezetve | 1988 |
| Partícióazonosító | 'DOS\1','DOS\3','DOS\5','DOS\7' |
| Struktúra | |
| Könyvtárszerkezet | hierarchikus |
| Fájlszerkezet | bittérkép |
| Korlátok | |
| Maximális fájlméret | 2 GiB |
| Fájlnév maximális hossza | 32 ('DOS\7': 107) karakter |
| Maximális kötetméret | 2 GiB |
| Tiltott karakterek a fájlnevekben | ':' és '/' |
| Képességek | |
| Tárolt dátumok | módosítás (mtime) |
| Dátumhatárok | 1978. január 1. - 2157 |
| Dátumfelbontás | 1/50s |
| Attribútumok | rwedspah |
| Beépített tömörítés | Nincs |
| Beépített titkosítás | Nincs |
| SIS | Nincs |
| Támogatott operációs rendszerek | AmigaOS |
Az Amiga számítógépek szabványos fájlrendszere a Fast File System (röviden: FFS vagy AFFS) az AmigaOS operációs rendszer 1.3-as verziójától kezdve. A korábbi OFS fájlrendszert váltotta, ugyanakkor az azzal való kompatibilitás megmaradt.
Míg a korábbi OFS alapvetően floppy lemezes használatra lett adaptálva, addig az FFS már merevlemezes használatra lett optimalizálva. Hierarchikus felépítésű, fastruktúrát mutató könyvtárszerkezetű fájlrendszer, mint elődje, azonban új elemként megjelent a fájlrendszerben a link, illetve a nemzetközi karakterek támogatása és a könyvtár gyorsítótár (directory cache).
Az OFS lassabb és kevesebb adatot tárolni képes, ugyanakkor robusztusabb felépítésű, mint az újabb FFS. Ennek fő oka az volt, hogy az OFS fájlrendszerben minden 512 bájt méretű blokk/szektor első 24 bájtja metaadatokat tartalmazott, akkor is, ha ugyanazon allomány helyezkedett el rajtuk. A gyakorlatban ez 512 bájt helyett 488 bájt valós használható blokk-kapacitást jelentett, mely egy kis kapacitású floppy lemezen elfogadható volt, de egy nagyméretű merevlemezen, nagyméretű fájloknál már jelentős kapacitásveszteséget jelent. Az FFS adatblokkonként a teljes 512 bájt lemezterületet adattárolásra használja.
Az FFS fájlrendszernek összesen nyolc különféle módja, más néven dos-típusa (dostype) van, mely a Rigid Disk Block-ban (RDB) tárolódik, hasonlóan a PC-k Master Boot Record-jához (MBR). A nemzetközi támogatás (INTL) idegennyelvi karakterek megjelenítését és kezelését jelenti, a könyvtár-gyorsítótár (DC) a könyvtárbeolvasást gyorsítja egy elkülönített könyvtárstruktúra lista használatával, a hosszúfájlnév támogatás (LNFN) pedig 32 helyett 107 karakteres fájlnevek használatát teszi lehetővé.
| DOS-típus | Fájlrendszer formátum | Megjelenés |
|---|---|---|
| 'DOS\0' | OFS | Workbench 1.0 |
| 'DOS\1' | FFS | Workbench 1.3 |
| 'DOS\2' | OFS INTL | Workbench 2.0 |
| 'DOS\3' | FFS INTL | Workbench 2.0 |
| 'DOS\4' | OFS INTL-DC | Workbench 3.0 |
| 'DOS\5' | FFS INTL-DC | Workbench 3.0 |
| 'DOS\6' | OFS INTL-DC-LNFN | AmigaOS 4.0 |
| 'DOS\7' | FFS INTL-DC-LNFN | AmigaOS 4.0 |
Az amigák MFM kódolást használnak hajlékonylemezek kezelésére. Összesen 80 cilinder található egy floppy lemezen és minden cilinder 2 MFM-sávot (track) tartalmaz, egyet-egyet a lemez két oldalán. Az amigák többsége duplasűrűségű (DD) lemezeket alkalmaz, melyeknél 11 szektor van MFM-trackenként. Az Amiga 4000 által használt nagysűrűségű (HD) lemezeknél ugyanez 22 szektor. A lemezek geometriája összefoglalva így írható le:
A DD-s lemezeken összesen 11 * 2 * 80 = 1760 (0 to 1759) szektor vagy blokk található, míg HD-s lemezek 22 * 2 * 80 = 3520 szektort tartalmaznak. Egy Amiga végül 1760 * 512 / 1024 = 880 KiB adatot tárol DD-s, míg 1760 KiB-ot HD-s floppy lemezeken.
Az FFS fájlrendszer kiindulópontja, az első vagy gyökérblokk (DD esetén a 880. HD esetén az 1760. blokk) a lemez fizikai értelemben vett közepén található, mely így minimalizálja a pozícionálási időt. A pontos pozíció kiszámítása a következő:
numCyls = highCyl - lowCyl + 1 highKey = numCyls * numSurfaces * numBlocksPerTrack - 1 rootKey = INT (numReserved + highKey) / 2
A gyökérblokk alapvető információkat tartalmaz a lemezről, mint például: lemez/kötetnév, formázás dátuma stb, de itt tárolódik a gyökérkönyvtár (root) pozíciója, azaz elérhetősége is.
A '/' és ':' karakterek tiltottak mind fájl-, mind kötetnevek esetén, de ékezetes betűk és a következő karakterek használhatók: *!@#$%|^+&_()=\-[]{}';",<>.? A karakterek lehetnek kis- és nagybetűsek is, de ennek valós jelentősége nincs, mert a fájlrendszer nem különbözteti meg őket egymástól, így például a "MyFile" és a "myfile" egyazon könyvtár azonos fájljára utal.
A Workbench (a későbbiekben: AmigaOS) 1.3 megjelenésével vált lehetővé az automatikus rendszerbetöltés (bootolás) merevlemezekről. Ehhez a Kickstart felkészítésén túl arra is szükség volt, hogy a merevlemez partíciós tábláját tartalmazó RDB magában foglaljon a fájlrendszer kezelésére vonatkozó alapvető információkat.
Az FFS bittérkép (bitmap) útján kezeli a fájlrendszer foglalt vagy szabad blokkjait, mely nem képfájl a szó elterjedt értelmében, hanem valóban egy bitsorozat, melyben minden bit egy címezhető blokkot reprezentál. Az FFS esetében a bit 0 értéke jelenti azt, hogy az adott blokk használt, az 1-es érték pedig azt, hogy üres, azaz szabadon írható. Ha a bittérképet tartalmazó szektor meghibásodik, akkor az egész bittérképet újra kell építeni, addig pedig az egész fájlrendszer használhatatlan. Az újraépítést az Amiga Validator végzi és annál lassabb a folyamat, minél nagyobb a merevlemez kapacitása.
Az FFS-nek is van tárolókapacitás korlátja, mely abból fakad, hogy a fájlrendszer alapból 32-biten képezi le a címteret. A 32-bit címmé alakítása egy elméleti 4,194 GiB-os legnagyobb lemezméretet ad, mely egyben a legnagyobb lehetséges fájlméret korlát is. A későbbiekben a fájlrendszer ezt kiterjesztő javításokat kapott, így az NSD64, a TD64 parancskészletek segítségével a felső korlát 2 EiB-ra tolódott ki.
A blokkok dátummezői a következő struktúrát követik: DAYS, MINS, TICKS, ahol:
A DAYS nulla értéke általában nem megengedett a legtöbb programban és mivel az érték 32-biten tárolódik, ezért az amigák mentesek mind a 2000. év problémájától, mind pedig a 2038. év problémájától.
Az AmigaDOS a fájlok, könyvtárak, linkek elérésére az ún. hasításos keresés módszerét alkalmazza. A függvény kiszámolja, hogy a blokkban mely 32-bites szót használja mutatóként a hash-táblára, mely megadja a konkrét fájl-, link-, vagy könyvtárbejegyzést.
Az FFS partíciós táblájának felépítése teljesen eltér más fájlrendszerek megoldásaitól (pl. MBR). A Linux alapú operációs rendszerek tehetők alkalmassá RDB formátumú Amiga-partíciók beolvasására és kezelésére. Ezek közül is a legújabb NetBSD, illetve az OpenBSD 3.2 támogatja az FFS-t, illetve létezik Amigára portja. A linuxon népszerű partícionáló szoftver, a GNU Parted képes kezelni az FFS fájlrendszerre formázott Amiga-partíciókat.