Sistemas Distribuídos
Sistemas de Arquivos Distribuídos - GlusterFS
Frederico Madeira
LPIC­1, LPIC­2, CCNA
fred@madeira.eng.br
www.madeira.eng.br
É 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
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
Configuração
✔
Arquitetura Modular
➔
Pode ser configurado em modo standalone (1
servidor)
➔
O sistema pode crescer ao tempo de acordo
com a necessidade
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
Arquitetura
Volume Distribuído
Arquitetura
Volume Replicado
Arquitetura
Volume Distribuído e Replicado
Arquitetura
Volume Striped
Configuração de um AFR
✔
Etapa 1: Configuração dos dois servidores
✔
Etapa 2: Configuração do client
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
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
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.
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)
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 ]
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
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 ~]#
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.
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.
Referências
1. GlusterFS Storage Cluster on CentOS 7
2. Installing GlusterFS - a Quick Start Guide
Sistemas Distribuídos
Sistemas de Arquivos Distribuídos - GlusterFS
Frederico Madeira
LPIC­1, LPIC­2, CCNA
fred@madeira.eng.br
www.madeira.eng.br

GlusterFs

  • 1.
    Sistemas Distribuídos Sistemas deArquivos Distribuídos - GlusterFS Frederico Madeira LPIC­1, LPIC­2, CCNA fred@madeira.eng.br www.madeira.eng.br
  • 2.
    É um sistemade 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, implementadasatravé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
  • 4.
    Configuração ✔ Arquitetura Modular ➔ Pode serconfigurado em modo standalone (1 servidor) ➔ O sistema pode crescer ao tempo de acordo com a necessidade
  • 5.
    Características Importantes ✔ Sistema dearquivos 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
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
    Configuração de umAFR ✔ Etapa 1: Configuração dos dois servidores ✔ Etapa 2: Configuração do client
  • 11.
    Configuração do Servidor ✔ Ajustaro /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 ✔ Ajustandoo /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 ✔ CriandoPartiçã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 ✔ Montandoa 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çãodo 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çãodo 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çãodo 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çãodo 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.
  • 20.
    Referências 1. GlusterFS StorageCluster on CentOS 7 2. Installing GlusterFS - a Quick Start Guide
  • 21.
    Sistemas Distribuídos Sistemas deArquivos Distribuídos - GlusterFS Frederico Madeira LPIC­1, LPIC­2, CCNA fred@madeira.eng.br www.madeira.eng.br