Smart File System
Lo Smart File System o SFS è un filesystem journaling usato sui sitemi Amiga.
Il design di SFS è ottimizzato per essere performante e garantire scalabilità e integrità. Usa diverse grandezze di blocco a partire da 512 byte x blocco (2^9) fino a 32768 byte (2^15), e la grandezza massima totale della partizione è variabile. Il valore "grandezza massima" che una partizione può assumere parte da 1 terabyte (1024 Gigabyte) se applicata a blocchi di 512 byte, e può ulteriormente aumentare, a seconda della grandezza massima di blocco adoperata.
Una delle caratteristiche più performanti è realizzata raggruppando voci di directory multiple in un singolo blocco e raggruppando blocchi di metadata insieme in cluster. Una bitmap è utilizzata per tenere traccia dello spazio libero, e tiene traccia dei dati file usando extent (blocchi logici continui) disposti in una struttura ad albero B+ (detta anche ad albero "bilanciato") ereditata dalla tecnologia di database).
L'integrità è mantenuta da un log di rollback ("annullamento") di tutti i cambiamenti fatti ai metadata in un periodo di tempo determinato. Prima viene scritto il log sul disco, e in seguito i blocchi metadata sono sovrascritti direttamente. Se il sistema dovesse andare in crash, la volta successiva che il filesystem viene montato si accorgerà della procedura incompleta e ritornerà con una procedura appunto di "rollback" (letteralmente come il riavvolgersi di un nastro) all'ultimo stato coerente. Per ragioni di performance viene garantita solo l'integrità dei metadata. Allo stato attuale i dati nei file possono ancora essere corrotti se una operazione di scrittura viene interrotta a metà.
Una interessante peculiarità dello Smart FS è l'abilità di deframmentarsi al volo, mentre il filesystem è in uso, permettendo tale operazione anche sui file che devono obbligatoriamente risiedere in posizioni fisse del disco rigido. Il processo di deframmentazione è quasi completamente "stateless" (eccetto che nella locazione del disco rigido su cui dee lavorare). Durante la deframmentazione l'integrità dei dati è assicurata contemporaneamente sia per i metadata, sia per i dati.
Storia
SFS è un sistema operativo libero scritto in C originariamente da John Hendrikx nel 1998. Quando questi si allontanà dalla scena Amiga nel 2000, rilasciò pubblicamente i sorgenti di SFS alla comunità. Lo sviluppo di SFS è stato continuato da sviluppatori indipendenti.