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 laccesso 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 allallocazione 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 dellarchitettura logica : DFSS FRS Scelte progettuali Implementazione del prototipo
DFSS Responsabilità Gestione delle cartelle Creazione Rimozione Gestione dei file Accettazione e validazione delle richieste Client Caratteristiche: Sistema totalmente distribuito Utilizzo di un intermediario per laccesso 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 lintero 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 allutente
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 Ad ogni file è associato un descrittore, contenente : ID del file Repositories in cui è memorizzato Stato Numero di processi in lettura 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.LID viene inviato come risultato delloperazione
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 : 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 lesecuzione 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 lapprendimento 5.Il nuovo server potrà gestire nuove richieste solo al termine dellapprendimento
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 sullaltro Esecuzione monitorata dal Repository Server tramite informazioni di log
Visione dettagliata (1) Service Manager (DFSS) DFSS Service Manager Queue Manager Call Manager Message Manager Group Manager Data Manager Politiche gestione della coda Gestione delle richieste Gestione dei Messaggi Conoscenza del gruppo Memorizzazione dei dati
Visione dettagliata (2) Repository Server Data Manager Resource Manager Queue Manager Execution Monitor Persistenza dei dati Gerstione dei descrittori dei file Gestione della coda Controlla lesecuzione 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 allinterno 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