# Andrew file system

Il file system Andrew, o AFS è un file system distribuito sviluppato dalla Carnegie Mellon University, all'interno del progetto Andrew. Il nome è stato dato in onore di Andrew Carnegie e Andrew Mellon. L'utilizzo principale di questo file system è nell'elaborazione distribuita.

## Caratteristiche

Il file system Andrew ha diversi vantaggi rispetto ai tradizionali file system distribuiti, in particolare riguardo alla sicurezza e alla scalabilità. Non è raro in ambito commerciale che questo file system supporti oltre 50.000 clients. AFS utilizza Kerberos per eseguire le autenticazioni, e implementa liste per il controllo degli accessi alle singole cartelle per utenti e gruppi. Il caching a livello del client permette un miglioramento delle prestazioni, e limita l'accesso al file system in caso di un crash del server o un sovraccarico della rete. Nell'AFS i file vengono mantenuti nella cache su richiesta della singola workstation. Le operazioni di lettura e scrittura vengono eseguite direttamente sulla copia mantenuta nella cache locale. Quando un file che ha subito delle modifiche viene chiuso, la parte modificata viene copiata sul file presente sul server. La consistenza della cache viene mantenuta da un meccanismo denominato callback. Quando un file si trova nella cache di un client, il server ne prende nota, e in caso tale file venga modificato, si impegna a notificarlo ai client che ne hanno una copia. Tale meccanismo viene a cadere e quindi riavviato ogni qualvolta un server, un client o un errore nella rete creino un time-out. Il ripristino del callback consta nel controllo dello stato dei file nelle cache dei vari client e non richiede la ritrasmissione dei file.
Una conseguenza della strategia di sicurezza adottata nel file system è che AFS non supporta un vasto database condiviso, o l'aggiornamento dei record di file condivisi tra client. Questo è una deliberata scelta progettuale basata sulle necessità dell'ambiente di elaborazione utilizzato nell'università.
Una caratteristica peculiare dell'AFS è il volume, una organizzazione gerarchica ad albero dei file e delle cartelle di ordine inferiore. I volumi sono creati dall'amministratore e collegati a specifici nomi di percorso in una cella AFS. Una volta creato, gli utenti del file system possono creare cartelle e file, senza preoccuparsi della locazione fisica dei dati. Un volume può avere una quota assegnata, in modo da limitare lo spazio a disposizione per l'immagazzinamento dei dati. A seconda delle necessità, l'amministratore può trasferire un volume su un diverso server o una diversa locazione del disco, tale procedura risulta trasparente agli utenti.
I volumi AFS possono essere duplicati in copie di sola lettura. Quando viene eseguito un accesso a tali copie, i client possono accedere a copie dei file in sola lettura. Inoltre gli utenti non sono coscienti della locazione spaziale della propria copia di sola lettura; l'amministratore può creare e spostare tali volumi a seconda delle necessità. AFS garantisce che i dati presenti in un volume di sola lettura siano consistenti con quelli del volume modificabile al momento della creazione del volume stesso.
Lo spazio dei nomi dei file su una postazione di Andrew è diviso in condiviso e locale. Lo spazio dei nomi condiviso è identico per tutte le postazioni. Lo spazio dei nomi locali è unico per ogni postazione. Esso contiene file temporanei a utilizzo della singola postazione e link simbolici a file presenti nello spazio dei nomi condiviso.
Il file system Andrew ha profondamente influenzato la versione 4 del popolare file system della Sun Microsystems, Network File System (NFS). Inoltre, una variante del AFS, il Distribuited File System (DFS) è stato adottato dalla Open Software Foundation nel 1989 come parte del loro ambiente di elaborazione distribuito.
Esistono tre maggiori implementazioni del file system, Transarc (IBM), OpenAFS e Arla. Inoltre è anche il predecessore di file system Coda.