GlusterFS - Cluster de Filesystem no Linux

Publicado por Andre Luiz Facina em 20/01/2009

[ Hits: 25.113 ]

 


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

Pfstat no OpenBSD 4.x

Unindo partições Linux com o mhddfs

Bootchart: Monitorando o boot do sistema Linux

AIX - Identificando processos zumbis

AIX - Montar imagem ISO

Leitura recomendada

Montar compartilhamento Samba de servidor FreeBSD em cliente GNU/Linux

Montando partições NTFS no Ubuntu Linux (definitivo)

Método fácil (adequado inclusive para iniciantes) de backup e cópia

Comandos para Sistema de Arquivos LVM

Mudar gerenciador de arquivos padrão no Ubuntu

  

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