você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

GlusterFS

Colaboração: André Luiz Facina

Data de Publicação: 26 de Janeiro de 2009

O que é o GlusterFS ?

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/Gravacao. Alguém pode estar se questionando, "E se um servidor resolver parar?". Para ambientes críticos poderá utilizar a configuracão de armazenamento distribuído + replicado.

Para mais informacões, consulte o wiki do projeto.

Instalação

A distribuição 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 (/etc/glusterfs/glusterfs-server.vol) para todos eles é o mesmo.

# 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

# Configuracã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 opcã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

# Arquivo: /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 ;-)



Veja a relação completa dos artigos de André Luiz Facina