GlusterFS è una soluzione di archiviazione di file e oggetti gratuita e open source che può essere utilizzata su server fisici, virtuali e cloud sulla rete. Il vantaggio principale di GlusterFS è che possiamo aumentare o ridurre lo storage fino a più petabyte senza tempi di inattività, inoltre fornisce la ridondanza e l'elevata disponibilità dello storage.
Dove usare GluserFS... ?
Lo storage basato su GllusterFS può essere utilizzato in server fisici, virtuali e cloud sulla rete.
Può essere utilizzato anche nelle aziende in cui fornivano contenuti multimediali o di altro tipo agli utenti di Internet e devono gestire centinaia di terabyte di file.
GlusterFS può essere utilizzato anche come Object Storage in cloud privato e pubblico.
Diversa terminologia utilizzata nello storage GlusterFS :
- Pool di archiviazione affidabile :è un gruppo di più server che si fidano l'uno dell'altro e formano un cluster di archiviazione.
- Nodo :Un nodo è un server di archiviazione che partecipa al pool di archiviazione attendibile
- Mattone :Un mattone è un file system XFS (inode a 512 byte) basato su LVM montato su una cartella o una directory.
- Volume :Un volume è un file system presentato o condiviso ai client sulla rete. Un volume può essere montato usando i metodi glusterfs, nfs e smbs.
Diversi tipi di volumi che possono essere configurati utilizzando GlusterFS :
- Distribuisci volumi :È il volume predefinito che viene creato quando non viene specificata alcuna opzione durante la creazione del volume. In questo tipo di volume i file verranno distribuiti tra i mattoni utilizzando l'algoritmo hash elastico
- Volumi replica :come suggerisce il nome, in questo tipo di volume i file verranno replicati o rispecchiati sui mattoncini, in altre parole un file scritto in un mattoncino verrà replicato anche su un altro mattoncino.
- Volumi a righe : In questo tipo di volume i file più grandi vengono tagliati o divisi in blocchi e quindi distribuiti sui mattoni.
- Distribuisci volumi di replica :Come suggerisce il nome in tipo di volume, i file verranno prima distribuiti tra i mattoncini e poi replicati su diversi mattoncini.
Sebbene sia possibile provare altre combinazioni per formare volumi diversi come la replica a strisce.
In questo articolo dimostrerò come configurare GlusterFS Storage su RHEL 7.x e CentOS 7.x. Nel mio caso, prendo quattro server RHEL 7 / CentOS 7 con un'installazione minima e presumo che un disco aggiuntivo sia collegato a questi server per l'installazione di glustesfs.
- server1.example.com (192.168.43.10 )
- server2.example.com ( 192.168.43.20 )
- server3.example.com ( 192.168.43.30 )
- server4.example.com ( 192.168.43.40 )
Aggiungi le seguenti righe nel file /etc/hosts nel caso tu abbia il tuo server DNS.
192.168.43.10 server1.example.com server1 192.168.43.20 server2.example.com server2 192.168.43.30 server3.example.com server3 192.168.43.40 server4.example.com server4
Installa i pacchetti server Glusterfs su tutti i server.
I pacchetti Glusterfs non sono inclusi nei repository centos e RHEL predefiniti, quindi configureremo il repository gluster e il repository EPEL. Esegui i seguenti comandi uno dopo l'altro su tutti e 4 i server.
~]# yum install wget ~]# yum install centos-release-gluster -y ~]#yum install epel-release -y ~]# yum install glusterfs-server -y
Avvia e abilita il servizio GlusterFS su tutti e quattro i server.
~]# systemctl start glusterd ~]# systemctl enable glusterd
Consenti le porte nel firewall in modo che i server possano comunicare e formare un cluster di archiviazione (pool attendibile). Esegui i comandi seguenti su tutti e 4 i server.
~]# firewall-cmd --zone=public --add-port=24007-24008/tcp --permanent ~]# firewall-cmd --zone=public --add-port=24009/tcp --permanent ~]# firewall-cmd --zone=public --add-service=nfs --add-service=samba --add-service=samba-client --permanent ~]# firewall-cmd --zone=public --add-port=111/tcp --add-port=139/tcp --add-port=445/tcp --add-port=965/tcp --add-port=2049/tcp --add-port=38465-38469/tcp --add-port=631/tcp --add-port=111/udp --add-port=963/udp --add-port=49152-49251/tcp --permanent ~]# firewall-cmd --reload
Impostazione del volume di distribuzione:
Formerò un pool di archiviazione affidabile che consiste nel server 1 e nel server 2 e creerò dei mattoni su quello e successivamente creerà un volume distribuito. Presumo anche che un disco grezzo da 16 GB (/dev/sdb) sia allocato a entrambi i server.
Eseguire il comando seguente dalla console del server 1 per formare un pool di archiviazione attendibile con il server 2.
[[email protected] ~]# gluster peer probe server2.example.com peer probe: success. [[email protected] ~]#
Possiamo controllare lo stato del peer usando il comando seguente:
[[email protected] ~]# gluster peer status Number of Peers: 1 Hostname: server2.example.com Uuid: 9ef0eff2-3d96-4b30-8cf7-708c15b9c9d0 State: Peer in Cluster (Connected) [[email protected] ~]#
Crea mattone sul server 1
Per creare prima il mattone, dobbiamo prima impostare il provisioning dei volumi logici sul disco grezzo (/dev/sdb).
Esegui i seguenti comandi sul Server 1
[[email protected] ~]# pvcreate /dev/sdb /dev/vg_bricks/dist_brick1 /bricks/dist_brick1 xfs rw,noatime,inode64,nouuid 1 2 [[email protected] ~]# vgcreate vg_bricks /dev/sdb [[email protected] ~]# lvcreate -L 14G -T vg_bricks/brickpool1
Nel comando precedente brickpool1 è il nome di thin pool.
Ora crea un volume logico di 3 GB
[[email protected] ~]# lvcreate -V 3G -T vg_bricks/brickpool1 -n dist_brick1
Ora formatta il volume logico usando il file system xfs
[[email protected] ~]# mkfs.xfs -i size=512 /dev/vg_bricks/dist_brick1 [[email protected] ~]# mkdir -p /bricks/dist_brick1
Monta il mattone usando il comando mount
[[email protected] ~]# mount /dev/vg_bricks/dist_brick1 /bricks/dist_brick1/
Per montarlo in modo permanente aggiungi la seguente riga in /etc/fsatb
/dev/vg_bricks/dist_brick1 /bricks/dist_brick1 xfs rw,noatime,inode64,nouuid 1 2
crea una directory con brick sotto il punto di montaggio
[[email protected] ~]# mkdir /bricks/dist_brick1/brick
Allo stesso modo, esegui la seguente serie di comandi sul server 2
[[email protected] ~]# pvcreate /dev/sdb ; vgcreate vg_bricks /dev/sdb [[email protected] ~]# lvcreate -L 14G -T vg_bricks/brickpool2 [[email protected] ~]# lvcreate -V 3G -T vg_bricks/brickpool2 -n dist_brick2 [[email protected] ~]# mkfs.xfs -i size=512 /dev/vg_bricks/dist_brick2 [[email protected] ~]# mkdir -p /bricks/dist_brick2 [[email protected] ~]# mount /dev/vg_bricks/dist_brick2 /bricks/dist_brick2/ [[email protected] ~]# mkdir /bricks/dist_brick2/brick
Crea un volume distribuito utilizzando il comando gluster di seguito :
[[email protected] ~]# gluster volume create distvol server1.example.com:/bricks/dist_brick1/brick server2.example.com:/bricks/dist_brick2/brick [[email protected] ~]# gluster volume start distvol volume start: distvol: success [[email protected] ~]#
Verifica lo stato del volume utilizzando il seguente comando:
[[email protected] ~]# gluster volume info distvol
Monta Distribuisci volume sul client :
Prima di montare il volume usando glusterfs dobbiamo prima assicurarci che il pacchetto glusterfs-fuse sia installato sul client. Assicurati anche di aggiungere le voci del server di archiviazione gluster nel file /etc/hosts nel caso in cui non disponi di un server DNS locale.
Accedi al client ed esegui il comando seguente dalla console per installare glusterfs-fuse
[[email protected] ~]# yum install glusterfs-fuse -y
Crea un supporto per distribuire il volume :
[[email protected] ~]# mkdir /mnt/distvol
Ora monta il "distvol ' usando il comando di montaggio sotto:
[[email protected] ~]# mount -t glusterfs -o acl server1.example.com:/distvol /mnt/distvol/
Per il montaggio permanente aggiungi la voce seguente nel file /etc/fstab
server1.example.com:/distvol /mnt/distvol glusterfs _netdev 0 0
Esegui il comando df per verificare lo stato di montaggio del volume.
Ora inizia ad accedere al volume “distvol ”
Impostazione volume replica:
Per la configurazione del volume di replica utilizzerò il server 3 e il server 4 e presumo che il disco aggiuntivo (/dev/sdb ) per glusterfs sia già assegnato ai server. Fare riferimento ai seguenti passaggi:
Aggiungi il server 3 e il server 4 nel pool di archiviazione attendibile
[[email protected] ~]# gluster peer probe server3.example.com peer probe: success. [[email protected] ~]# gluster peer probe server4.example.com peer probe: success. [[email protected] ~]#
Crea e monta il mattoncino sul Server 3. Esegui i comandi sotto uno dopo l'altro.
[[email protected] ~]# pvcreate /dev/sdb ; vgcreate vg_bricks /dev/sdb [[email protected] ~]# lvcreate -L 14G -T vg_bricks/brickpool3 [[email protected] ~]# lvcreate -V 3G -T vg_bricks/brickpool3 -n shadow_brick1 [[email protected] ~]# mkfs.xfs -i size=512 /dev/vg_bricks/shadow_brick1 [[email protected] ~]# mkdir -p /bricks/shadow_brick1 [[email protected] ~]# mount /dev/vg_bricks/shadow_brick1 /bricks/shadow_brick1/ [[email protected] ~]# mkdir /bricks/shadow_brick1/brick
Esegui la voce seguente nel file /etc/fstab per il montaggio permanente dei mattoni:
/dev/vg_bricks/shadow_brick1 /bricks/shadow_brick1/ xfs rw,noatime,inode64,nouuid 1 2
Allo stesso modo, esegui gli stessi passaggi sul server 4 per la creazione e il montaggio del mattone:
[[email protected] ~]# pvcreate /dev/sdb ; vgcreate vg_bricks /dev/sdb [[email protected] ~]# lvcreate -L 14G -T vg_bricks/brickpool4 [[email protected] ~]# lvcreate -V 3G -T vg_bricks/brickpool4 -n shadow_brick2 [[email protected] ~]# mkfs.xfs -i size=512 /dev/vg_bricks/shadow_brick2 [[email protected] ~]# mkdir -p /bricks/shadow_brick2 [[email protected] ~]# mount /dev/vg_bricks/shadow_brick2 /bricks/shadow_brick2/ [[email protected] ~]# mkdir /bricks/shadow_brick2/brick
Per il montaggio permanente del mattone, fai la voce fstab.
Crea volume replicato utilizzando il comando gluster di seguito .
[[email protected] ~]# gluster volume create shadowvol replica 2 server3.example.com:/bricks/shadow_brick1/brick server4.example.com:/bricks/shadow_brick2/brick volume create: shadowvol: success: please start the volume to access data [[email protected] ~]# gluster volume start shadowvol volume start: shadowvol: success [[email protected] ~]#
Verifica le informazioni sul volume usando il comando gluster sotto:
[[email protected] ~]# gluster volume info shadowvol
Se vuoi accedere a questo volume “shadowvol ” tramite nfs impostare quanto segue:
[[email protected] ~]# gluster volume set shadowvol nfs.disable off
Monta il volume Replicate sul client tramite nfs
Prima di montare, crea prima un punto di montaggio.
[[email protected] ~]# mkdir /mnt/shadowvol
Nota:una delle limitazioni nello storage gluster è che il server GlusterFS supporta solo la versione 3 del protocollo NFS.
Aggiungi la voce seguente nel file "/etc/nfsmount.conf ” su entrambi i server di archiviazione (Server 3 e Server 4)
Defaultvers=3
Dopo aver eseguito la voce precedente, riavviare entrambi i server una volta. Utilizzare il comando mount di seguito sul volume "shadowvol ”
[[email protected] ~]# mount -t nfs -o vers=3 server4.example.com:/shadowvol /mnt/shadowvol/
Per il montaggio permanente aggiungi la seguente voce nel file /etc/fstab
server4.example.com:/shadowvol /mnt/shadowvol/ nfs vers=3 0 0
Verifica le dimensioni e lo stato di montaggio del volume :
[[email protetta] ~]# df -Th
Impostazione del volume di distribuzione e replica:
Per configurare il volume Distribute-Replicate userò un mattone da ciascun server e formerò il volume. Creerò il volume logico dal thin pool esistente sui rispettivi server.
Crea un mattone su tutti e 4 i server usando i comandi sotto
Server 1
[[email protected] ~]# lvcreate -V 3G -T vg_bricks/brickpool1 -n prod_brick1 [[email protected] ~]# mkfs.xfs -i size=512 /dev/vg_bricks/prod_brick1 [[email protected] ~]# mkdir -p /bricks/prod_brick1 [[email protected] ~]# mount /dev/vg_bricks/prod_brick1 /bricks/prod_brick1/ [[email protected] ~]# mkdir /bricks/prod_brick1/brick
Server 2
[[email protected] ~]# lvcreate -V 3G -T vg_bricks/brickpool2 -n prod_brick2 [[email protected] ~]# mkfs.xfs -i size=512 /dev/vg_bricks/prod_brick2 [[email protected] ~]# mkdir -p /bricks/prod_brick2 [[email protected] ~]# mount /dev/vg_bricks/prod_brick2 /bricks/prod_brick2/ [[email protected] ~]# mkdir /bricks/prod_brick2/brick
Server 3
[[email protected] ~]# lvcreate -V 3G -T vg_bricks/brickpool3 -n prod_brick3 [[email protected] ~]# mkfs.xfs -i size=512 /dev/vg_bricks/prod_brick3 [[email protected] ~]# mkdir -p /bricks/prod_brick3 [[email protected] ~]# mount /dev/vg_bricks/prod_brick3 /bricks/prod_brick3/ [[email protected] ~]# mkdir /bricks/prod_brick3/brick
Server 4
[[email protected] ~]# lvcreate -V 3G -T vg_bricks/brickpool4 -n prod_brick4 [[email protected] ~]# mkfs.xfs -i size=512 /dev/vg_bricks/prod_brick4 [[email protected] ~]# mkdir -p /bricks/prod_brick4 [[email protected] ~]# mount /dev/vg_bricks/prod_brick4 /bricks/prod_brick4/ [[email protected] ~]# mkdir /bricks/prod_brick4/brick
Ora crea un volume con il nome "dist-rep-vol ” usando il comando gluster sotto:
[[email protected] ~]# gluster volume create dist-rep-vol replica 2 server1.example.com:/bricks/prod_brick1/brick server2.example.com:/bricks/prod_brick2/brick server3.example.com:/bricks/prod_brick3/brick server4.example.com:/bricks/prod_brick4/brick force [[email protected] ~]# gluster volume start dist-rep-vol
Verifica le informazioni sul volume usando il comando seguente:
[[email protected] ~]# gluster volume info dist-rep-vol
In questo volume i primi file verranno distribuiti su due mattoncini qualsiasi e poi i file verranno replicati nei restanti due mattoncini.
Ora monta questo volume sulla macchina client tramite gluster
creiamo prima il punto di montaggio per questo volume :
[[email protected] ~]# mkdir /mnt/dist-rep-vol [[email protected] ~]# mount.glusterfs server1.example.com:/dist-rep-vol /mnt/dist-rep-vol/
Aggiungi sotto la voce in fstab per l'ingresso permanente
server1.example.com:/dist-rep-vol /mnt/dist-rep-vol/ glusterfs _netdev 0 0
Verifica la dimensione e il volume usando il comando df :
Questo è tutto. Spero che ti siano piaciuti i passaggi di configurazione dello storage gluster.