YADFSYet Another Distributed File System
Marcus Vinícius Neves Silva
Calebe de Paula Bianchini
Universidade Presbiteriana Mackenzie
Faculdade de Computação e Informática
Introdução YADFS: sistema de arquivos distribuído Propósitos
Alto desempenho Alta disponibilidade
Baseado nas tecnologias FUSE RAID
Sistemas de Arquivos Originalmente desenvolvidos para desktops e
sistemas de computadores centralizados São subsistemas dos sistemas operacionais Seu propósito é prover uma interface de
programação conveniente para dispositivos de armazenamento em disco
Através desta interface os programas de usuário acessam os arquivos armazenados nestes dispositivos
Sistemas de Arquivos Distribuídos Assim como um FS (File System), um DFS
(Distributed File System) também é implementado como parte do sistema operacional
Seu propósito é permitir o compartilhamento de arquivos através da rede utilizando um FS comum entre as máquinas
É desejável que um DFS possa ser utilizado de forma minimamente similar a um sistema de arquivos local
RAID RAID é uma tecnologia implementada em
hardware ou software proposta nos anos 80 Objetivo: aumentar o desempenho e a
disponibilidade de dispositivos de armazenamento em disco
RAID São utilizadas duas técnicas básicas, ambas
utilizando múltiplos discos: Paralelismo Redundância
Estas técnicas podem ser utilizadas individualmente ou combinadas, obtendo-se o melhor de ambas
RAID - Paralelismo Aumento de desempenho através de data
striping (em nível de bit ou de bloco) Distribui dados entre múltiplos discos para
que pareçam um único, rápido e grande disco Melhora o desempenho agregado de E/S
permitindo que múltiplas E/Ss sejam servidas em paralelo
RAID - Paralelismo Quanto mais discos no array:
Melhor o desempenho, mas... Maior probabilidade de ocorrência de falhas Array com 100 discos = 1/100 da confiabilidade
de um disco individual Como resolver?
RAID - Redundância Necessário adotar a redundância A maior parte dos arrays utiliza uma das
seguintes técnicas para cálculo da informação redundante: Paridade Códigos de Hamming Códigos de Reed-Solomon
RAID – Níveis Os níveis de RAID variam de 0 a 6 (7 no total) RAID nível 0:
Striping em nível de bloco Não aplica redundância
RAID nível 1: Striping em nível de bloco Sempre que um dado é escrito em um disco, o
mesmo dado também é escrito em um disco redundante
FUSE – Filesystem in Userspace Módulo de kernel para sistemas operacionais
Unix-like Permite o desenvolvimento rápido de
sistemas de arquivos em user space Chamadas realizadas pela C Standard Library
(fopen, fread, etc) são delegadas para o sistema de arquivos
FUSE – Filesystem in Userspace
YADFS Yet Another Distributed File System DFS de código aberto Escrito em C++ Para Sistemas Operacionais Unix-like
YADFS - Building Blocks FUSE Utiliza conceitos de RAID para:
Aumento de desempenho Aumento de disponibilidade Tolerância a falhas
YADFS - Arquitetura
YADFS - Aplicação de RAID Conceitualmente, ocorre da mesma forma que
em um array de discos convencional, porém... Em nível de software: os discos são lógicos e
estão distribuídos através de servidores na rede
Versão 0.1: RAID nível 0 RAID nível 1
YADFS - Aplicação de RAID RAID 0 e 1 == striping em nível de bloco Em uma operação de leitura ou escrita, os
chunks (blocos) de tamanho striping unit (4K atualmente) são lidos e escritos nos Data Nodes
YADFS – Exemplo de Funcionamento
Rede
Master Data Node #1
Client #1 Client #2 Client #N
Data Node #2 Data Node #4Data Node #3
Resultados - Benchmarks Escrita, intervalo de 128 MB a 1024 MB
Leitura, intervalo de 128 MB a 1024 MB
Resultados - Benchmarks Escrita, intervalo de 128 MB a 1024 MB
Leitura, intervalo de 128 MB a 1024 MB
Considerações Finais É possível inferir que o desempenho aumenta
conforme a quantidade de Data Nodes cresce Tolerância a falhas através da utilização de
RAID 1 Melhorias no protocolo devem aumentar o
desempenho do YADFS
Questões?
Referências Bibliográficas CHEN, Peter M. et al. RAID: high-performance,
reliable secondary storage. ACM Computing Surveys, New York, v. 26, n. 2, p. 145-185, jun. 1994.
COULOURIS, George; DOLLIMORE, Jean; KINDBERG, Tim. Distributed systems: concepts and design. 4. ed. Essex, Inglaterra: Addison-Wesley, 2005.
LEVY, Eliezer; SILBERSCHATZ, Abraham. Distributed File Systems: Concepts and Examples. ACM Computing Surveys, New York, v. 22, n. 4, p. 321-374, dez. 1990.