você está aqui: Home  → Arquivo de Mensagens

Instalando PVFS no CentOS

Colaboração: Elton Luís Minetto

Data de Publicação: 16 de Outubro de 2006

O Parallel Virtual File System é um sistema de arquivos distribuído desenvolvido para prover alta performance e escalabilidade paralela para clusters de PCs linux.

Em geral, o PVFS promete 4 características:

  • Um espaço de nomes consistente para todo o cluster
  • Acesso transparente para programas e aplicações já existentes, sem ter que recompilá-los
  • Distribuição física de dados em múltiplos discos e múltiplos nós
  • Alta performance de acesso em modo usuário

Download

Pode-se fazer download do arquivo de instalação no site:

http://www.pvfs.org/pvfs2/download.html

O arquivo de instalação foi copiado para o diretório /usr/src e descompactado:

  cp pvfs2-1.5.1.tar.gz /usr/src
  cd /usr/src
  tar xfvz pvfs2-1.5.1.tar.gz
  cd pvfs2-1.5.1

Construindo e instalando os pacotes

O ambiente usado para estes testes foi um laboratório com 4 computadores com o CentOS 4.4, kernel 2.6.9-34.ELsmp. Para instalar é necessário os pacotes de compiladores e dos fontes do kernel, disponíveis em RPM no CD da distribuição.

Os passos padrão para compilar e instalar o PVFS2 são os seguintes:

  ./configure  with-kernel=/usr/src/kernels/2.6.9-34.EL-smp-i686
  make
  make install
  make kmod
  make kmod_install

Para executar os comandos make install e make kmod_install é necessário acesso a conta root. Para carregar o módulo do kernel:

  /sbin/insmod /lib/modules/2.6.9-34.ELsmp/kernel/fs/pvfs2/pvfs2.ko

Estes passos devem ser executados em todas as máquinas que vão compartilhar seu espaço de disco para o PVFS2.

Configurando o ambiente de testes

É importante ter em mente os papéis que cada máquina (ou nó) vai exercer no sistema PVFS2. Existem três papéis que uma máquina pode exercer:

  • servidor de metadados: nó que mantém metadados (como permissões e data de criação) para o sistema de arquivos.
  • servidor de I/O: nó que realmente armazena uma porção dos dados do PVFS2
  • cliente: é um nó que lê e grava arquivos PVFS2

Uma máquina pode exercer um, dois ou os três papéis simultaneamente. Além disto, podem haver vários servidores de metadados, de I/O e clientes.

O ambiente onde foram realizados estes testes é formado de quatro máquinas:

  • lrac.unochapeco.edu.br (servidor de metadados e de I/O)
  • et-015.unochapeco.edu.br (servidor de I/O e cliente)
  • et-016.unochapeco.edu.br (servidor de I/O)
  • et-017.unochapeco.edu.br(servidor de I/O)

    ==Configuração do servidor==

    Neste passo é considerado que a instalação do PVFS2 já foi realizada em todas as quatro máquinas, conforme descrito anteriormente.

    Agora será gerado um arquivo de configuração principal e 3 arquivos com as configurações de cada uma das máquinas restantes. É importante lembrar de informar corretamente os nomes dos computadores e que eles possam ser acessados pelos seus nomes. Recomenda-se que sejam criadas entradas no arquivo /etc/hosts de cada computador para facilitar.

    Para gerar os arquivos de configuração:

      root@lrac:~# /usr/local/bin/pvfs2-genconfig /etc/pvfs2-fs.conf /etc/pvfs2-server.conf
    

    As perguntas abaixo são apresentadas. Os comentários abaixo foram adicionados na criação deste documento para facilitar a compreenção.

      Welcome to the PVFS2 Configuration Generator:
      
      This interactive script will generate configuration files suitable
      for use with a new PVFS2 file system. Please see the PVFS2 quickstart
      guide for details.
      
      **********************************************************************
      You must first select the network protocol that your file system will use.
      The only currently supported options are  tcp  and  gm .
      * Enter protocol type [Default is tcp]:
      
      deixar tcp
      
      Choose a TCP/IP port for the servers to listen on. Note that this
      script assumes that all servers will use the same port number.
      
      * Enter port number [Default is 3334]:
      
      usar a porta padrão
      
      Next you must list the hostnames of the machines that will act as
      I/O servers. Acceptable syntax is  node1, node2,   or  node{#-#,#,#} .
      
      * Enter hostnames [Default is localhost]: lrac, et-015, et-016, et-017
      
      neste passo é necessário indicar as máquinas que irão atuar como servidores de I/O.
      
      Now list the hostnames of the machines that will act as Metadata
      servers. This list may or may not overlap with the I/O server list.
      
      * Enter hostnames [Default is localhost]: lrac
      
      indicar a máquina que irá atuar como o servidor de metadados: lrac
      
      Configured a total of 4 servers:
      4 of them are I/O servers.
      1 of them are Metadata servers.
      
      * Would you like to verify server list (y/n) [Default is n]? y
    
    se digitar a opção y os servidores serão testados. Pode-se colocar n e deixar este passo para mais tarde
      ****** I/O servers:
      tcp://lrac:3334
      tcp://et-015:3334
      tcp://et-016:3334
      tcp://et-017:3334
      
      ****** Metadata servers:
      
      tcp://lrac:3334
      
      * Does this look ok (y/n) [Default is y]? y
      
      Confirmar se tudo está ok
      
      Choose a file for each server to write log messages to.
      
      * Enter log file location [Default is /tmp/pvfs2-server.log]:
      
      Escolher um arquivo de log.
      
      Choose a directory for each server to store data in.
      
      * Enter directory name: [Default is /pvfs2-storage-space]:
      
      Diretório onde será armazenado os arquivos pertencentes ao PVFS2. Este diretório será criado automaticamente mais tarde em todas as máquinas
      
      Writing fs config file  Done.
      Writing 4 server config file(s)  Done.
      
      Configuration complete!
    
    Agora temos todos os arquivos de configuração criados:
      root@cluster1:~# ls /etc/pvfs2*
      /etc/pvfs2-fs.conf
      /etc/pvfs2-server.conf-et-015
      /etc/pvfs2-server.conf-et-016
      /etc/pvfs2-server.conf-et-017
      /etc/pvfs2-server.conf-lrac
    
    Agora os arquivos devem ser copiados para as máquinas. Podemos fazer isso usando o ssh ou outra forma de cópia remota (ou copiando em disquete mesmo e gravando em cada uma das máquinas)
      root@lrac:~# scp /etc/pvfs2-server.conf-et-015 root@et-015:/etc/
      root@lrac:~# scp /etc/pvfs2-fs.conf root@et-015:/etc/
      root@lrac:~# scp /usr/src/pvfs2-1.5.1/examples/pvfs2-server.rc \
                         root@et-015:/etc/rc.d/init.d/pvfs2-server
    
    O mesmo deve ser feito para as outras máquinas (et-016 e et-017). Também pode ser copiado para o servidor original o arquivo de inicialização:

      root@lrac:~# cp /usr/src/pvfs2-1.5.1/examples/pvfs2-server.rc \
    
    /etc/rc.d/init.d/pvfs2-server

    Este arquivo será usado para iniciar e parar o servidor do PVFS2.

    ==Iniciando os servidores==

    Em cada uma das máquinas deve ser executado o comando:

      /usr/local/sbin/pvfs2-server \
    
    /etc/pvfs2-fs.conf /etc/pvfs2-server.conf-(nome_da_maquina) -f

    Exemplo:

      /usr/local/sbin/pvfs2-server \
    
    /etc/pvfs2-fs.conf /etc/pvfs2-server.conf-et-015 -f

    Desta forma será criado o espaço onde será armazenado os arquivos (/pvfs2-storage- space) e o servidor será inicializado. Este comando é necessário ser executado somente na primeira inicialização. Das próximas vezes pode ser usado o serviço:

      /etc/init.d/pvfs2-server start
    

    e para interromper:

      /etc/init.d/pvfs2-server stop
    

    ==Configuração do cliente==

    Na máquina, ou máquinas, que irá atuar como cliente é preciso adicionar a seguinte linha no arquivo /etc/fstab

      tcp://localhost:3334/pvfs2-fs /mnt/pvfs2 pvfs2 default,noauto 0 0
    

    Esta entrada será usada pelo Linux para poder montar e desmontar o sistema de arquivos PVFS2. Além disto é necessário criar um arquivo chamado /etc/pvfs2tab que irá conter a mesma entrada e será usado pelos aplicativos próprios do PVFS2. Os passos abaixo mostram como criar o diretório onde será montado a partição e a criação do arquivo:
      [root@et-015 /root]# mkdir /mnt/pvfs2
      [root@et-015 /root]# touch /etc/pvfs2tab
      [root@et-015 /root]# chmod a+r /etc/pvfs2tab
    
    Agora é preciso adicionar no arquivo criado a mesma entrada que foi adicionada no /etc/fstab.

    ==Testando a instalação==

    Existe duas maneiras de testar a instalação. A primeira é usar as ferramentas que são fornecidas com o PVFS2: pvfs2-ping, pvfs2-cp, e pvfs2-ls. Estas ferramentas testam, a saúde do sistema de arquivos, permitem copiar arquivos e listam o conteúdo dos diretórios.
      bash-2.05b# /usr/local/bin/pvfs2-ping -m /mnt/pvfs2
      
      (1) Parsing tab file
      
      (2) Initializing system interface
      
      (3) Initializing each file system found in tab file: /etc/fstab
      
      PVFS2 servers: tcp://localhost:3334
      
      Storage name: pvfs2-fs
      
      Local mount point: /mnt/pvfs2
      
      /mnt/pvfs2: Ok
      
      (4) Searching for /mnt/pvfs2/ in pvfstab
      
      PVFS2 servers: tcp://localhost:3334
      
      Storage name: pvfs2-fs
      
      Local mount point: /mnt/pvfs2
      
      meta servers:
      
      tcp://lrac:3334
      
      data servers:
      
      tcp://lrac:3334
      tcp://et-015:3334
      
      (5) Verifying that all servers are responding
      
      meta servers:
      
      tcp://lrac:3334 Ok
      
      data servers:
      
      tcp://lrac:3334 Ok
      
      tcp://et-015:3334 Ok
      
      (6) Verifying that fsid 1224940272 is acceptable to all servers
      
      Ok; all servers understand fs_id 1224940272
      
      (7) Verifying that root handle is owned by one server
      
      Root handle: 1048576
      
      Ok; root handle is owned by exactly one server.
      
      The PVFS2 filesystem at /mnt/pvfs2/ appears to be correctly configured.
    
    Para listar:
      bash-2.05b# /usr/local/bin/pvfs2-ls /mnt/pvfs2/
      bash-2.05b# /usr/local/bin/pvfs2-cp -t /usr/lib/libc.a /mnt/pvfs2/testfile
      Wrote 2310808 bytes in 0.264689 seconds. 8.325842 MB/seconds
      bash-2.05b# /usr/local/bin/pvfs2-ls /mnt/pvfs2/
      testfile
      bash-2.05b# /usr/local/bin/pvfs2-ls -alh /mnt/pvfs2/
      drwxrwxrwx 1 pcarns users 0 2003-08-14 22:45 .
      drwxrwxrwx 1 pcarns users 0 2003-08-14 22:45 .. (faked)
      -rw - 1 root root 2M 2003-08-14 22:47 testfile
    
    ==Copiando arquivos:==
      bash-2.05b# /usr/local/bin/pvfs2-cp -t /mnt/pvfs2/testfile /tmp/testfile-out
      Wrote 2310808 bytes in 0.180621 seconds. 12.201016 MB/seconds
      bash-2.05b# diff /tmp/testfile-out /usr/lib/libc.a
    
    Outra forma de utilizar o PVFS2 é montando o diretório da mesma maneira que faríamos com o NFS ou outro sistema de arquivos.

    No cliente, após ter carregado na memória o módulo do kernel como foi explicado anteriormente, pode-se executar os seguintes comandos:
      [root@et-015 linux]# /usr/local/sbin/pvfs2-client
      [root@et-015 linux]# mount -t pvfs2 tcp://localhost:3334/pvfs2-fs /mnt/pvfs2
    
    Após isso é possível acessar o diretório normalmente, como se fosse um diretório local.

    ==Referências==

  • http://www.ime.usp.br/~carvalho/monografia-sad/
  • http://www.pvfs.org/pvfs2/pvfs2-quickstart.html


 

 

Veja a relação completa dos artigos de Elton Luís Minetto

Opinião dos Leitores

Seja o primeiro a comentar este artigo
*Nome:
Email:
Me notifique sobre novos comentários nessa página
Oculte meu email
*Texto:
 
  Para publicar seu comentário, digite o código contido na imagem acima
 


Powered by Scriptsmill Comments Script