I più noti esempi di File System Distribuiti sono:
Nonostante la loro larga diffusione hanno caratteristiche molto diverse tra loro.
NFS permette a calcolatori con sistema Unix (ma non solo), che compongono un sistema distribuito, di condividere file, directory od un intero file system utilizzando il modello ad accesso remoto, come se si fosse in presenza di un unico file system logico
Ogni server esporta una o più directory per far accedere i client da remoto.
I client accedono alle directory montandole come parte del proprio file system.
E’ possibile far integrare tra loro f.s. eterogenei, sfruttando un protocollo per la rappresentazione dei dati (external data representation – XDR).
Operazione di montaggio (mount): mount(remotehost, remotedirectory, localdirectory)
Il server mantiene una tabella dei client che hanno montato il file system.
Il client mantiene una tabella dei file system montati che contiene: < IP address, port number, file handle>
.
La versione 2 prevedeva che i server non dovessero conservare memoria degli accessi degli utenti (servizio senza stato). Eventuali meccanismi di blocco delle risorse (Lock) dovevano essere implementati esternamente al protocollo.
La versione 3 introdusse il supporto per il trasporto delle informazioni per l’utilizzo di NFS su una WAN sebbene in maniera poco semplice ed efficiente.
La versione 4 venne influenzata dall’AFS e includeva miglioramenti nelle prestazioni, aggiungeva un supporto migliorato alla sicurezza e introduceva un protocollo che teneva conto dello stato dei client.
NFS definisce due protocolli:
Un client, per montare un directory, invia una rischiesta al server, specificando pathname e permessi per montare la directory.
Se il pathname è valido e la directory è esportata, il server restituisce al client un file handle con le informazioni sul file system, il disco, gli inode della directory e la sicurezza.
Il server mantiene una lista delle directory correntemente esportate e montate dai client (/etc/exports).
Alcune versioni di Unix supportano l’Automount, che permette di montare automaticamente al boot le directory.
Automount gestisce la replicazione dei file mediante server alternativi ridondanti.
Il protocollo offre un insieme di RPC che permettono:
Le versioni 2 e 3 non mantengono informazioni di stato ed ogni richiesta contiene tutte le informazioni per completare l’operazione.
Non sono necessarie le istruzioni di open e close.
NFS deve far parte del kernel?
Non necessariamente: (ad es. in Windows 3.0, Win 95, primi MacOS, PocketPC era implementato come libreria utente).
Per Unix è però vantaggioso implementare NFS nel kernel:
Il modulo client di NFS conserva in una cache i risultati delle operazioni di accesso ai file remoti.
La sincronizzazione non è garantita nel caso che due client accedono al file
Controllo di validità della cache basata su marche temporali.
AFS è’ un File System distribuito che permette la condivisione di file tra macchine UNIX su reti LAN e WAN utilizzando il modello upload/download.
Obiettivo del progetto: fornire a studenti e docenti della Carneige Mellon Univ. un ambiente Unix-like con un unico file system condiviso.
AFS è scalabile. E’ possibile connettere migliaia di workstation.
Solitamente si tengono distinte le workstation dai server per migliorare le prestazioni.
AFS supporta varie versioni di Unix (AIX, HP-UX, Ultrix, SUN-OS,…).
AFS si integra con il sistema operativo a livello di kernel; esso modifica la struttura interna del file system di Unix.
Necessaria una particolare installazione che comporta la ricostruzione del kernel della macchina
Nel kernel del client c’è una porzione aggiunta di codice chiamata Venus.
I file server, detti Vice, girano in spazio utente.
I client sono presentati con uno spazio dei nomi partizionato: uno spazio dei nomi locali e uno spazio dei nomi globali.
Su ogni client, lo spazio dei nomi visibili ai programmi utente appare come un albero UNIX tradizionale, con l’aggiunta delle directory /afs e /cache:
Introdotte in AFS 3.
Cellula = gruppo di ws geograficamente vicine (ad es. ws di uno stesso dipartimento o universita’) e amministrate in comune.
Più cellule possono coprire un territorio molto vasto → scalabilità di AFS a migliaia di ws anche molto distanti geograficamente.
Assunzione 1: i file sono usati molto in lettura e poco in scrittura.
Assunzione 2: la maggior parte dei file è piccola.
Idea: fare in modo che ogni utente lavori il più possibile localmente e interagisca il meno possibile con il resto del sistema.
Venus scarica un file nella directory /cache locale.
Read e write locali.
Alla chiusura il file viene trasferito sul server.
Se nel frattempo un altro processo accede al file le modifiche non sono visibili.
AFS usa una semantica di sessione
Le modifiche sono visibili agli altri processi solo dopo la chiusura del file.
Il Cache Manager è un processo che gira sulle macchine client e gestisce la cache locale.
Dopo la chiusura, il file viene trasferito sul server, ma rimane anche nella cache locale in modo da evitare successivi download in caso di altri utilizzi.
Che succede se il file nel frattempo è stato modificato da un altro processo?
Due approcci
Verifica iniziata dal client (AFS1):
Verifica iniziata dal server (AFS2 e AFS3):
2. Lo stallo dei processi – parte prima
3. Lo stallo dei processi – parte seconda
4. Lo stallo dei processi – parte terza
6. Il S.O. Linux – parte prima
7. Il S.O. Linux – parte seconda
8. Il S.O. Windows – parte prima
9. Il S.O. Windows – parte seconda
10. Il S.O. Windows – parte terza
11. I S.O. multimediali – parte prima
12. I S.O. multimediali – parte seconda
13. I S.O. multimediali – parte terza
14. I Sistemi Operativi distribuiti - parte prima
15. I Sistemi Operativi distribuiti - parte seconda
16. I Sistemi Operativi distribuiti - parte terza
17. I Sistemi Operativi distribuiti - parte quarta
18. I Sistemi Operativi distribuiti - parte quinta
19. I Sistemi Operativi distribuiti - parte sesta
Silberschatz , Galvin, Gagne – Sistemi Operativi 8a ed. Capitolo 16
Tanenbaum – Moderni sistemi operativi 3a ed. Capitolo 8
Deitel, Deitel, Choffnes - Sistemi operativi 3a ed. Capitoli 13 e 14
2. Lo stallo dei processi – parte prima
3. Lo stallo dei processi – parte seconda
4. Lo stallo dei processi – parte terza
6. Il S.O. Linux – parte prima
7. Il S.O. Linux – parte seconda
8. Il S.O. Windows – parte prima
9. Il S.O. Windows – parte seconda
10. Il S.O. Windows – parte terza
11. I S.O. multimediali – parte prima
12. I S.O. multimediali – parte seconda
13. I S.O. multimediali – parte terza
14. I Sistemi Operativi distribuiti - parte prima
17. I Sistemi Operativi distribuiti - parte quarta
18. I Sistemi Operativi distribuiti - parte quinta
19. I Sistemi Operativi distribuiti - parte sesta
I podcast del corso sono disponibili anche su iTunesU e tramite Feed RSS.