Oracle Cluster File System (OCFS2) e' un cluster file system per Linux realizzato dalla Oracle Corp. e distribuito come Open Source (licenza GPL).
Un cluster file system consente di definire un file system
montato ed acceduto contemporaneamente da diversi sistemi.
Poiche' i sistemi accedono direttamente allo storage le prestazioni ottenibili
sono superiori di ordini di grandezza rispetto ad una condivisione di
file con NFS.
Il precursore di OCFS2 e' OCFS, sempre realizzato da Oracle,
che consentiva solo la condivisione di raw devices tra sistemi
Linux differenti (come necessario nell'implementazione di Oracle RAC ed ASM).
Con OCFS2, rilasciato con la versione 11g R2 della base dati,
possono essere posti in cluster anche normali file system
contenenti programmi, file di configurazione, ... o qualsiasi altro dato.
La configurazione in cluster di un file system
consente di garantire un'elevata disponibilita'
dei servizi (HA: High Availability).
Un esempio puo' essere una serie di web server richiamati da un load balancer HW
che condividono lo stesso FS.
Un cluster OCFS2 e' composto da una serie di sistemi
che accedono agli stessi dischi fisici e che li utilizzano
in contemporanea.
Tutti i sistemi sono Linux (Red Hat, Unbreakable Linux, Suse, ...).
I sistemi sono comunicano tra loro mediante la rete
per controllare la presenza di tutti i nodi e per la gestione dei lock distribuiti.
Una volta installato e configurato OCFS2 i file system appaiono come dischi
locali a tutti i sistemi in cluster che li possono utilizzare normalmente.
OCFS2 e' da tempo disponibile nel kernel Linux, l'installazione e' molto semplice
e richiede solo alcuni pacchetti:
Il modo piu' semplice e' quello di utilizzare il tool grafico di configurazione:
ocfs2console!
L'interfaccia grafica e' utilizzata sia per la configurazione
del cluster e che per la formattazione dei dischi.
La configurazione viene mantenuta sul file
/etc/ocfs2/cluster.conf. Ecco un esempio:
Lo storage e' tipicamente constituito da dischi in SAN (FC, FCoE).
Anche i dischi possono essere configurati da interfaccia grafica.
I parametri del kernel da definire sono il panic_on_oops ed il panic (rispettivamente a 1 e 30
per evitare situazioni di deadlock).
Al boot sono tipicamente attivati (dagli script S24o2cb e S25ocfs2 in /etc/rc3.d)
i processi di gestione:
I file system ocfs2 possono essere montati al boot come tutti gli altri
file system. Ecco un esempio di configurazione (/etc/fstab):
Per un'introduzione ai cluster consultare
questo documento.
I cluster file system non sono una novita'!
Oltre 10 anni fa Digital aveva introdotto un Cluster File System nel suo sistema operativo
Tru64 Unix v.5.
Da anni era disponibile la stessa funzionalita' su VMS
(che pero' non conosco come ambiente), sempre realizzato da Digital...
Su Linux e' disponibile un altro cluster file system:
GFS (Global File System) di Red Hat.
Molto interessante, ma differente come funzionalita' rispetto ad OCFS ed a GFS e' lo
ZFS: il recente file system sviluppato da Sun e disponibile
per Solaris e per Unix.
Sul
sito ufficiale OCFS2
e' dispinibile tutta la documentazione
tra cui la
User Guide.
ocfs2-2.6.Y
ocfs2-tools-1.4.X
ocfs2console-1.4.X
Dove Y dipende dalla versione del kernel ed X e' la versione piu' recente disponibile.
E' lo strumento consigliato per la configurazione, anche perche'
un cluster file system normalmente non richiede attivita' di gestione
se non l'aggiunta di nuovi dischi/file system.
node:
ip_port = 7777
ip_address = 10.20.30.101
number = 0
name = webserver01
cluster = ocfs2
node:
ip_port = 7777
ip_address = 10.20.30.102
number = 1
name = webserver02
cluster = ocfs2
node:
ip_port = 7777
ip_address = 10.20.30.103
number = 2
name = webserver03
cluster = ocfs2
node:
ip_port = 7777
ip_address = 10.20.30.104
number = 3
name = webserver04
cluster = ocfs2
cluster:
node_count = 4
name = ocfs2
E' importante notare che al momento della formattazione e' necessario indicare
il numero massimo di nodi...
Il Block size e' un elemento di tuning importante.
I parametri del modulo o2cb sono definiti nel file /etc/sysconfig/o2cb e non
richiedono generalmente modifiche.
[user_dlm]
[o2net]
[o2hb-XXX]
[ocfs2_wq]
[ocfs2dc]
[kjournald]
[ocfs2cmt]
# Device Mount Point Type Options dump Freq. fsck Pass.
ocfs2_dlmfs /dlm ocfs2_dlmfs rw 0 0
/sda1 /www ocfs2 rw,_netdev,heartbeat=local 0 0
Un Cluster File System presenta difficolta' tecniche
non banali per un'implementazione robusta ed efficiente.
Su Linux l'affidabilita' delle soluzioni su NFS e la sempre
crescente velocita' delle interfacce di rete forniscono
un'alternativa semplice e poco costosa.
Data: 31 Settembre 2010
Versione: 1.0.1
Autore: mail@meo.bogliolo.name