GlusterFS é um sistema de arquivos distribuído e open source capaz de escalar diversos petabytes e gerenciar milhares de clientes. Ele agrega unidades de armazenamento remotas em um único volume e implementa funcionalidades como replicação, espelhamento e striping de arquivos através de tradutores. Sua configuração envolve instalação nos nós, criação de volumes e montagem pelos clientes.
2. É um sistema de arquivo open source, que trabalha em
cluster e é capaz de escalar diversos petabytes e gerenciar
milhares de clientes. Se encaixa bem para tarefas “data-
intensive” como armazenamento na núvem e streaming de
media
- GlusterFS User Guide at gluster.readthedocs.io
GlusterFS
3. Funcionalidades
Principais funcionalidades, implementadas através de
tradutores:
✔
Replicação e espelhamento em nível de arquivos
✔
Striping em nível de arquivos
✔
Load balancing em nível de arquivos
✔
Volume failover
✔
Scheduling e disk caching
✔
Storage quotas
5. Características Importantes
✔
Sistema de arquivos distribuído e descentralizado
✔
Agregação de múltiplas unidades de armazenamento
remotas (bricks) em um único volume
✔
Funcionalidades implementadas através de tradutores
(translators)
✔
Descarta a necessidade da utilização de servidores de
metadados
10. Configuração de um AFR
✔
Etapa 1: Configuração dos dois servidores
✔
Etapa 2: Configuração do client
11. Configuração do Servidor
✔
Ajustar o /etc/hosts com os nós envolvidos
✔
Criar partições separadas para a storage em cada um dos dois
servidores
✔
Definir o ponto de montagem dessas partições
✔
Instalar repositório do glusterfs
✔
Instalar o pacote glusterfs-server
✔
Configurar o volume e replicação
12. Configuração do Servidor/Cliente
✔
Ajustando o /etc/hosts (em todos os nós e clientes)
[root@node1 ~]# vim /etc/hosts
192.168.122.203 node1
192.168.122.204 node2
192.168.122.210 node3
13. Configuração do Servidor
✔
Criando Partição (nos dois nós)
[root@node1 ~]# mkfs.ext4 /dev/vda1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
65536 inodes, 262072 blocks
13103 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=268435456
8 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 21 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
14. Configuração do Servidor
✔
Montando a partição (nos dois nós)
[root@node1 ~]# mkdir -p /data/brick1
[root@node2 ~]# echo '/dev/vda1 /data/brick1 ext4 defaults 1 2' >> /etc/fstab
[root@node2 ~]# mount -a && mount
/dev/mapper/vg_seglinux-lv_root on / type ext4 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
tmpfs on /dev/shm type tmpfs (rw)
/dev/vdb1 on /boot type ext4 (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
none on /sys/kernel/config type configfs (rw)
/dev/vda1 on /data/brick1 type ext4 (rw)
15. Configuração do Servidor
✔
Instalação do GlusterFS (nos dois nós)
# Repositório
[root@node1 ~]# wget -P /etc/yum.repos.d/
http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/EPEL.repo/glust
erfs-epel.repo
# Pacotes
[root@node1 ~]# yum install glusterfs-server
# Iniciando o Serviço
[root@node1 ~]# /etc/init.d/glusterd start
Starting glusterd: [ OK ]
16. Configuração do Servidor
✔
Configuração do GlusterFS
# Testando a conexão com os nós
[root@node1 ~]# gluster peer probe node2
peer probe: success.
PS: Uma vez tendo realizado esse processo, os próximos nós só podem ser testados a
partir de um nós que já faça parte do cluster
[root@node2 ~]# gluster peer probe node1
peer probe: success. Host node1 port 24007 already in peer list
# criação de um volume gfs (nos dois nós)
[root@node1 ~]# mkdir /data/brick1/gv0
Apenas em um dos servidores:
[root@node1 ~]# gluster volume create gv0 replica 2 node1:/data/brick1/gv0
node2:/data/brick1/gv0
volume create: gv0: success: please start the volume to access data
[root@node1 ~]# gluster volume start gv0
volume start: gv0: success
17. Configuração do Servidor
✔
Configuração do GlusterFS
## Verificando o volume criado
[root@node1 ~]# gluster volume info
Volume Name: gv0
Type: Replicate
Volume ID: 8be9ccfb-447e-4bb0-8151-a4f3e6e78d6e
Status: Started
Number of Bricks: 1 x 2 = 2
Transport-type: tcp
Bricks:
Brick1: node1:/data/brick1/gv0
Brick2: node2:/data/brick1/gv0
Options Reconfigured:
performance.readdir-ahead: on
[root@node1 ~]#
18. Configuração do Cliente
✔
Instalação do GlusterFS-Client
# Repositório
[root@node1 ~]# wget -P /etc/yum.repos.d/
http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/EPEL.repo/glust
erfs-epel.repo
# Pacotes
[root@node1 ~]# yum install glusterfs-client
# Criando o diretório onde iremos montar o volume criado anteriormente
[root@node3 ~]# mkdir /media/glusterfs
# Montando o volume remoto (pode direcionar para o node1 ou node2)
[root@node3 ~]# mount -t glusterfs node1:/gv0 /media/glusterfs/
PS: O nó indicado na montagem serve apenas para que o cliente baixe a lista de volumes
do glusterfs, depois disso o cliente passa a se conectar direto com os servidores descritos
nessa lista.
19. Configuração do Cliente
✔
Testando
[root@node3 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_seglinux-lv_root 3,3G 2,8G 307M 91% /
tmpfs 499M 0 499M 0% /dev/shm
/dev/vda1 485M 235M 226M 51% /boot
node1:/gv0 1008M 18M 939M 2% /media/glusterfs
# No cliente vamos criar alguns diretórios
[root@node3 ~]# for i in `seq -w 1 100`; do cp -rp /var/log/messages
/media/glusterfs/copy-test-$i; done
# Verifique se os arquivos foram criados no diretório /data/brick1/gv0 do node1
e se foram replicados para o mesmo diretório do node2.