Capitolo 5. Lock Management
Il Lock management è un servizio comune dell'infrastruttura-cluster in grado di fornire un meccanismo per altri componenti per la sincronizzazioe dell'accesso alle risorse condivise. In un cluster di Red Hat, DLM (Distributed Lock Manager) è il lock manager.
Un lock manager è un controllore del traffico in grado di controllare l'accesso alle risorse nel cluster, ad esempio l'accesso al file system GFS. Senza un lock manager non ci sarebbe alcun controllo dello storage condiviso, in tal caso potrebbe verificarsi una corruzione dei dati.
Come indicato dal nome DLM è un distributed lock manager il quale viene eseguito all'interno di ogni nodo del cluster; la gestione del lock viene distribuita su tutti i nodi presenti nel cluster. GFS2 e CLVM utilizzano i lock del lock manager. GFS2 utilizza i lock per sincronizzare l'accesso ai metadati del file system (su storage condiviso). CLVM invece utilizza i lock per sincronizzare gli aggiornamenti per i volumi LVM e gruppi di volumi (presenti sullo storage condiviso). In aggiunta,
rgmanager
utilizza DLM per sincronizzare gli stati dei servizi.
5.1. DLM Locking
Il modello DLM locking fornisce un insieme ricco di modalità per il locking e di esecuzioni sincrone e asincrone. Una applicazione è in grado di acquisire un blocco su una risorsa. Un rapporto del tipo one-to-many è presente tra le risorse e i lock: una risorsa può avere lock multipli ad essa associati.
Una risorsa può essere un oggetto, come ad esempio un file, una struttura dati, un database o una routine eseguibile, ma non deve corrispondere necessariamente ad uno di questi elementi. L'oggetto associato con la risorsa del lock determina la granularità del lock stesso. Per esempio, il locking di un intero database è considerato un locking con granularità grossolana. Al contrario, il locking di elementi singoli presenti in un database viene considerato come un locking con granularità più dettagliata.
Il DLM locking supporta:
- Sei modalità di locking che limitano l'accesso alle risorse
- L'avanzamento e il declassamento dei lock attraverso una conversione
- Completamento sincrono delle richieste di lock
- Completamento asincrono
- Dati globali attraverso i blocchi di valore del lock
DLM fornisce i propri meccanismi per il supporto delle funzioni di locking, ad esempio una comunicazione tra i nodi per la gestione del traffico, o i protocolli per riassumere il controllo del lock dopo il fallimento di un nodo o per la migrazione dei blocchi quando un nodo si unisce al cluster. Tuttavia DLM non fornisce alcun meccanismo per la gestione del cluster stesso. Infatti per questo motivo DLM deve operare in un cluster insieme con un secondo ambiente in grado di fornire i seguenti requisiti minimi:
- Il nodo è parte di un cluster.
- Tutti i nodi sono concordi sull'appartenenza del cluster ed è presente un quorum.
- Un indirizzo IP deve essere in grado di comunicare con DLM su un nodo. Normalmente DLM utilizza TCP/IP per una comunicazione tra i nodi, ciò impone un limite di un indirizzo IP per nodo (in tal caso è possibile renderlo più ridondante utilizzando un driver per il bonding). DLM può essere configurato in modo da utilizzare SCTP per il trasporto tra nodi, abilitando così indirizzi IP multipli su ogni nodo.
DLM opera con qualsiasi ambiente dell'infrastruttura del cluster in grado di fornire i requisiti minimi sopra riportati. La scelta di un ambiente open source o closed source dipende dalle preferenze dell'utente. Tuttavia il limite principale di DLM è la quantità di prove eseguite con i diversi ambienti.