Viviamo in un mondo in cui i dati stanno crescendo in modo imprevedibile ed è nostra necessità archiviare questi dati, che siano strutturati o non strutturati, in modo efficiente. I sistemi di calcolo distribuito offrono una vasta gamma di vantaggi rispetto ai sistemi di calcolo centralizzati. Qui i dati vengono memorizzati in modo distribuito con diversi nodi come server.

Il concetto di un server di metadati non è più necessario in un sistema di file distribuito. Nei sistemi di file distribuiti, offre un punto di vista comune di tutti i file separati tra diversi server. File/cartelle su questi server di archiviazione vengono accessibili in modi normali.
Ad esempio, i permessi per file/cartelle possono essere impostati come nel modello di permessi di sistema usuale, cioè il proprietario, il gruppo e gli altri. L’accesso al sistema di file dipende fondamentalmente da come il particolare protocollo è progettato per funzionare allo stesso modo.
Cos’è GlusterFS?
GlusterFS è un sistema di file distribuito definito per essere utilizzato nello spazio utente, cioè File System in User Space (FUSE). È un sistema di file basato su software che si contraddistingue per la sua flessibilità.
Osserva la seguente figura che rappresenta schematicamente la posizione di GlusterFS in un modello gerarchico. Di default, il protocollo TCP verrà utilizzato da GlusterFS.

Vantaggi di GlusterFS
- Innovazione – Elimina i metadati e può migliorare drasticamente le prestazioni che ci aiuteranno a unificare dati e oggetti.
- Elasticità – Adattabile alla crescita e alla riduzione delle dimensioni dei dati.
- Scala linearmente – Ha la disponibilità fino ai petabyte e oltre.
- Semplicità – È facile da gestire e indipendente dal kernel mentre è in esecuzione nello spazio utente.
Cosa rende Gluster eccezionale rispetto ad altri sistemi distribuiti di file?
- Scalabile – L’assenza di un server di metadati fornisce un file system più veloce.
- Accessibile – Si implementa su hardware di consumo.
- Flessibile – Come ho detto prima, GlusterFS è un sistema di file solo software. Qui i dati sono memorizzati su sistemi di file nativi come ext4, xfs, ecc.
- Open Source – Attualmente GlusterFS è mantenuto da Red Hat Inc, un’azienda open source da miliardi di dollari, come parte di Red Hat Storage.
Concetti di archiviazione in GlusterFS
- Mattonella – Il Mattonella è essenzialmente una qualsiasi directory destinata ad essere condivisa tra il pool di archiviazione fidato.
- Pool di Archiviazione Fidato – è una raccolta di questi file/cartelle condivisi, che si basano sul protocollo progettato.
- Archiviazione a Blocchi – Sono dispositivi attraverso i quali i dati vengono spostati tra i sistemi sotto forma di blocchi.
- Cluster – In Red Hat Storage, sia il cluster che il pool di archiviazione fidato trasmettono lo stesso significato di collaborazione di server di archiviazione basata su un protocollo definito.
- Sistema di File Distribuito – Un sistema di file in cui i dati sono distribuiti su diversi nodi dove gli utenti possono accedere al file senza conoscere la posizione effettiva del file. L’utente non percepisce l’accesso remoto.
- FUSE – È un modulo kernel caricabile che consente agli utenti di creare file system sopra il kernel senza coinvolgere alcun codice del kernel.
- glusterd – glusterd è il demone di gestione di GlusterFS che è il pilastro del sistema di file che verrà eseguito per tutto il tempo in cui i server sono nello stato attivo.
- POSIX – L’Intefaccia Portabile di Sistema Operativo (POSIX) è la famiglia di standard definita dall’IEEE come soluzione alla compatibilità tra le varianti di Unix sotto forma di un’Interfaccia Programmabile dell’Applicazione (API).
- RAID – Redundant Array of Independent Disks (RAID) è una tecnologia che fornisce una maggiore affidabilità dello storage attraverso la ridondanza.
- Sottomatrice – Una matrice dopo essere stata elaborata da almeno un traduttore.
- Traduttore – Un traduttore è quel pezzo di codice che esegue le azioni di base avviate dall’utente dal punto di montaggio. Connette una o più sottomatrici.
- Volume – Un volume è una raccolta logica di matrici. Tutte le operazioni sono basate sui diversi tipi di volumi creati dall’utente.
Diversi Tipi di Volumi
Rappresentazioni di diversi tipi di volumi e combinazioni tra questi tipi di volumi di base sono anche permessi come mostrato di seguito.



Volume Replicato Distribuito
Rappresentazione di un volume distribuito e replicato.

Installazione di GlusterFS in RHEL/CentOS e Fedora
In questo articolo, installeremo e configureremo GlusterFS per la prima volta per garantire l’alta disponibilità dello storage. Per questo, utilizzeremo due server per creare volumi e replicare i dati tra di essi.
Passo 1: Avere almeno due nodi
- Installa CentOS 6.5 (o qualsiasi altro OS) su due nodi.
- Imposta gli hostname con i nomi ” server1 ” e ” server2 “.
- A working network connection.
- Disco di storage su entrambi i nodi chiamato ” /data/brick “.
Passo 2: Abilita il repository EPEL e GlusterFS
Prima di installare GlusterFS su entrambi i server, è necessario abilitare i repository EPEL e GlusterFS per soddisfare le dipendenze esterne. Usa il seguente link per installare e abilitare il repository epel su entrambi i sistemi.
Successivamente, è necessario abilitare il repository GlusterFs su entrambi i server.
# wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo
Passo 3: Installazione di GlusterFS
Installa il software su entrambi i server.
# yum install glusterfs-server
Avvia il daemon di gestione di GlusterFS.
# service glusterd start
Ora controlla lo stato del daemon.
# service glusterd status
Output di Esempio
service glusterd start service glusterd status glusterd.service - LSB: glusterfs server Loaded: loaded (/etc/rc.d/init.d/glusterd) Active: active (running) since Mon, 13 Aug 2012 13:02:11 -0700; 2s ago Process: 19254 ExecStart=/etc/rc.d/init.d/glusterd start (code=exited, status=0/SUCCESS) CGroup: name=systemd:/system/glusterd.service ├ 19260 /usr/sbin/glusterd -p /run/glusterd.pid ├ 19304 /usr/sbin/glusterfsd --xlator-option georep-server.listen-port=24009 -s localhost... └ 19309 /usr/sbin/glusterfs -f /var/lib/glusterd/nfs/nfs-server.vol -p /var/lib/glusterd/...
Passo 4: Configura SELinux e iptables
Apri ‘/etc/sysconfig/selinux‘ e cambia SELinux alla modalità “permissiva” o “disabilitata” su entrambi i server. Salva e chiudi il file.
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
Successivamente, svuota le iptables in entrambi i nodi o permetti l’accesso all’altro nodo tramite iptables.
# iptables -F
Passaggio 5: Configura il Pool Affidabile
Esegui il seguente comando su ‘Server1‘.
gluster peer probe server2
Esegui il seguente comando su ‘Server2‘.
gluster peer probe server1
Nota: Una volta che questo pool è stato connesso, solo utenti affidabili possono collegare nuovi server a questo pool.
Passaggio 6: Imposta un Volume GlusterFS
Su entrambi server1 e server2.
# mkdir /data/brick/gv0
Crea un volume su un singolo server e avvia il volume. Qui, ho preso ‘Server1‘.
# gluster volume create gv0 replica 2 server1:/data/brick1/gv0 server2:/data/brick1/gv0 # gluster volume start gv0
Successivamente, conferma lo stato del volume.
# gluster volume info
Nota: Se per caso il volume non è avviato, i messaggi di errore vengono registrati in ‘/var/log/glusterfs‘ su uno o entrambi i server.
Passaggio 7: Verifica del Volume GlusterFS
Monta il volume in una directory sotto ‘/mnt‘.
# mount -t glusterfs server1:/gv0 /mnt
Ora puoi creare, modificare file sul punto di montaggio come una vista singola del sistema di file.
Caratteristiche di GlusterFS
- Auto-guarigione – Se uno qualsiasi dei mattoni in un volume replicato è inattivo e gli utenti modificano i file all’interno degli altri mattoni, il demone automatico di auto-guarigione entrerà in azione non appena il mattone sarà attivo la prossima volta e le transazioni avvenute durante il periodo di inattività saranno sincronizzate di conseguenza.
- Riequilibrio – Se aggiungiamo un nuovo mattone a un volume esistente, dove precedentemente risiedeva una grande quantità di dati, possiamo eseguire un’operazione di riequilibrio per distribuire i dati tra tutti i mattoni inclusi il nuovo mattone.
- Geo-replicazione – Fornisce backup dei dati per il ripristino in caso di disastro. Qui entra in gioco il concetto di volumi principale e slave. Così se il master è inattivo, tutti i dati possono essere accessibili tramite lo slave. Questa funzione serve per sincronizzare i dati tra server separati geograficamente. L’inizializzazione di una sessione di geo-replicazione richiede una serie di comandi di gluster.
Ecco lo screenshot che mostra il modulo di Geo-replicazione.

Link di riferimento
E questo è tutto per ora! Rimanete aggiornati per la descrizione dettagliata delle funzionalità come Auto-guarigione e Riequilibrio, Geo-replicazione, ecc. nei miei prossimi articoli.