Pesquisa de site

Introdução ao GlusterFS (sistema de arquivos) e instalação no RHEL/CentOS e Fedora


Vivemos num mundo onde os dados crescem de forma imprevisível e é nossa necessidade armazenar esses dados, sejam eles estruturados ou não, de forma eficiente. Os sistemas de computação distribuída oferecem uma ampla gama de vantagens em relação aos sistemas de computação centralizados. Aqui os dados são armazenados de forma distribuída com vários nós como servidores.

O conceito de servidor de metadados não é mais necessário em um sistema de arquivos distribuído. Em sistemas de arquivos distribuídos, 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 usual de permissão do sistema, ou seja, o proprietário, grupo e outros. O acesso ao sistema de arquivos depende basicamente de como o protocolo específico foi projetado para funcionar nele.

O que é 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 seu próprio recurso de flexibilidade.

Observe 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.

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 – Adaptada ao crescimento e redução do tamanho dos dados.
  3. Escalar Linearmente – Tem disponibilidade de petabytes e além.
  4. Simplicidade – É fácil de gerenciar e independente do kernel durante a execução no espaço do usuário.

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

  1. Vendável – A ausência de um servidor de metadados proporciona um sistema de arquivos mais rápido.
  2. Acessível – Implantado em hardware comum.
  3. Flexível – Como eu disse anteriormente, 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 de bilhões de dólares, como parte do Red Hat Storage.

Conceitos de armazenamento no GlusterFS

  1. Brick – Brick é basicamente qualquer diretório que deve 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 através dos 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 experimenta 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 GlusterFS que é a espinha dorsal do sistema de arquivos que estará em execução o tempo todo sempre que os servidores estiverem no estado ativo.
  8. POSIX – Portable Operating System Interface (POSIX) é a família de padrões definidos pelo IEEE como uma solução para a compatibilidade entre variantes Unix na forma de uma Application Programmable Interface (API).
  9. RAID – Redundant Array of Independent Disks (RAID) é uma tecnologia que oferece maior confiabilidade de armazenamento por meio de redundância.
  10. Subvolume – Um tijolo após ser processado por pelo menos um tradutor.
  11. Tradutor – Um tradutor é aquele trecho de 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.

Volume replicado distribuído

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

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

Neste artigo, instalaremos e configuraremos o GlusterFS pela primeira vez para alta disponibilidade de armazenamento. Para isso, utilizamos dois servidores para criar volumes e replicar dados entre eles.

Etapa: 1 Tenha pelo menos dois nós

  1. Instale o CentOS 6.5 (ou qualquer outro sistema operacional) em dois nós.
  2. Defina nomes de host chamados “server1” e “server2“.
  3. Uma conexão de rede funcional.
  4. Disco de armazenamento em ambos os nós denominado “/data/brick“.

Etapa 2: ativar o repositório EPEL e GlusterFS

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

  1. Como habilitar o repositório EPEL no RHEL/CentOS

Em seguida, precisamos habilitar 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

Etapa 3: Instalando o GlusterFS

Instale o software em ambos os servidores.

yum install glusterfs-server

Inicie o daemon de gerenciamento GlusterFS.

service glusterd start

Agora verifique o status do daemon.

service glusterd status
Saída de amostra
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/...

Etapa 4: configurar SELinux e iptables

Abra '/etc/sysconfig/selinux' e altere o SELinux para o modo “permissivo” ou “desativado” 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, libere o iptables em ambos os nós ou permita o acesso ao outro nó por meio do iptables.

iptables -F

Etapa 5: configurar o pool confiável

Execute o seguinte comando em ‘Servidor1‘.

gluster peer probe server2

Execute o seguinte comando em ‘Servidor2‘.

gluster peer probe server1

Observação: Depois que esse pool for conectado, somente usuários confiáveis poderão sondar novos servidores nesse pool.

Etapa 6: configurar um volume GlusterFS

Em servidor1 e em servidor2.

mkdir /data/brick/gv0

Crie um volume em qualquer servidor único e inicie o volume. Aqui, peguei ‘Servidor1‘.

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: Se o volume no caso não for iniciado, as mensagens de erro serão registradas em '/var/log/glusterfs' em um ou ambos os servidores.

Etapa 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 e editar arquivos no ponto de montagem como uma visualização única do sistema de arquivos.

Recursos do GlusterFS

  1. Auto-recuperação – Se algum dos blocos em um volume replicado estiver inativo e os usuários modificarem os arquivos dentro do outro bloco, o daemon de auto-recuperação automática entrará em ação assim que o próximo bloco for ativado tempo e as transações ocorridas durante o tempo de inatividade são sincronizadas adequadamente.
  2. Rebalancear – Se adicionarmos um novo tijolo a um volume existente, onde residia anteriormente uma grande quantidade de dados, podemos realizar uma operação de rebalanceamento para distribuir os dados entre todos os tijolos, incluindo o tijolo recém-adicionado.
  3. Replicação geográfica – Fornece backups de dados para recuperação de desastres. Aí vem o conceito de volumes mestre e escravo. Para que se o mestre estiver inativo, todos os dados poderão ser acessados via escravo. Este recurso é usado para sincronizar dados entre servidores separados geograficamente. A inicialização de uma sessão de replicação geográfica requer uma série de comandos gluster.

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

Links de referência

Página inicial do GlusterFS

Por enquanto é isso! Fique atualizado para obter descrições detalhadas de recursos como autocura e reequilíbrio, replicação geográfica, etc. em meus próximos artigos.