GlusterFS - Cluster de Filesystem no Linux

Publicado por Andre Luiz Facina em 20/01/2009

[ Hits: 24.905 ]

 


GlusterFS - Cluster de Filesystem no Linux



GlusterFS é um sistema de arquivos para cluster, ou melhor, um sistema de arquivos clusterizável, capaz de escalonar muitos e muitos GigaBytes e distribuí-los via rede, entre vários storages e servidores. Esse sistema de arquivos trabalha na arquitetura de cliente/servidor, onde você precisará ter um ou vários servidores de arquivos e os clientes se conectarão via rede, por padrão na porta 6996.

No GlusterFS você poderá criar várias estratégias para o armazenamento dos dados, sendo possível criar compartilhamentos estilo NFS, criar armazenamento distribuído, armazenamento distribuído+replicado, dentre outros.

Ao meu ver, a configuração mais interessante é o armazenamento distribuído, onde se pode criar vários servidores de arquivos e distribuir os dados para os clientes em apenas um ponto de montagem, ou seja, quando a máquina cliente gravar os dados no diretório (montado via rede), o GlusterFS se encarregará de realizar um "striping" dos dados entres todos os servidores. O conceito seria basicamente de um RAID 0 via rede, onde cada servidor do GlusterFS receberá uma pequena quantidade dos arquivos enviados pelo cliente, maximizando assim a performance de Leitura/Gravação.

Alguém pode estar se questionando, "E se um servidor resolver parar?". Para ambientes críticos poderá utilizar a configuração de armazenamento distribuído + replicado. Para maiores informações, veja o wiki do GlusterFS.

Instalação

A distribuição Linux utilizada foi o Ubuntu 8.10, onde todos os pacotes necessários para o GlusterFS já estão disponíveis nos repositórios, e a instalação é muito simples.

Nos servidores:

# apt-get update
# apt-get install glusterfs-server


Nos clientes:

# apt-get update
# apt-get install glusterfs-client


Em ambos (Cliente/Servidor) foi criado um diretório em /etc/glusterfs/ contendo o arquivo de configuração. Eles são "glusterfs-server.vol" para o servidor e "glusterfs-client.vol" para o cliente.

Configuração do servidor

Vamos criar quatro servidores GlusterFS e o arquivo de configuração para todos eles é o mesmo.

# file: /etc/glusterfs/glusterfs-server.vol

##############################################
###  GlusterFS Server Volume Specification  ##
##############################################

# Exportando o volume "brick" com o conteúdo do diretório /export
volume brick
  type storage/posix
  option directory /export
end-volume

# Configuração de rede para o volume exportado
volume server
  type protocol/server
  option transport-type tcp/server
  option listen-port 6996
  subvolumes brick
  option auth.ip.brick.allow *
end-volume

#EOF

Devemos nos atentar na opção "option auth.ip.brick.allow *", pois por default o GlusterFS negará o acesso para todos. Com o parâmetro "*" estamos dizendo para permitir o acesso de qualquer host da rede.

Configuração do cliente

# file: /etc/glusterfs/glusterfs-client.vol

##############################################
###  GlusterFS Client Volume Specification  ##
##############################################

volume remote1
  type protocol/client
  option transport-type tcp/client
  option remote-host 192.168.1.1
  option remote-subvolume brick
end-volume

volume remote2
  type protocol/client
  option transport-type tcp/client
  option remote-host 192.168.1.2
  option remote-subvolume brick
end-volume

volume remote3
  type protocol/client
  option transport-type tcp/client
  option remote-host 192.168.1.3
  option remote-subvolume brick
end-volume

volume remote4
  type protocol/client
  option transport-type tcp/client
  option remote-host 192.168.1.4
  option remote-subvolume brick
end-volume

volume stripe0
  type cluster/stripe
  option block-size 1MB
  subvolumes remote1 remote2 remote3 remote4
end-volume

#EOF

Como podem observar, os arquivos de configurações são bem simples. No cliente fica bem claro que configuramos quatro volumes e em quatro servidores diferentes. Depois criamos um volume chamado stripe0, que é justamente o aglomerado desses quatro volumes.

Utilização

A utilização é bem simples, primeiro precisamos iniciar o daemon no servidor e depois apenas montamos o volume nos clientes.

Servidor:

# glusterfsd -f /etc/glusterfs/glusterfs-server.vol

# ps aux | grep gluster

root      4568  0.0  0.2  19028  1264 ?        Ssl  16:23   0:00 [glusterfs]
root      4601  0.0  0.1   3252   812 pts/0    S+   16:25   0:00 grep gluster

Cliente:

# glusterfs -f /etc/glusterfs/glusterfs-client.vol /mnt

# mount

glusterfs on /mnt type fuse (rw,nosuid,nodev,allow_other,default_permissions,max_read=1048576)

# df -h
glusterfs     7,5G  1,9G  5,7G  25% /mnt

Pronto, agora você pode ter um filesystem clusterizado na sua casa e no seu trabalho. ;-)

André Luiz Facina

Outras dicas deste autor

Replicação no LDAP com slurp

Servidor NFS no OpenBSD

Reforçando os serviços básicos com SSL

Backups simples e seguros com o ssh e dd no Linux

MultiTail - Comando tail em múltiplos arquivos no Linux

Leitura recomendada

Expandir ou aumentar discos de VMs (Virtual Machine) XEN

Partição NTFS, erro w32 filesystem no Captive

Removendo arquivos da lixeira (trash) do Motorola V3

Comandos para Sistema de Arquivos LVM

Como liberar espaço em partições cheias no Mandriva Linux

  

Comentários
[1] Comentário enviado por removido em 18/06/2009 - 16:42h

Olá André,
Parabéns pelo artigo foi muito proveitoso e esclarecedor para mim. Mas tenho uma dúvida como procedemos com um cliente windows?

Agradecido

Jonatas Barbosa

[2] Comentário enviado por jonesvital em 25/10/2015 - 02:44h

Bom dia André,

Parabéns pelo artigo. Estou com um problema, quando termino de configurar o cliente e dou o comando "df -h" aparece a seguinte mensagem: "df: '/mnt': Transport endpoint is not connected". Você saberia o que é? Estou usando o Ubuntu 14.04 nos servidores e no cliente.

Obrigado,

Jones Vital Denicoli

[3] Comentário enviado por marcelohcm em 24/08/2016 - 15:27h

esse tutorial parece simples, mas estou apanhando muito....

[4] Comentário enviado por marcelohcm em 26/08/2016 - 09:48h

quando vou montar a unidade com o comando
glusterfs -f /etc/glusterfs/glusterfs-client.vol /media/glusterfs
e faço o df -h dá isso
df: “/media/glusterfs”: Ponto final de transporte não está conectado

pode me ajudar?

[5] Comentário enviado por marcelohcm em 29/08/2016 - 11:31h

ninguem pode ajudar?



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts