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

Estamos vivendo em um mundo onde os dados estão crescendo de forma imprevisível e é nossa necessidade armazenar esses dados, quer sejam estruturados ou não estruturados, de maneira eficiente. Sistemas de computação distribuída oferecem uma ampla gama de vantagens sobre sistemas de computação centralizados. Aqui os dados são armazenados de forma distribuída com vários nós como servidores.

GlusterFS Storage

O conceito de um servidor de metadados não é mais necessário em um sistema de arquivos distribuído. Em sistemas de arquivos distribuídos, ele oferece um ponto de vista comum de todos os arquivos separados entre diferentes servidores. Arquivos/diretórios nesses servidores de armazenamento são acessados de maneira normal.

Por exemplo, as permissões para arquivos/diretórios podem ser definidas como no modelo de permissão do sistema usual, ou seja, o proprietário, grupo e outros. O acesso ao sistema de arquivos basicamente depende de como o protocolo específico é projetado para funcionar da mesma forma.

O que é o GlusterFS?

GlusterFS é um sistema de arquivos distribuído definido para ser usado no espaço do usuário, ou seja, Sistema de Arquivos no Espaço do Usuário (FUSE). É um sistema de arquivos baseado em software que conta com sua própria característica de flexibilidade.

Veja a figura a seguir que representa esquematicamente a posição do GlusterFS em um modelo hierárquico. Por padrão, o protocolo TCP será usado pelo GlusterFS.

GlusterFS Design

Vantagens do GlusterFS

  1. Inovação – Elimina os metadados e pode melhorar drasticamente o desempenho, o que nos ajudará a unificar dados e objetos.
  2. Elasticidade – Adaptado ao crescimento e redução do tamanho dos dados.
  3. Escala Linearmente – Tem 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. Escalar – A ausência de um servidor de metadados proporciona um sistema de arquivos mais rápido.
  2. Acessível – Implementa-se em hardware de commodities.
  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. Tijolo – Um tijolo é basicamente qualquer diretório que se destina a ser compartilhado entre o pool de armazenamento confiável.
  2. Pool de Armazenamento Confiável – é uma coleção desses arquivos/diretórios compartilhados, que são baseados no protocolo projetado.
  3. Armazenamento em Bloco – São dispositivos pelos quais os dados estão sendo movidos entre sistemas na forma de blocos.
  4. Cluster – No Red Hat Storage, tanto cluster quanto 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 mesmo. O usuário não percebe a sensação de acesso remoto.
  6. FUSE – É um módulo de 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 e que estará em execução o tempo todo sempre que os servidores estiverem no estado ativo.
  8. POSIX – Interface Portável de Sistema Operacional (POSIX) é a família de padrões definidos 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 proporciona uma maior confiabilidade de armazenamento por meio de redundância.
  10. Subvolume – Um bloco depois de ser processado por pelo menos um tradutor.
  11. Tradutor – Um tradutor é o código que executa 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 volumes também são permitidas, conforme mostrado abaixo.

Distributed Volume
Replicated Volume
Striped Volume
Volume Distribuído Replicado

Representação de um volume distribuído-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 usando 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 dos hosts como ” server1 ” e ” server2 “.
  3. A working network connection.
  4. Disco de armazenamento em ambos os nós nomeado como ” /data/brick “.

Passo 2: Ative o EPEL e o Repositório do 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

A seguir, 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
Saída de Exemplo
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: Configure o SELinux e o iptables

Abrir ‘/etc/sysconfig/selinux‘ e alterar o SELinux para qualquer um dos modos “permissive” ou “disabled” em ambos os servidores. Salvar e fechar 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

A seguir, esvaziar as tabelas iptables em ambos os nós ou precisar permitir o acesso ao outro nó via iptables.

# iptables -F

Passo 5: Configurar o Pool de Confiança

Executar o seguinte comando em ‘Server1‘.

gluster peer probe server2

Executar o seguinte comando em ‘Server2‘.

gluster peer probe server1

Nota: Uma vez que este pool tiver sido conectado, apenas usuários de confiança poderão investigar novos servidores nesta pool.

Passo 6: Configurar um Volume GlusterFS

Em ambos server1 e server2.

# mkdir /data/brick/gv0

Criar um volume em qualquer servidor único e iniciar o volume. Aqui, eu usei ‘Server1‘.

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

A seguir, confirme o status do volume.

# gluster volume info

Nota: Caso o volume não esteja iniciado, as mensagens de erro são registradas em ‘/var/log/glusterfs‘ em um ou em ambos os servidores.

Passo 7: Verifique o Volume GlusterFS

Montar o volume em um diretório sob ‘/mnt‘.

# mount -t glusterfs server1:/gv0 /mnt

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

Funcionalidades do GlusterFS

  1. Auto-cura – Se algum dos tijolos em um volume replicado estiver inativo e os usuários modificarem os arquivos dentro do outro tijolo, o daemon de auto-cura automático entrará em ação assim que o tijolo estiver ativo novamente e as transações ocorridas durante o tempo de inatividade serão sincronizadas conforme necessário.
  2. Rebalance – Se adicionarmos um novo tijolo a um volume existente, onde uma grande quantidade de dados estava anteriormente armazenada, podemos realizar uma operação de rebalanceamento para distribuir os dados entre todos os tijolos, incluindo o tijolo recém-adicionado.
  3. Geo-replicação – Fornece backups de dados para recuperação de desastres. Aqui entra o conceito de volumes mestre e escravo. Assim, se o mestre estiver inativo, todos os dados podem ser acessados via escravo. Este recurso é usado para sincronizar dados entre servidores geograficamente separados. Iniciar uma sessão de geo-replicação requer uma série de comandos do Gluster.

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

Geo Replication

Links de referência

Página inicial do GlusterFS

Por enquanto é só! Fique atualizado para a descrição detalhada de recursos como Auto-cura e Rebalanceamento, 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/