Distributed File
System Service
Dario Agostinone
Introduzione

Fornire la possibilità di gestire un file system remoto
 Creare/Rimuovere cartelle
 Creare/Rimuovere file
 Accedere in lettura/scrittura

Obbiettivi :


Garantire l’accesso ai file anche a fronte di guasti del sistema
Problematiche affrontate :



Coordinazione
Replicazione
Accesso Concorrente
Il Problema

Gestione del file system in un contesto distribuito:


Visione trasparente rispetto all’allocazione delle risorse
Problemi di consistenza, esempio
 Creare un file in una cartella esistente
 Gestione univoca dei nomi

Accesso e modifica dei file:



Gestione della concorrenza
Gestione delle sessioni di modifica
Fasi di sviluppo

Definizione dell’architettura logica :
 DFSS
 FRS


Scelte progettuali
Implementazione del prototipo
DFSS
Responsabilità

Gestione delle cartelle
 Creazione
 Rimozione
 Gestione dei file
Client


Caratteristiche:




Accettazione e validazione
delle richieste
Sistema totalmente distribuito
Utilizzo di un intermediario per l’accesso ai file
Gruppo dei servitori dinamico
Client:


Richiesta di servizi DFSS
Richiesta di registrazione come server del
servizio
FRS
Responsabilità:





Gestione della memorizzazione
dei file
Accesso concorrente
Gestione dei proxy
Caratteristiche:



Sistema centralizzato
Insieme di repository
Client:


DFSS
Nuovo repository
Utilizzo del servizio




Client effettua la richiesta ad un Service Manager DFSS
Attesa sincrona non bloccante, tramite Callback
La richiesta viene validata ed inserita in coda
Ogni server gestisce una lista contenente l’intero File
System



Validazione senza interpellare gli altri server
Ogni operazione di creazione/rimozione richiede un
aggiornamento di tutti i server
Chiamata al FRS in modo trasparente all’utente
Coordinazione


Ogni Service Manager conosce tutti gli altri
Comunicazione tramite scambio di messaggi


Ordinamento causale tramite vector clock
Ogni Service Manager ha una coda di messaggi
associata
Gestione delle richieste
• Aggiornamento, messaggi inviati in modo
asincrono
• Nelle operazioni di accesso ai file, la risposta
al cliente viene gestita direttamente da FRS
Funzionamento FRS
1. Arrivo di una richiesta da parte di
un service manager
2. Viene creato il file sui due
repository
3. Viene creato il descrittore
4. L’ID viene inviato come risultato
dell’operazione

Ad ogni file è associato un descrittore, contenente :




ID del file
Repositories in cui è memorizzato
Stato
Numero di processi in lettura
Gestione delle sessioni

Ad ogni accesso al file è associata una sessione
Lettura
 Scrittura
 La sessione inizia quando il Client ottiene il proxy
 Termina al suo rilascio


Ottenimento del proxy:
1. Arriva una richiesta dal DFSS
2. Accesso al descrittore del file
3. Creazione del proxy
4. Invio del proxy al cliente
Gestione della concorrenza


Lettura concorrente, scrittura esclusiva
Stati di un file :




Lettura :

FREE, accettata solo se non vi sono processi in scrittura in attesa
LOCK, richiesta accodata

ZOMBIE, richiesta rifiutata


Free
Lock
Zombie
Scrittura :

FREE, accettata se non vi sono processi in lettura sul file
LOCK, richiesta accodata

ZOMBIE, richiesta rifiutata

Tolleranza ai guasti (1)


Memorizzazione dei dati durante l’esecuzione
Tolleranza del livello DFSS :


Il servizio replicato su tutti i server
Gestione della riattivazione di un server
1. Il nuovo server contatta un
server già appartenente al
servizio
2. Il server aggiunge localmente il
nuovo nodo
3. Avverte gli altri server del nuovo
server aggiunto
4. Avvia l’apprendimento
5. Il nuovo server potrà gestire
nuove richieste solo al termine
dell’apprendimento
Tolleranza ai guasti (2)

FRS, servizio centralizzato




Server centrale replicato
Memorizzazione dati in esecuzione su memoria stabile comune
Controllo tramite messaggi ad HOC
Memorizzazione dei file :




Memorizzazione su due repository diversi
Accesso in lettura sempre sul primo, cambio in caso di guasto
Scrittura su entrambe le copie
In caso di errori di inconsistenza fra le due copie si sceglie quella
più recente
Tolleranza ai guasti (3)

Gestione delle sessioni

Lettura
 Guasto del client : rieffettua la richiesta, timeout da parte del proxy per
liberare la risorsa
 Guasto del repository, redirezione sul secondario

Scrittura , operazione atomica
 Guasto del client : perdità di tutte le modifiche, time out del proxy per
liberare la risorsa
 Guasto del repository : si continua scrivendo solo sull’altro

Esecuzione monitorata dal Repository Server tramite informazioni di
log
Visione dettagliata (1)

Service Manager (DFSS)
DFSS Service Manager
Queue Manager
• Politiche gestione della coda
Call Manager
• Gestione delle richieste
Message Manager
• Gestione dei Messaggi
Group Manager
• Conoscenza del gruppo
Data Manager
• Memorizzazione dei dati
Visione dettagliata (2)

Repository Server
• Persistenza dei dati
Data Manager
Resource Manager
• Gerstione dei descrittori dei
file
• Gestione della coda
Queue Manager
Execution Monitor
• Controlla l’esecuzione dei
proxy tramite log
Prototipo



Implementato con Java RMI
Implementazione di un semplice client
DFSS




Coda FIFO delle richieste
Vector Clock -> Hashtable
Persistenza implementata senza memoria stabile
FRS



ID di un file = al path del file
Intermediari implementati come oggetti remoti che accedono ai file
richiesti, che eseguono all’interno dei Repository
Repository Server senza gestione dei guasti
Conclusioni

Vantaggi
Sistema robusto
 Buon grado di scalabilità


Svantaggi


FRS, possibile collo di bottiglia
Sviluppi futuri
Gestione della QOS
 Multiutenza
 Protezione


Critiche personali
Scarica

presentazione