Storia dei file system distribuiti

Completato

Per riassumere, un file system distribuito (DFS) è un file system con file distribuiti tra più file server. È importante notare che in un file system distribuito il client visualizza un singolo spazio dei nomi globale che include tutti i file in tutti i server file system. Un file system DFS richiede la gestione dei metadati, in modo che i client possano individuare i file e i blocchi di file necessari nei file server. Questi file system vengono in genere distribuiti su più nodi di condivisione di file e usati da più utenti contemporaneamente. Come per qualsiasi risorsa condivisa, è necessario considerare più considerazioni di progettazione: prestazioni, coerenza, tolleranza di errore, disponibilità sono alcune di esse.

Origini ed evoluzione dei file system distribuiti

I file system sono stati ampiamente influenzati dal file system UNIX e da Fast File System (FFS) di BSD, usati come file system locali. È bene ricordare che l'obiettivo principale di questi file system è organizzare i dati su disco in modo rapido e affidabile.

I file system di rete, ad esempio NFS, sono stati introdotti per consentire agli utenti di condividere file in una rete. Il file system NFS usa un'architettura client-server, in cui un server può condividere i dati che contiene con un certo numero di client. Si tratta di un protocollo semplice che continua a essere usato per la condivisione di file in una rete. I file non possono essere distribuiti tra più server in modo coordinato nel file system NFS, ma ogni server può semplicemente condividere un certo numero di file. Non esiste neanche una visualizzazione globale coerente dello spazio dei nomi. I client possono montare condivisioni NFS ovunque all'interno dell'albero del file system locale. Di conseguenza, questo approccio è limitato per quanto riguarda la possibilità di ridimensionamento in base a migliaia di client/server e all'uso in reti locali (LAN).

Andrew File System (AFS) è un esempio iniziale di un vero e proprio file system distribuito. Il file system AFS consente a host cooperativi (client e server) di condividere in modo efficiente le risorse del file system tra le reti locali e WAN. Il file system AFS è costituito da celle, un raggruppamento amministrativo di server che presentano un solo file system coeso. Le celle possono essere combinate per formare un singolo spazio dei nomi globale. Tutti i client che accedono ai dati dal file system AFS copiano prima di tutto il file in locale nel client. Le modifiche al file vengono apportate in locale mentre il file è aperto. Quando il file viene chiuso, il client AFS sincronizza di nuovo le modifiche nel server. Un'evoluzione di AFS è CODA, ovvero un file system distribuito che migliora le caratteristiche di AFS, in particolare per quanto riguarda la semantica di condivisione e la replica. AFS e CODA sono entrambi conformi a POSIX, ovvero funzionano con applicazioni UNIX esistenti senza alcuna modifica.

Nel 2003 Google ha rivelato la progettazione del suo file system distribuito, detto GFS2, progettato da zero per offrire accesso efficiente e affidabile ai dati usando grandi cluster di hardware. Il file system GFS è progettato per archiviare file di dimensioni molto grandi come blocchi archiviati in più server (in genere da 64 MB), in modo replicato. Sebbene il file system GFS disponga di una singola visualizzazione client come AFS, la posizione dei blocchi di file viene esposta all'utente, per consentire di recuperare i file dalla replica disponibile più vicina. Tuttavia, il file system GFS non è conforme a POSIX e di conseguenza le applicazioni devono ricorrere a un'API speciale per usare GFS. Hadoop Distributed File System (HDFS) è una variante open source del file system GFS che verrà esaminata in dettaglio in questo modulo.

Nel 2006 in un documento di Weil e altri1 viene descritto per la prima volta Ceph. Ceph è progettato come servizio di archiviazione di oggetti distribuito che può essere ridimensionato fino a centinaia di migliaia di computer, archiviando diversi petabyte di dati. Le applicazioni comunicano quindi con Ceph tramite diverse API, da un'API nativa simile al funzionamento del file system GFS a un'API file system conforme a POSIX denominata Ceph FS. Ceph supporta anche un'astrazione basata su dispositivi a blocchi, che lo rende un file system adatto per l'archiviazione di immagini di macchina virtuale.

Google ha elaborato il file system GFS in un sistema noto come Colossus3.


Riferimenti

  1. Weil, S. A., Brandt, S. A., Miller, E. L., & Maltzahn, C. (2006). Ceph: A scalable, high-performance distributed file system Documentazione del settimo simposio sulla progettazione e sull'implementazione dei sistemi operativi, 307-320
  2. Sanjay Ghemawat, Howard Gobioff e Shun-Tak Leung (2003). The Google File Systems Diciannovesimo simposio ACM sui principi dei sistemi operativi
  3. McKusick, Kirk e Quinlan, Sean (marzo 2010). GFS: Evolution on Fast-forward Communications of the ACM