PublicouKaíque Claro Alterado mais de 8 anos atrás
(Parallel Virtual File System) Equipe: Alexandre Ferreira Gilson Carlos Kildare Alexandre Rodrigo Mendes PROFESSOR: ALBERTO VIEGAS
2 1. INTRODUÇÃO 1.1 APRESENTAÇÃO DO PROBLEMA Os PCs estão se tornando muito populares para criação de clusters em aplicações paralelas. Esse fato fez com aumentasse a quantidade de softwares para essa plataforma. Porém, existe uma área que ainda não avançou, que é o sistema I/O paralelo, diante desta carência iremos apresentar o PVFS como a soluções para este tipo de aplicação.
3 2. CONCEITOS PRELIMINARES
CLUSTER - Pode ser definido como um conjunto de nós processadores (PCs ou estações) autônomos e que interligados comportam-se como um sistema de imagem única. NODE: Computador conectado a uma rede, podendo funcionar como servidor permanente ou temporário. CLUSTER - O conceito de imagem única dita que um sistema paralelo ou distribuído, independente de ser composto por vários processadores ou recursos geograficamente distribuídos, deve comportar-se com um sistema centralizado do ponto de vista do usuário. Dessa forma, todos os aspectos relativos à distribuição de dados e de tarefas, comunicação e sincronização entre tarefas e a organização física do sistema devem ser abstraídos do usuário, ou seja, devem ser transparentes a ele.
4 2. CONCEITOS PRELIMINARES
5 3. DEFINIÇÃO PVFS – (Parallel Virtual File System) é um sistema de arquivos distribuído desenvolvido para prover alta performance e escalabilidade paralela para clusters de PCs com sistema operacional linux. Escalabilidade: Capacidade que determinado equipamento possui para receber implementações evitando que se torne obsoleto ou deixe de atender às necessidades do usuário. O grau em que um aplicativo ou componente de computador pode ser expandido em tamanho, volume, ou número de usuários servidos, e continuar a exercer sua função corretamente.
6 4. CARACTERÍSTICAS DO PVFS:
Distribuição física de dados em múltiplos discos e múltiplos nós; Acesso transparente para programas e aplicações já existentes, sem ter que recompilá-los; Alta performance de acesso em modo usuário; Um espaço de nomes consistente para todo o cluster (para um sistema de arquivos paralelo poder ser usado facilmente, ele deve prover um espaço de nomes único em todo o cluster, e deve ser possível acessá-lo através dos utilitários mais comuns) . Um espaço de nomes é um container abstrato que fornece contexto para os itens que armazena (nomes, termos técnicos, conceitos...), e que fornece desambiguação para itens que possuem o mesmo nome mas que residem em espaços de nomes diferentes. Tendo em vista que é fornecido um contexto distinto para cada container, o significado de um nome pode variar de acordo com o espaço de nomes o qual ele pertence. Por definição, dois conceitos de um espaço de nomes não podem compartilhar o mesmo nome. Entretanto, um mesmo conceito pode existir em mais de um espaço de nomes. Por exemplo, João trabalha para a empresa X e seu código é 123. José trabalha para a empresa Y e seu código também é 123. A razão pelo qual João e José podem ser identificados pelo mesmo código é porque eles trabalham para empresas diferentes. As diferentes empresas representam espaços de nome distintos para o código de identificação de funcionário. Na empresa Z, o código 123 identifica uma das geladeiras sendo montada na linha de produção: nota-se que o contexto do mesmo identificador variou entre a empresa Z e as outras empresas. Ciência da computação Em um sistema operacional, um exemplo de espaço de nomes é um diretório, que possui arquivos e sub-diretórios que devem ter nomes distintos entre si. Em várias linguagens de programação, um espaço de nomes é um contexto para identificadores. Um mesmo espaço de nomes não pode possuir duas funções ou variáveis com o mesmo nome. No entanto, é permitido em linguagens de programação embarcar espaços de nomes em outros espaços de nomes, formando uma árvore de espaços de nomes. A raiz da árvore é conhecida como o espaço de nomes global, que é visível para todos os outros espaços de nomes de um programa de computador. Esse recurso é usado para organizar projetos de programas de computador de forma modular. Também é usado para evitar colisão de nomes: quando utilizam-se duas bibliotecas de rotinas distintas em um mesmo projeto, pode acontecer que uma mesma função está declarada em ambas. Sem o uso de espaço de nomes, as bibliotecas não podem ser usada em conjunto (em um mesmo módulo). O escopo de uma função ou de uma classe pode ser entendido como um espaço de nomes implícito, associado com a visibilidade, acessiblidade e tempo de vida dos identificadores membros.
7 5. FUNCIONAMENTO Os dados armazenados no PVFS são distribuídos entre vários nós que compõe o cluster, usando algoritmos de distribuição diferentes. Cada um desses nós é chamado de I/O node. Separando os dados em vários nós, as aplicações passam a ter muitos caminhos para encontrá-los, através da rede e através dos discos em que estão armazenados. Isso elimina o gargalo de I/O e aumenta o potencial total da banda para múltiplos clientes.
8 5. FUNCIONAMENTO PVFS divide os arquivos em várias partes entre os nós de dados, independentemente do tamanho deles.
9 6. OS COMPONENTES DO PVFS:
SERVIDOR DE META-DADOS - (metadata server) é um daemon que gerencia todos os dados que constituem as informações, como: seu nome, sua localização na hierarquia de diretórios, seu dono, seus atributos, e como seus dados estão distribuídos entre os vários nós de dados do sistema, mas não o conteúdo dos arquivos. Esse daemon realiza todas as operações sobre os meta-dados dos arquivos atomicamente, evitando assim ter que implementar esquemas complexos de concorrência, locks, consistência, etc, para múltiplos acessos simultâneos. Metadados (DD ou Dicionário de dados), ou Metainformação, são dados sobre outros dados. Um item de um metadado pode dizer do que se trata aquele dado, geralmente uma informação inteligível por um computador. Os metadados facilitam o entendimento dos relacionamentos e a utilidade das informações dos dados. DAEMON - Programa que é executado num computador e está pronto a receber instruções/pedidos de outros programas para a execução de determinada ação
10 6. OS COMPONENTES DO PVFS:
O SERVIDOR DE DADOS (I/O server) - Gerencia o armazenamento do conteúdo dos arquivos, bem como a recuperação dos mesmos, nos discos locais conectados nos nós. Esse servidor grava os dados dos arquivos do PVFS num sistema de arquivos local, usando as funções tradicionais, como read(), write() e mmap(), para acessá-los. Isso significa que pode-se usar qualquer tipo de sistema de arquivos local, como ext2, ext3 ou reiser. Adicionalmente é possível usar suporte a RAID para que cada nó possua tolerância a falhas de disco de forma transparente e confiável para todo o sistema.
11 6. OS COMPONENTES DO PVFS:
A API nativa do PVFS- possibilita acesso em modo usuário aos servidores do PVFS. Esta biblioteca, chamada de libpvfs, cuida das operações necessárias para mover dados entre os clientes e servidores, mantendo-as transparentes para o usuário. Para operações que necessitam de meta-dados, a biblioteca se comunica diretamente com o servidor de meta-dados. Para acesso aos dados dos arquivos, o servidor de meta-dados é deixado de lado e os servidores de dados são acessados diretamente. Essa é a chave para prover uma escalável performance agregada. API, de Application Programming Interface (ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por programas aplicativos que não querem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços.[1] OBS: API, de Application Programming Interface (ou Interface de Programação de Aplicativos)
12 6. OS COMPONENTES DO PVFS:
O suporte no kernel do linux para o PVFS - provê as funcionalidades necessárias para se poder usar o comando mount nos clientes. Esse suporte não é necessário para se usar o PVFS, mas ele traz uma enorme conveniência para a interatividade com o sistema. Para isso, é necessário instalar um módulo no kernel do linux (existe um patch para eliminar o módulo e carregá-lo diretamente no kernel), e um daemon (pvfsd) que se encarrega de buscar os dados para as aplicações. Ele se utiliza da biblioteca libpvfs para realizar essas operações.
13 7. DIAGRAMA DOS COMPONENTES
Para operações que necessitam de meta-dados, a biblioteca se comunica diretamente com o servidor de meta-dados. Para acesso aos dados dos arquivos, o servidor de meta-dados é deixado de lado e os servidores de dados são acessados diretamente. Essa é a chave para prover uma escalável performance agregada. API, de Application Programming Interface (ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por programas aplicativos que não querem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços.[1]
14 7. DIAGRAMA DOS COMPONENTES
7.1 Cliente realizando consulta Para operações que necessitam de meta-dados, a biblioteca se comunica diretamente com o servidor de meta-dados. Para acesso aos dados dos arquivos, o servidor de meta-dados é deixado de lado e os servidores de dados são acessados diretamente. Essa é a chave para prover uma escalável performance agregada. API, de Application Programming Interface (ou Interface de Programação de Aplicativos) é um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas funcionalidades por programas aplicativos que não querem envolver-se em detalhes da implementação do software, mas apenas usar seus serviços.[1]
15 8. INSTALAÇÃO O pacote para instalação está disponível no site:
Arquivo: pvfs tar.gz Tutorial completo de instalação no site:
16 9. CONCLUSÃO O PVFS é um sistema de arquivos distribuído e paralelo que se preocupa em diminuir o gargalo provocado pelo tráfego de dados, seja pela rede, seja pela velocidade do armazenamento físico. Alguns problemas existentes são quanto à segurança no acesso aos dados, já que se o cliente souber onde os dados estão, basta pedí-los para os nós de dados que eles responderão, sem se preocupar com nenhum tipo de validação de permissão de acesso. Quem cuida da permissão é o servidor de meta-dados, e mesmo assim não é muito sofisticada. Outo problema existente é se o servidor de meta-dados cair. Somente os arquivos já abertos continuarão podendo ser acessados, até serem fechados. Todos os outros arquivos do sistema não poderão ser acessados. Além disso, o servidor de meta-dados pode representar um gargalo no sistema, já que ele é único. Em comparações com o NFS, o PVFS ganhou em acesso a arquivos grandes, e ficou pouco atrás no acesso a arquivos pequenos (talvez porque o PVFS costuma dividir os arquivos em várias partes entre os nós de dados, independentemente do tamanho deles). Em geral é um SAD que está no início de seu desenvolvimento, e que já apresenta bons resultados, mesmo tendo problemas visíveis. Para aplicações paralelas e confiáveis, numa rede privativa e fechada, ele pode ser usado sem grandes problemas, mas para aplicações comerciais, ainda está cedo.
17 10. REFERENCIAS BIBLIOGRÁFICAS
CLUB DO HARDWARE Disponível em: Acesso em 28 de agosto de 2009 Instituto de Matemática e Estatística da USP Disponível em: Acesso em 30 agosto de 2009