180 likes | 293 Views
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
E N D
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
Client Proxy ServiceManager 1 ServiceManager N DFSS Responsabilità • Gestione delle cartelle • Creazione • Rimozione • Gestione dei file • Accettazione e validazione delle richieste • Caratteristiche: • 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
DFSS Nuovo Repository Repository Server Repositories 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
ServiceManager 1 ServiceManager N ServiceManager 2 ServiceManager 3 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 Richiesta Aggiornamento Callback Validazione Esecuzione Queue • Aggiornamento, messaggi inviati in modo asincrono • Nelle operazioni di accesso ai file, la risposta al cliente viene gestita direttamente da FRS FRS
Funzionamento FRS • Arrivo di una richiesta da parte di un service manager • Viene creato il file sui due repository • Viene creato il descrittore • L’ID viene inviato come risultato dell’operazione Creazione di un file Richiesta DFSS • Ad ogni file è associato un descrittore, contenente : • ID del file • Repositories in cui è memorizzato • Stato • Numero di processi in lettura ID del file creato
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: • Arriva una richiesta dal DFSS • Accesso al descrittore del file • Creazione del proxy • Invio del proxy al cliente Richiesta DFSS
Gestione della concorrenza • Lettura concorrente, scrittura esclusiva • Stati di un file : • Free • Lock • Zombie • Lettura : • FREE, accettata solo se non vi sono processi in scrittura in attesa • LOCK, richiesta accodata • ZOMBIE, richiesta rifiutata • 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 • Il nuovo server contatta un server già appartenente al servizio • Il server aggiunge localmente il nuovo nodo • Avverte gli altri server del nuovo server aggiunto • Avvia l’apprendimento • Il nuovo server potrà gestire nuove richieste solo al termine dell’apprendimento DFSS
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
DFSS Service Manager Queue Manager Call Manager Message Manager Group Manager Data Manager Visione dettagliata (1) • Service Manager (DFSS) • Politiche gestione della coda • Gestione delle richieste • Gestione dei Messaggi • Conoscenza del gruppo • Memorizzazione dei dati
Repository Server Data Manager Resource Manager Queue Manager Execution Monitor Visione dettagliata (2) • Repository Server • Persistenza dei dati • Gerstione dei descrittori dei file • Gestione della coda • 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