Introdução ao GlusterFS (Sistema de Arquivos) e Instalação no RHEL/CentOS e Fedora

Nós vivemos em um mundo onde os dados estão crescendo de uma maneira imprevisível e é necessário armazenar estes dados, seja estruturado ou não, de uma maneira eficiente. Sistemas de computação distribuída oferecem uma ampla gama de vantagens em relação aos sistemas de computação centralizada. Aqui, os dados são armazenados de uma forma distribuída com vários nós como servidores.

GlusterFS Storage

O conceito de um servidor de metadados já não é necessário em um sistema de arquivos distribuído. Em sistemas de arquivos distribuídos, ele oferece uma visão comum de todos os arquivos separados em diferentes servidores. Os arquivos/diretórios nestes servidores de armazenamento são acessados de maneiras normais.

Por exemplo, as permissões para arquivos/diretórios podem ser definidas como no modelo de permissões de sistema usual, isto é, o proprietário, grupo e outros. O acesso ao sistema de arquivos basicamente depende de como o protocolo particular está projetado para funcionar no mesmo.

O que é o GlusterFS?

GlusterFS é um sistema de arquivos distribuído definido para ser usado no espaço de usuário, isto é, Sistema de Arquivos no Espaço de Usuário (FUSE). É um sistema de arquivos baseado em software, o que diz respeito à sua própria flexibilidade.

Veja o seguinte gráfico que representa esquematicamente a posição do GlusterFS em um modelo hierárquico. Por padrão, o protocolo TCP será usado por GlusterFS.

GlusterFS Design

Vantagens do GlusterFS

  1. Inovação – Elimina o metadado e pode melhorar drasticamente a performance, ajudando-nos a unificar dados e objetos.
  2. Elasticidade – Adaptado ao crescimento e redução do tamanho dos dados.
  3. Escalabilidade Linear – possui disponibilidade para petabytes e além.
  4. Simplicidade – é fácil de gerenciar e independente do kernel enquanto é executado no espaço do usuário.

O que torna o Gluster excepcional entre outros sistemas de arquivos distribuídos?

  1. Escalonável – A ausência de um servidor de metadados fornece um sistema de arquivos mais rápido.
  2. Acessível – É implantado em hardware de comodidade.
  3. Flexível – Como mencionei anteriormente, o GlusterFS é um sistema de arquivos apenas de software. Aqui, os dados são armazenados em sistemas de arquivos nativos como ext4, xfs, etc.
  4. Código Aberto – Atualmente, o GlusterFS é mantido pela Red Hat Inc, uma empresa de código aberto bilionária, como parte do Red Hat Storage.

Conceitos de armazenamento no GlusterFS

  1. Bloco – Bloco é basicamente qualquer diretório destinado a ser compartilhado entre o pool de armazenamento confiável.
  2. Pool de Armazenamento Confiável – é uma coleção desses arquivos/diretórios compartilhados, baseados no protocolo projetado.
  3. Armazenamento de Bloco – São dispositivos pelos quais os dados são movidos entre sistemas na forma de blocos.
  4. Cluster – No Red Hat Storage, tanto o cluster quanto o pool de armazenamento confiável transmitem o mesmo significado de colaboração de servidores de armazenamento com base em um protocolo definido.
  5. Sistema de Arquivos Distribuído – Um sistema de arquivos no qual os dados são espalhados por diferentes nós, onde os usuários podem acessar o arquivo sem saber a localização real do arquivo. O usuário não tem a sensação de acesso remoto.
  6. FUSE – É um módulo do kernel carregável que permite aos usuários criar sistemas de arquivos acima do kernel sem envolver nenhum código do kernel.
  7. glusterd – glusterd é o daemon de gerenciamento do GlusterFS, que é a espinha dorsal do sistema de arquivos que estará em execução o tempo todo sempre que os servidores estiverem ativos.
  8. POSIX – Interface de Sistema Operacional Portátil (POSIX) é a família de padrões definida pelo IEEE como uma solução para a compatibilidade entre variantes do Unix na forma de uma Interface de Programação de Aplicativos (API).
  9. RAID – Conjunto Redundante de Discos Independentes (RAID) é uma tecnologia que oferece maior confiabilidade de armazenamento por meio da redundância.
  10. Subvolume – Um bloco após ser processado por pelo menos um tradutor.
  11. Tradutor – Um tradutor é aquela parte do código que realiza as ações básicas iniciadas pelo usuário a partir do ponto de montagem. Ele conecta um ou mais subvolumes.
  12. Volume – Um volume é uma coleção lógica de blocos. Todas as operações são baseadas nos diferentes tipos de volumes criados pelo usuário.
Diferentes Tipos de Volumes

Representações de diferentes tipos de volumes e combinações entre esses tipos básicos de volume também são permitidas, como mostrado abaixo.

Distributed Volume
Replicated Volume
Striped Volume
Volume Replicado Distribuído

Representação de um volume distribuído e replicado.

Distributed Replicated Volume

Instalação do GlusterFS no RHEL/CentOS e Fedora

Neste artigo, estaremos instalando e configurando o GlusterFS pela primeira vez para alta disponibilidade de armazenamento. Para isso, estamos utilizando dois servidores para criar volumes e replicar dados entre eles.

Passo 1: Tenha pelo menos dois nós

  1. Instale o CentOS 6.5 (ou qualquer outro SO) em dois nós.
  2. Defina os nomes de host como “servidor1” e “servidor2”.
  3. A working network connection.
  4. Disco de armazenamento em ambos os nós com o nome “/data/brick”.

Passo 2: Ativar os repositórios EPEL e GlusterFS

Antes de instalar o GlusterFS em ambos os servidores, precisamos ativar os repositórios EPEL e GlusterFS para satisfazer as dependências externas. Use o seguinte link para instalar e ativar o repositório epel em ambos os sistemas.

  1. Como Ativar o Repositório EPEL no RHEL/CentOS

Em seguida, precisamos ativar o repositório GlusterFS em ambos os servidores.

# wget -P /etc/yum.repos.d http://download.gluster.org/pub/gluster/glusterfs/LATEST/EPEL.repo/glusterfs-epel.repo

Passo 3: Instalando o GlusterFS

Instale o software em ambos os servidores.

# yum install glusterfs-server

Inicie o daemon de gerenciamento do GlusterFS.

# service glusterd start

Agora verifique o status do daemon.

# service glusterd status
Exemplo de Saída
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: Configurar o SELinux e iptables

Abra ‘/etc/sysconfig/selinux‘ e altere o SELinux para o modo “permissive” ou “disabled” em ambos os servidores. Salve e feche o arquivo.

# 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

Em seguida, limpe o iptables em ambos os nós ou permita o acesso ao outro nó via iptables.

# iptables -F

Passo 5: Configurar o Pool Confiável

Execute o seguinte comando em ‘Server1‘.

gluster peer probe server2

Execute o seguinte comando em ‘Server2‘.

gluster peer probe server1

Nota: Depois que este pool for conectado, apenas usuários confiáveis podem adicionar novos servidores a este pool.

Passo 6: Configurar um Volume do GlusterFS

Em ambos server1 e server2.

# mkdir /data/brick/gv0

Crie um volume em um único servidor e inicie o volume. Aqui, eu escolhi ‘Server1‘.

# gluster volume create gv0 replica 2 server1:/data/brick1/gv0 server2:/data/brick1/gv0
# gluster volume start gv0

Em seguida, confirme o status do volume.

# gluster volume info

Observação: Se, por acaso, o volume não iniciar, mensagens de erro são registradas em ‘/var/log/glusterfs‘ em um ou ambos os servidores.

Passo 7: Verificar o Volume do GlusterFS

Monte o volume em um diretório em ‘/mnt‘.

# mount -t glusterfs server1:/gv0 /mnt

Agora você pode criar, editar arquivos no ponto de montagem como uma única visualização do sistema de arquivos.

Recursos do GlusterFS

  1. Auto-cura – Se algum dos blocos em um volume replicado estiver inativo e os usuários modificarem os arquivos dentro do outro bloco, o daemon automático de auto-cura entrará em ação assim que o bloco estiver ativo na próxima vez e as transações ocorridas durante o tempo inativo são sincronizadas de acordo.
  2. Rebalance – Se adicionarmos um novo bloco a um volume existente, onde uma grande quantidade de dados estava armazenada anteriormente, podemos realizar uma operação de reequilíbrio para distribuir os dados entre todos os blocos, incluindo o bloco recém-adicionado.
  3. Geo-replicação – Fornece backups de dados para recuperação de desastres. Aqui entra em cena o conceito de volumes mestre e escravo. Assim, se o mestre estiver inativo, todos os dados podem ser acessados via escravo. Esse recurso é usado para sincronizar dados entre servidores geograficamente separados. Inicializar uma sessão de geo-replicação requer uma série de comandos gluster.

Aqui está a captura de tela a seguir que mostra o módulo de Geo-replicação.

Geo Replication

Links de Referência

Página Inicial do GlusterFS

É isso por enquanto! Fique atualizado para a descrição detalhada de recursos como Auto-cura e Reequilíbrio, Geo-replicação, etc., em meus próximos artigos.

Source:
https://www.tecmint.com/introduction-to-glusterfs-file-system-and-installation-on-rhelcentos-and-fedora/