Você está na página 1de 78

Dedupeer: um Algoritmo para Deduplicação de

Arquivos Através de Processamento Particionado

Paulo Fernando Almeida Soares

Orientador: Silvio Meir
Co-orientador: Vinicius Garc

Agenda
• Introdução
– Motivação
– Definição do problema
– Escopo negativo
– Contribuições

• Deduplicação
– Tipos de deduplicação
– Benefícios

• Desenvolvimento
• Dedupeer File Storage

• Componente de
software para
deduplicação
• Os algoritmos
– Fundamentos
– Detalhando os
algoritmos

• Algoritmo em
execução
• Análise de
desempenho
• Análise de compressão
2
• Conclusão

Introdução
• Aumento da demanda
• Técnicas de compressão de dados
– Intra-file vs inter-file

3

Motivação • Escassez de componentes de softwares para deduplicação • Contribuir com a green storage • Proporcionar benefícios para os sistemas de armazenamento como: – Redução no espaço necessário para armazenamento – Redução do tráfego de dados – Diminuição da quantidade de chunks 4 .

Definição do problema • Algoritmos detalhados para deduplicação utilizando processamento de forma particionada são escassos. 5 . Existe também uma falta de componentes de softwares interoperáveis para deduplicação que possam ser integrados aos sistemas de armazenamento de dados existentes.

• Na deduplicação. e os dados que foram desalocados são convertidos para uma referência ao conteúdo mantido no sistema 6 .O que é deduplicação • A deduplicação é uma técnica que reduz a quantidade de espaço necessário para armazenamento de dados através da eliminação de blocos e/ou arquivos redundantes. todos os blocos de dados ou arquivos que estão duplicados em um sistema de armazenamento são reduzidos à uma única cópia.

• Teste do DeFS de forma distribuída • Teste do algoritmo de maneira postprocessing • Utilização de outros algoritmos de hashing diferentes do SHA-1 e MD5 7 .Escopo negativo • Chunks menor que 8KB e maiores que 128KB.

8 . possibilitando a diminuição da perda de identificação por causa da quebra do arquivo. • A otimização da descoberta de redundância de dados através da carga extra de dados no processamento particionado.Contribuições • O algoritmo para deduplicação de dados com processamento particionado encapsulado em um componente de software interoperável • O sistema de armazenamento de dados distribuído com gerenciamento de armazenamento delegado para um banco de dados não-relacional construído em uma arquitetura peer-to-peer com topologia de anel.

• Servidor: A deduplicação é feita na entidade que recebe os dados. • Cliente: é a deduplicação feita antes dos dados serem enviados.Tipo de deduplicação Localização • A deduplicação distribuída pode ser feita tanto na entidade que envia os dados quanto na que os recebe. 9 . as quais podem ser respectivamente denominadas cliente e servidor.

Tipo de deduplicação Momento • A deduplicação pode ser de dois momentos: Inline deduplication ou Post-process deduplication. antes da escrita no sistema de armazenamento • Post-process deduplication: a deduplicação é feita depois que os dados são armazenados. em intervalos de tempo regulares ou quando um certo limite definido é alcançado 10 . • Inline deduplication: os dados são examinados no momento em que chegam.

• Whole File Hashing: são analisados apenas os arquivos por completo • Sub File Hashing: a análise é feita em partes do arquivo • Delta Encoding: é gerado um arquivo conhecido como patch que é um arquivo que tem informações das diferenças entre dois arquivos 11 . segundo Mandagere et al. Sub File Hashing e Delta Encoding.Tipo de deduplicação Algoritmo • Os algortimos para fazer a deduplicação são categorizados em três tipo.: Whole File Hashing.

Exemplo de benefício 12 .

Desenvolvimento 13 .

Desenvolvimento 14 .

Dedupeer File Storage • O que é? • Para que foi criado? 15 .

Dedupeer File Storage • Modelo de dados 16 .

17 .

Dedupeer File Storage • Visão de componentes e conectores 18 .

Dedupeer File Storage • Decisões de projeto: – Tamanho de chunk • Pequeno vs grande • Padrão dos sistemas de armazenamento – Gerenciamento do armazenamento • • • • • Tolerância à falhas Recuperação de falhas Consistência Disponibilidade Empacotamento de requisições 19 .

Componente de software para deduplicação • Interoperabilidade – Thrift vs Protocols Buffer • Comparação por hash – Probabilidade de colisão 20 .

Componente de software para deduplicação • Interface de comunicação • map<position. ChunkIDs>> hashesToCompare 21 . 2:string pathOfFile.Chunk> deduplicate( 1:hashesToCompare chunksInfo. 4:int bytesToLoadByTime. 3:int chunkSizeInBytes.map<strongHash. 5:HashingAlgorithm hashingAlgorithm) • typedef map<weakHash .

22 . obter o do bloco é mais rápido.Os algoritmos •  O rsync – Funcionamento • Rolling checksum – checksum do bloco de bytes já for conhecido.

• Algoritmo para deduplicação com carga completa do arquivo na memória 23 .

Algoritmo em execução • A seguir será demonstrado o algoritmo com deduplicação através do processamento particionado em execução. 24 . • O passo a passo foi capturado do sistema executando no modo debug com tamanho de chunk = 4 bytes e carga de bytes = 8 bytes.

25 .Tamanho do chunk: 4 bytes | Bytes para carregar por vez: 8 bytes Chunks armazenados no sistema 4c 6f 72 65 64 6f 6c 6f 6d 20 69 70 72 20 73 69 64 6f 6c 6f 65 74 2e 74 20 61 6d Lorem ipsum dolor sit amet. Arquivo para ser deduplicado 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 20 61 6d Lorem ipsum dolor AQUI sit amet.

Hash32: 63308178 730949e23ca46f310466fbf205ffb165aef1fd7b 4c 6f 72 SHA-1: 65 ID: 0 Hash32: 55968102 da89a0ebe3dfb3a4c4cb2a758caf6515bc46c33d 6d 20 69SHA-1: 70 ID: 1 Hash32: 69534069 aac8d75fb58b069e4c0ab23393ac474d53146d53 64 6f 6cSHA-1: 6f ID: 2 Hash32: 69468590 64 6f 6cSHA-1: 6f 13f12aec0dad9421e0fdc3d8788343ba23e8fb47 ID: 3 Hash32: 58130798 9256c5d2d36c9f9c4947b98a1556de7437d6b790 72 20 73SHA-1: 69 ID: 4 Hash32: 56557922 a1140808c69e1a3c1871996563fcebb8800b0ad3 74 20 61SHA-1: 6d ID: 5 Hash32: 38076679 65 74 2eSHA-1: 7d03542f8187a51a05a64a5f4670b6432e7c75f9 ID: 6 26 .

1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53146d5. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc46c33d. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e7c75f9.hashmap<Hash32. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437d6b790. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e8fb47. montada pelo sistema. é enviada para o computador que vai processar o novo arquivo. OBS: O hashmap não está ordenado nas posições reais 27 . id> 63308178 <730949e23ca46f310466fbf205ffb165aef1fd7b. hashmap<SHA-1. 6> A estrutura dos hashes dos chunks. 4> 56557922 <a1140808c69e1a3c1871996563fcebb8800b0ad3. id> Hash32 hashmap<SHA-1.

Memória principal Disco rígido Hash32 hashmap<SHA-1. 6> tes ia y a b mór g rre me a C aa r pa f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 202861 6d . 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3.

2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 6> possui a chave? Hash32: 63308178 Disco rígido 4c 6f 72 65 6d 20 69 70 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 202961 6d . 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790.Memória principal Hash32 hashmap<SHA-1. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9.

5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. 2> pli du 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e nk u 8fb47.Memória principal Hash32 hashmap<SHA-1. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 3> Ch 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 6> SHA-1: 730949e23ca46f310466fbf205ffb165aef1fd7b Disco rígido 4c 6f 72 65 6d 20 69 70 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 203061 6d . 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53ado c 146d5.

3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790.Memória principal Hash32 hashmap<SHA-1. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 6> Chunk-1 ref:0 Disco rígido 4c 6f 72 65 6d 20 69 70 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 203161 6d . 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b.

0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 6> Chunk-1 ref:0 Hash32: 55968102 Disco rígido 4c 6f 72 65 6d 20 69 70 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 203261 6d . 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5.Memória principal Hash32 hashmap<SHA-1.

5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. 6> Chunk-1 ref:0 do a lic p u kd SHA-1: da89a0ebe3dfb3a4c4cb2a758caf6515bc46c33d Disco rígido 4c 6f 72 65 6d 20 69 70 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 203361 6d . 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3.Memória principal Hash32 hashmap<SHA-1. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e n u 8fb47. 3> Ch 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790.

1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 6> Chunk-1 ref:0 Chunk-2 ref:1 Disco rígido 4c 6f 72 65 6d 20 69 70 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 203461 6d .Memória principal Hash32 hashmap<SHA-1. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3.

0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5.Memória principal Disco rígido Hash32 hashmap<SHA-1. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 6> Chunk-1 ref:0 Chunk-2 ref:1 tes ia y a b mór g rre me a C aa r pa f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 203561 6d . 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47.

4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47.Memória principal Hash32 hashmap<SHA-1.] . id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9.. [ d6b790. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 . 6> Chunk-1 ref:0 Chunk-2 ref:1 Disco rígido 73 75 6d 20 64 6f 6c 6f f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 203661 6d .

6> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 203761 6d .Memória principal Disco rígido Hash32 hashmap<SHA-1. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3.

id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b.Memória principal Hash32 hashmap<SHA-1. 1> a i u 69534069 ss <Aac8d75fb58b069e4c0ab23393ac474d53 o p ve 146d5. 2> o Nã cha 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 8fb47. 6> Hash32: 50004260 Disco rígido 72 20 41 51 55 49 20 73 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 203861 6d . 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3.

id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 1> a i u 69534069 ss <Aac8d75fb58b069e4c0ab23393ac474d53 o p ve 146d5. 6> buffer Hash32: 37355783 Disco rígido 72 20 41 51 55 49 20 73 72 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 203961 6d .Memória principal Hash32 hashmap<SHA-1. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. 2> o Nã cha 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 8fb47. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d.

Memória principal Hash32 hashmap<SHA-1. 1> a i u 69534069 ss <Aac8d75fb58b069e4c0ab23393ac474d53 o p ve 146d5. 2> o Nã cha 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 8fb47. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 6> buffer Hash32: 37355783 Disco rígido 72 20 41 51 55 49 20 73 72 72 20 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 204061 6d . 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9.

4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. 6> buffer Hash32: 48890160 Disco rígido 72 20 41 51 55 49 20 73 72 20 20 41 72 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 204161 6d .Memória principal Hash32 hashmap<SHA-1. 1> a i u 69534069 ss <Aac8d75fb58b069e4c0ab23393ac474d53 o p ve 146d5. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 2> o Nã cha 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 8fb47.

0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 1> a i u 69534069 ss <Aac8d75fb58b069e4c0ab23393ac474d53 o p ve 146d5.Memória principal Hash32 hashmap<SHA-1. 6> buffer Hash32: 49611023 Disco rígido 72 20 41 51 55 49 20 73 7220 2041 72 72 20 41 51 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 204261 6d . 2> o Nã cha 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 8fb47. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b.

id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b.Memória principal Hash32 hashmap<SHA-1. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 5> 38076679 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 = o i he nk c <7d03542f8187a51a05a64a5f4670b6432e er hu c ff buffer 7c75f9. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 6> Bu ovo n 72 20 41 51 55 49 20 73 Disco rígido Chunk-1 7220 2041 72 72 20 41 51 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 204361 6d .

4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 2> p o ela ite ã N69468590 an lim <13f12aec0dad9421e0fdc3d8788343ba23e j E 8fb47.Memória principal Hash32 hashmap<SHA-1. o a u ui ingi<Aac8d75fb58b069e4c0ab23393ac474d53 69534069 s os at 146d5. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. 6> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 Hash32: 48365873 Disco rígido 72 20 41 51 55 49 20 73 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 204461 6d . 3> 55968102 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 0> <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 ve a 1> ch 6c33d. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b.

Memória principal Hash32 hashmap<SHA-1. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 6> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 Chunk-6 55 49 20 73 oc v No n hu k Disco rígido 72 20 41 51 55 49 20 73 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 204561 6d . 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47.

Memória principal Disco rígido Hash32 hashmap<SHA-1. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 6> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 Chunk-6 55 49 20 73 tes ia y a b mór g rre me a C aa r pa f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 204661 6d . 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3.

id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 6> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 Chunk-6 55 49 20 73 Hash32: 60883294 Disco rígido 69 74 20 61 6d 65 74 2e f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 204761 6d . 2> o Nã cha 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 1> a i u 69534069 ss <Aac8d75fb58b069e4c0ab23393ac474d53 o p ve 146d5. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3.Memória principal Hash32 hashmap<SHA-1. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9.

2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 6> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 Chunk-6 55 49 20 73 buffer Hash32: 56557922 Disco rígido 69 74 20 61 6d 65 74 2e 69 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 204861 6d .Memória principal Hash32 hashmap<SHA-1. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790.

4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 5> ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 Chunk-6 55 49 20 73 oc v No SHA-1: a1140808c69e1a3c1871996563fcebb8800b0ad3 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 6> 69 74 20 61 6d 65 74 2e Disco rígido Chunk-1 n hu k buffer 69 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 204961 6d .Memória principal Hash32 hashmap<SHA-1. id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47.

4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 6> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 Chunk-6 55 49 20 73 Chunk-7 69 buffer SHA-1: a1140808c69e1a3c1871996563fcebb8800b0ad3 Disco rígido 69 74 20 61 6d 65 74 2e 69 f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 205061 6d . id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5.Memória principal Hash32 hashmap<SHA-1. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47.

0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e n u 8fb47. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 6> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4do ref:3 ca i l Chunk-5 up d k 72 20 41 51 Chunk-6 55 49 20 73 Chunk-7 69 SHA-1: a1140808c69e1a3c1871996563fcebb8800b0ad3 Disco rígido 69 74 20 61 6d 65 74 2e f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 205161 6d . id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3.Memória principal Hash32 hashmap<SHA-1. 3> Ch 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9.

id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 2> 69468590 58130798 56557922 38076679 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 6> Disco rígido 69 74 20 61 6d 65 74 2e f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 205261 6d . 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 4> 69 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9.Memória principal Hash32 hashmap<SHA-1. 3> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 Chunk-6 55 49 20 73 or n eChunk-7 k m e hun t n <a1140808c69e1a3c1871996563fcebb880 ta m c s 0b0ad3. 5> Re e u qu <9256c5d2d36c9f9c4947b98a1556de7437 d6b790.

5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9. 3> 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790.Memória principal Hash32 hashmap<SHA-1. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. 6> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 Chunk-6 55 49 20 73 Chunk-7 69 Hash32: 38076679 Disco rígido 69 74 20 61 6d 65 74 2e f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 205361 6d . id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5.

1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 3> Ch 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 6> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4do ref:3 ca i l Chunk-5 up d k 72 20 41 51 Chunk-6 55 49 20 73 Chunk-7 69 SHA-1: 7d03542f8187a51a05a64a5f4670b6432e7c75f9 Disco rígido 69 74 20 61 6d 65 74 2e f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 205461 6d . id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 4> 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d.Memória principal Hash32 hashmap<SHA-1. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e n u 8fb47. 5> 38076679 <7d03542f8187a51a05a64a5f4670b6432e possui a chave? 7c75f9.

5> Chunk-8 38076679 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9. 6> 69 ref:6 Disco rígido 69 74 20 61 6d 65 74 2e f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 205561 6d . id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 4> Chunk-7 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47.Memória principal Hash32 hashmap<SHA-1. 3> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 Chunk-6 55 49 20 73 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790.

3> Chunk-1 ref:0 Chunk-2 ref:1 Chunk-3 ref:2 Chunk-4 ref:3 Chunk-5 72 20 41 51 Chunk-6 55 49 20 73 58130798 <9256c5d2d36c9f9c4947b98a1556de7437 d6b790. 2> 69468590 <13f12aec0dad9421e0fdc3d8788343ba23e 8fb47. 1> 69534069 <Aac8d75fb58b069e4c0ab23393ac474d53 146d5. 0> 55968102 <da89a0ebe3dfb3a4c4cb2a758caf6515bc4 6c33d.Memória principal Hash32 hashmap<SHA-1. 6> Chunk-9 ref:5 69 Disco rígido 69 74 20 61 6d 65 74 2e f 72 65 6d 20 69 70 73 75 6d 20 64 6f 6c 6f 72 20 41 51 55 49 20 73 69 74 205661 6d . id> 63308178 <730949e23ca46f310466fbf205ffb165aef1f d7b. 4> Chunk-7 56557922 <a1140808c69e1a3c1871996563fcebb880 0b0ad3. 5> Chunk-8 ref:6 38076679 <7d03542f8187a51a05a64a5f4670b6432e 7c75f9.

Algoritmo em execução • Depois desse processamento. 57 . o arquivo que possuía 32 bytes foi armazenado ocupando apenas 9 bytes. já que o restante do conteúdo pôde ser aproveitado de um outro arquivo já armazenado no sistema.

Os algoritmos • Carga extra de dados – Problema resolvido 58 .

re? • O Usto.re utiliza o Dedupeer para fazer a deduplicação dos arquivos.Algoritmo usado no Usto. 59 .re • O que é o Usto.

Análise de desempenho de compressão • Datasets – Mesmos dados para comparar sistemas • 33 Artigos analisados por [1] – Entre 2000 e 2011 – 29 usavam datasets privados – 4 usavam datasets criados que não davam pra ser reproduzidos por falta de detalhes 60 .

vdi) • Virtual Disk Image. 61 .10 sem qualquer alteração e o segundo com o mesmo sistema operacional.Análise de desempenho e compressão • Dois datasets usados – Código-fonte do Linux (.tar) • stable: 3. só que com todas as atualizações até o dia 02 de junho de 2013.8 datado de 27 de junho de 2013 (Latest Stable Kernel) • mainline: 3.10-rc7 datado de 22 de junho de 2013 – Máquina virtual Linux (. um com o Ubuntu versão 12.9.

24GB de memória RAM DDR2. • Operações no teste do código-fonte: – Armazenamento – Deduplicação – Deduplicação + Armazenamento – Reidratação 62 .Análise de desempenho e compressão • Windows 7 Profissional com Service Pack 1 de 32 bits.40GHz e 3. processador Intel Core 2 Quad Q6600 2.

32KB. 64KB. 16KB e 8KB • Armazenamento: 63 .Análise de desempenho • Todas as quatro operações feitas para chunks de 128KB.

Análise de desempenho (armazenamento) 64 .

Análise de desempenho (armazenamento) •• tempo médio com MD5   • tempo médio com SHA-1 • Aplicando o T-Test emparelhado.05. não devemos rejeitar a hipótese nula. 65 . logo. resultou em um pvalue 0.695936. • Como o p-value é maior do que 0. não podemos afirmar que a média de tempo com MD5 é maior do que com SHA-1.

Análise de desempenho (deduplicação) 66 .

Análise de desempenho (deduplicação) ••  tempo médio com MD5 • tempo médio com SHA-1 • Aplicando o T-Test emparelhado. resultou em um pvalue . devemos rejeitar a hipótese nula e aceitar a alternativa. • Como o p-value é menor do que 0.05. 67 .

Análise de desempenho (deduplicação + armazenamento) 68 .

69 . resultou em um pvalue 0.00109705. • Com isso a hipóteses nula deve ser rejeitada e concluímos que o tempo médio dos algoritmos são diferentes.Análise de desempenho (deduplicação + armazenamento) • tempo médio com MD5 •   • tempo médio com SHA-1 • Dados não normais • Aplicando o Wilcoxon signed-rank test.

Análise de desempenho (reidratação) 70 .

05. • Como o p-value é menor do que 0. resultou em um pvalue .Análise de desempenho (reidratação) ••  tempo médio com MD5 • tempo médio com SHA-1 • Aplicando o T-Test emparelhado. devemos rejeitar a hipótese nula e aceitar a alternativa. 71 .

Análise de compressão • Mapa de chunks para a deduplicação do código-fonte • • • • • 128KB -> 3% 64KB -> 6.5% 32KB -> 11% 16KB -> 25% 8KB -> 41% 72 .

Análise de compressão (máquinas
virtuais)
• Mapa de chunks para a deduplicação
das máquinas virtuais

73

Análise de compressão (máquinas
virtuais)

79,397% para 128KB, 85,488% para 64KB, 90,740% para 32KB, 95,731% para
16KB e 98,997% para 8KB
74

Conclusão
• Com a utilização do algoritmo de deduplicação
com processamento particionado foi possível
fazer o processamento de arquivos com
tamanhos maiores do que a memória RAM do
computador utilizado.
• A eficiência do algoritmo também foi
comprovada através da compressão alcançada
entre máquinas virtuais, chegando até a uma
economia equivalente à 98,997% de dados em
relação ao tamanho total do arquivo
armazenado no sistema.
75

• Modificar o DeFS para distribuição de tarefas de deduplicação entre nós. 76 . • Deduplicação particionada vs Deduplicação de carga completa.Trabalhos futuros • Buffer em disco. • Avaliar desempenho do DeFS de forma distribuída. • Adaptar o Dedupeer para compressão de dados como zip e rar.

. A.. AND ZADOK. M UDRANKIT. E. P. USA. 2012). K UENNING. W. USENIX Association. Generating realistic datasets for deduplication analysis.. CA.Referência • [1] TARASOV. 77 . pp.. B UIK. G. S HILANE.. 24–24. USENIX ATC’12. In Proceedings of the 2012 USENIX conference on Annual Technical Conference (Berkeley. V.

dedupeer.ufpe.br www.com 78 .Obrigado! pfas@cin.