9. Instalando PVFS2 (servidor e nós)
PVFS (Parallel Virtual File System), é um sistema de arquivos concebido para proporcionar alto desempenho para aplicações paralelas, onde tem grande concorrência de acesso a muitos arquivos e grande volume de I/O (Entrada e Saída de Dados) a arquivos em comum (compartilhados).
A instalação do PVFS2 é interessante em Clusters com grande volume de dados. Aqui foi instalado para fins de testes.
Caso esteja fazendo um Cluster caseiro, recomendo utilizar o NFS e vá para o passo 10.
Nos nós e no servidor:
Antes de instalar o PVFS2 deve-se instalar as seguintes bibliotecas:
# apt-get install libdb5.1 libdb5.1-dev
Após isso, instale o PVFS2:
# cd /usr/src
# wget ftp://ftp.parl.clemson.edu/pub/pvfs2/pvfs-2.8.2.tar.gz
# mkdir /opt/mpich # Criando o caminho para a MPICH, mesmo sem ter instalado ela ainda
# mkdir /opt/pvfs2
# tar -xzvf pvfs-2.8.2.tar.gz
# ls
# cd pvfs-2.8.2
# ./configure --help | less # Se quiser ver as opções de configuração
# ./configure --prefix=/opt/pvfs2 --enable-shared --disable-segv-backtrace --with-mpi=/opt/mpich
Deve terminar sem erros com a linha:
PVFS2 version string: 2.8.2
# make
Deverá terminar com a última linha:
GENCONFIG examples/fs.conf
# make install
Acrescentar no arquivo (servidor e nós):
# vim /etc/fstab
tcp://servidor(ou no0X):3334/pvfs2-fs /mnt/pvfs2 pvfs2 defaults,noauto 0 0
# mkdir /mnt/pvfs2
# update-rc.d -f exim4 remove # Remover MTA para não atrasar a inicialização, somente nos nós
Configurando a variável de ambiente, entrar no arquivo:
# vim ~/.bashcrc
E acrescentar no final:
LD_LIBRARY_PATH=/opt/pvfs2/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
Salvar e sair. Reiniciar:
# shutdown -r now
Executar no servidor (com os nós ligados e, logicamente, com o PVFS2 já instalado e configurado):
# /opt/pvfs2/bin/pvfs2-genconfig /etc/pvfs2-fs.conf # Somente no servidor
Criando um novo storage e preparando para iniciar pela primeira vez:
# /opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf -f # Somente no servidor
Ou:
# /usr/local/sbin/pvfs2-server /etc/pvfs2-fs.conf -f
Ele deve retornar:
/opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf -f
[S 09/15 15:50] PVFS2 Server on node servidor version 2.8.2 starting...
[D 09/13 15:50] PVFS2 Server: storage space created. Exiting.
Qualquer uma das formas anteriores irá funcionar, pois o PVFS2 cria um arquivo
pvfs2-server automaticamente em
/usr/local/sbin, mesmo estando configurado para instalar em
/opt/pvfs2.
Iniciando:
# /opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf # Somente no servidor
[S 09/09 15:55] PVFS2 Server on node servidor version 2.8.2 starting...
Copiar o arquivo
pvfs2-fs.conf para os nós. É muito importante que este arquivo seja exatamente o mesmo em todas as máquinas do Cluster:
# scp /etc/pvfs2-fs.conf 192.168.1.X:/etc/
Após copiar entre em cada nó (ou, como foi dito anteriormente, faça uma instalação padrão completa em um nó e crie uma imagem para ser aproveitada nos outros nós):
# ssh 192.168.1.X
Criando os arquivos necessários:
# /opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf -f
/opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf -f
[S 09/15 22:54] PVFS2 Server on node no01 version 2.8.2 starting...
[D 09/13 22:54] PVFS2 Server: storage space created. Exiting.
# opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf
[S 09/09 22:55] PVFS2 Server on node no01 version 2.8.2 starting...
# logout
No servidor:
# /opt/pvfs2/sbin/pvfs2-server /etc/pvfs2-fs.conf
Testando:
# /opt/pvfs2/bin/pvfs2-ping -m /mnt/pvfs2
Automatizando o PVFS2 no Debian:
Copie o arquivo
pvfs2-server.rc, renomeando-o:
# cp /usr/src/pvfs-2.8.2/examples/pvfs2-server.rc /etc/init.d/pvfs2-server
E altere de acordo com as suas necessidades, para isso, você terá que ter conhecimentos em Shell Script. Ou faça o download do arquivo
pvfs2-server já alterado
aqui. E copie ele para
/etc/init.d/ com o nome de
pvfs2-server, sem a extensão
.sh.
Se alterar algum caminho de pasta durante a instalação e configuração do PVF2, altere no arquivo também. Depois, dê permissão para execução:
# chmod +x /etc/init.d/pvfs2-server
E coloque no
rc.local:
/etc/init.d/pvfs2-server start
exit 0
A automatização do PVFS2 no servidor e nos nós é a mesma. Dessa maneira, poderá iniciar, parar, checar e reiniciar o PVFS2 na linha de comando:
/detc/init.d/pvfs2-server start,
stop,
status e
restart.
Como falado anteriormente, se preferir, faça toda a instalação em um nó e no servidor, teste os acessos e o funcionamento e depois crie uma imagem do nó e copie-a para os outros alterando os arquivos necessários (IP, hosts, etc) e teste o funcionamento novamente.
10. Servidor NFS
Tem a mesma função do PVFS2, fazer o compartilhamento e sincronização de diretórios e arquivos no cluster. Grosso modo podemos dizer que um sistema de arquivos desse tipo permite que instalemos somente no servidor os programas que queremos executar no cluster, cabendo ao sistema de arquivos fazer o compartilhamento e o sincronismo.
Prefira o sistema de arquivos NFS, pois tem melhor desempenho em clusters caseiros com baixo volume de dados e não habilite os dois sistemas de arquivos (PVFS2 e NFS) ao mesmo tempo no cluster, senão dará problemas.
E lembre-se, se você instalar o PVFS2 com o NFS e for usar o NFS, comente a linha
/etc/init.d/pvfs2-server no arquivo
/etc/rc.local no servidor e nos nós.
Iniciando a instalação do NFS:
# cd /home/kluster
No servidor:
# apt-get install portmap
# apt-get install nfs-common
# apt-get install nfs-kernel-server
# apt-get install nfs-user-server
Entre no arquivo:
# vim /etc/exports
Coloque o conteúdo no final:
/home/kluster 192.168.1.0/24(rw,all_squash,subtree_check,anonuid=150,anongid=100)
/opt 192.168.1.0/24(rw,all_squash,subtree_check)
/usr/local 192.168.1.0/24(rw,all_squash,subtree_check)
Deve ir o endereço da rede.
Salve e saia.
Veja bem, as pastas colocadas ali serão as pastas a serem compartilhadas pelo servidor com as outras máquinas do cluster. Então, todo e qualquer arquivo que deverá ser utilizado pelo cluster durante a execução de um programa deve ser colocado nesta mesma pasta.
Atualizando o kernel com as mudanças no arquivo
/etc/exports:
# exportfs -a
Reinicie o serviço:
# /etc/init.d/nfs-kernel-server restart
Nos nós:
Entre no arquivo
/etc/fstab:
# vim /etc/fstab
Adicione no final:
192.168.1.6:/home/kluster /home/kluster nfs defaults 0 0
192.168.1.6:/opt /opt nfs defaults 0 0
192.168.1.6:/usr/local /usr/local nfs defaults 0 0