otimizações em sistemas de armazenamento mediadas por anotações em metadados

42
Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados Thiago Emmanuel Pereira Conversa LSD Laboratório de Sistemas Distribuídos Abril / 2010

Upload: ricardoas

Post on 03-Jul-2015

556 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Otimizações em Sistemas de Armazenamento mediadas poranotações em Metadados

Thiago Emmanuel Pereira

Conversa LSDLaboratório de Sistemas Distribuídos

Abril / 2010

Page 2: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

ELAP Program

Support the development of human capital and a next generation of LatinAmericans

2 / 31

Page 3: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

O Zoo de aplicações

Várias aplicações

• Banco de Dados

• HPC

• Aplicações para Desktops

• Data provenance

Várias particularidades

• Fault-tolerance (Erasure-coding, replicação)

• Workload (write-once/read-many, big-data/small-data)

• Consistência (...)

3 / 31

Page 4: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

O Zoo de aplicações

Várias aplicações

• Banco de Dados

• HPC

• Aplicações para Desktops

• Data provenance

Várias particularidades

• Fault-tolerance (Erasure-coding, replicação)

• Workload (write-once/read-many, big-data/small-data)

• Consistência (...)

3 / 31

Page 5: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

O Zoo de aplicações - Domando as bestas

Um monte de sistemas ...

• GFS, Lustre, Ceph, XFS

• ext3, ext4, Raiser, LFS

• OceanStore

• Beehive, NFS, Coda

4 / 31

Page 6: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

O Zoo de aplicações - Domando as bestas

Mais níveis de indireção

• XAM (eXtensible Access Method) POSIX-like interface + Metadata

5 / 31

Page 7: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

O Zoo de aplicações - Domando as bestas

Como facilitar a implementação de novas funcionalidades em Sistemasde Arquivos sem se afastar (muito) de POSIX ?

6 / 31

Page 8: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Como habilitar a comunicação entre aplicações e osistema de arquivos ?

Listing 1: OurAPI

i n t open ( char ∗path , mode_t mode , i n t r ep_ leve l ) ;

Listing 2: POSIX API

i n t open ( char ∗path , mode_t mode ) ;

7 / 31

Page 9: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Como habilitar a comunicação entre aplicações e osistema de arquivos ?

Listing 3: OurAPI

i n t open ( char ∗path , mode_t mode , i n t r ep_ leve l ) ;

Listing 4: POSIX API

i n t open ( char ∗path , mode_t mode ) ;

7 / 31

Page 10: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Como habilitar a comunicação entre aplicações e osistema de arquivos ?

Listing 5: OurAPI

i n t l o c a t i o n ( char ∗path , char ∗ l o c a t i o n _ d s t ) ;i n t f o r k ( char ∗ l oca t i on_ to_mig ra te ) ;

Listing 6: POSIX API

????????????????????????????????????

8 / 31

Page 11: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Como habilitar a comunicação entre aplicações e osistema de arquivos ?

Listing 7: OurAPI

i n t l o c a t i o n ( char ∗path , char ∗ l o c a t i o n _ d s t ) ;i n t f o r k ( char ∗ l oca t i on_ to_mig ra te ) ;

Listing 8: POSIX API

????????????????????????????????????

8 / 31

Page 12: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Metadata annotations

FreeBSD, Linux, Mac OS X, OpenBSD

i n t s e t x a t t r ( char ∗path , char ∗name, void ∗value ) ;i n t g e t x a t t r ( char ∗path , char ∗name, void ∗value ) ;

1 s e t x a t t r ( " / tmp / foo " , " r _ l e v e l " , " 3 " ) ;2 g e t x a t t r ( " / tmp / foo " , " l o c a t i o n " , value ) ;

9 / 31

Page 13: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Metadata annotations

FreeBSD, Linux, Mac OS X, OpenBSD

i n t s e t x a t t r ( char ∗path , char ∗name, void ∗value ) ;i n t g e t x a t t r ( char ∗path , char ∗name, void ∗value ) ;

1 s e t x a t t r ( " / tmp / foo " , " r _ l e v e l " , " 3 " ) ;2 g e t x a t t r ( " / tmp / foo " , " l o c a t i o n " , value ) ;

9 / 31

Page 14: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Extensibilidade

Como permitir a alteração do comportamento original do sistema ?

10 / 31

Page 15: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Extensibilidade

Como permitir a alteração o comportamento original do sistema ?

• Pontos de desvio

• Otimizações

11 / 31

Page 16: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Pontos de desvio - Modelo de Programação

Listing 9: Vanilla

void n o t i f y _ f a i l u r e ( char∗ nodename ) {naming . n o t i f y _ f a i l u r e ( nodename ) ;

}

12 / 31

Page 17: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Pontos de desvio - Modelo de Programação

void t r ap ( char∗ entry_ID , char∗ fname ,x a t t r _ l i s t ∗ x a t t r s , void ∗ params ) ;

13 / 31

Page 18: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Pontos de desvio - Modelo de Programação

Listing 10: Vanilla

void n o t i f y _ f a i l u r e ( char∗ nodename ) {naming . n o t i f y _ f a i l u r e ( nodename ) ;

}

Listing 11: Vanilla + Desvio

void n o t i f y _ f a i l u r e ( char∗ nodename ) {foreach fname i n s t o r e d _ f i l e s ( nodename ) {

t r ap ( "ACK_FAIL " , fname , l s t x a t t r ( fname ) , nodename ) ;}naming . n o t i f y _ f a i l u r e ( nodename ) ;

}

14 / 31

Page 19: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Otimizações - Modelo de Programação

Fa i l t u reHand le r

vo id h a n d l e _ f a i l u r e ( char∗ fname , x a t t r _ l i s t ∗ x a t t r s ,vo id ∗ params ) {

i f ( x a t t r s . conta ins ( " r _ l e v e l " ) {i n t r _ l e v e l = x a t t r s . get ( " r _ l e v e l " ) ;char ∗ fa i led_node = ( char ∗ ) params ;update ( fname , r _ l e ve l , a l l_nodes ( ) , fa i led_node ) ;

} e lse {log ( "O arqu ivo <%s> não f o i anotado " , fname ) ;

}}

15 / 31

Page 20: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Juntando as peças

Em tempo de compilação

1. Definir um ponto de desvio

void n o t i f y _ f a i l u r e ( char∗ nodename ) {foreach fname i n s t o r e d _ f i l e s ( nodename ) {

t r ap ( "ACK_FAIL " , fname , l s t x a t t r ( fname ) , nodename ) ;}naming . n o t i f y _ f a i l u r e ( nodename ) ;

}

16 / 31

Page 21: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Juntando as peças

Em tempo de compilação

1. Definir um ponto de desvio

2. Implementar a otimização

void h a n d l e _ f a i l u r e ( char∗ fname , x a t t r _ l i s t ∗ x a t t r s ,vo id ∗ params ) {

i f ( x a t t r s . conta ins ( " r _ l e v e l " ) {i n t r _ l e v e l = x a t t r s . get ( " r _ l e v e l " ) ;char ∗ fa i led_node = ( char ∗ ) params ;update ( fname , r _ l e ve l , a l l_nodes ( ) , fa i led_node ) ;

} e lse {log ( "O arqu ivo <%s> não f o i anotado " , fname ) ;

}17 / 31

Page 22: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Juntando as peças

Em tempo de compilação

1. Definir um ponto de desvio

2. Implementar a otimização

3. Conectar o desvio com a otimização

i n t bind ( char∗ entry_ID , f u n c t i o n _ p o i n t e r ∗ p t r ) ;

i n t b ind ( " ACK_FAIL " , &( h a n d l e _ f a i l t u r e ) ) ;

18 / 31

Page 23: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Juntando as peças

Em tempo de execução

1. Anotar os arquivos

s e t x a t t r ( " / tmp / foo " , " r _ l e v e l " , " 3 " ) ;

19 / 31

Page 24: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Protótipo - MOSAStore

20 / 31

Page 25: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Problemas

• Interferência destrutiva

• Pouca Flexibilidade

• Limitado às funções do naming node

21 / 31

Page 26: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Avaliação

• Desempenho

• Usabilidade

22 / 31

Page 27: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Estudo de Caso - PetaScale Scientific Workflows

Figure: Parallel Scripting for Scientific Workflows

1 i n i t i a l _ c o n d i t i o n s [ ] = i n i t i a l i z e ( )2 fo recas t [ ] = nul l3 foreach cond i t i on , index in i n i t i a l _ c o n d i t i o n s :4 fo recas t [ index ] = weather_model ( c o nd i t i on )5 u n c e r t a i n t y = analyze ( f o recas t )

23 / 31

Page 28: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

A pilha Swift

Figure: Swift Stack

24 / 31

Page 29: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Um ambiente em PetaScala - BlueGene

Figure: Swift Stack

25 / 31

Page 30: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Swift Task Dispatching

Falkon: Fast and Light-Weight Task Execution Framework

Velocidade e simplicidade podem custar caro !

26 / 31

Page 31: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Falkon + Storage Optimizations

• Data co-usage

• Replicação

• Descoberta de recursos

27 / 31

Page 32: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Data co-usage

1. cp /home/manel/lib/lib.so /mnt/playpen/lib

2. setfattr "cousage" "bioinfo" /mnt/playpen/lib/lib.so

3. cp /home/manel/genoma1.csv /mnt/playpen/input

4. setfattr "cousage" "bioinfo" /mnt/playpen/input/genoma1.csv

5. cp /home/manel/genoma2.csv /mnt/playpen/input

6. setfattr "cousage" "bioinfo" /mnt/playpen/input/genoma2.csv

28 / 31

Page 33: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Data co-usage

1. cp /home/manel/lib/lib.so /mnt/playpen/lib

2. setfattr "cousage" "bioinfo" /mnt/playpen/lib/lib.so

3. cp /home/manel/genoma1.csv /mnt/playpen/input

4. setfattr "cousage" "bioinfo" /mnt/playpen/input/genoma1.csv

5. cp /home/manel/genoma2.csv /mnt/playpen/input

6. setfattr "cousage" "bioinfo" /mnt/playpen/input/genoma2.csv

28 / 31

Page 34: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Data co-usage

1. cp /home/manel/lib/lib.so /mnt/playpen/lib

2. setfattr "cousage" "bioinfo" /mnt/playpen/lib/lib.so

3. cp /home/manel/genoma1.csv /mnt/playpen/input

4. setfattr "cousage" "bioinfo" /mnt/playpen/input/genoma1.csv

5. cp /home/manel/genoma2.csv /mnt/playpen/input

6. setfattr "cousage" "bioinfo" /mnt/playpen/input/genoma2.csv

28 / 31

Page 35: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Data co-usage

1. cp /home/manel/lib/lib.so /mnt/playpen/lib

2. setfattr "cousage" "bioinfo" /mnt/playpen/lib/lib.so

3. cp /home/manel/genoma1.csv /mnt/playpen/input

4. setfattr "cousage" "bioinfo" /mnt/playpen/input/genoma1.csv

5. cp /home/manel/genoma2.csv /mnt/playpen/input

6. setfattr "cousage" "bioinfo" /mnt/playpen/input/genoma2.csv

28 / 31

Page 36: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Data co-usage

1. cp /home/manel/lib/lib.so /mnt/playpen/lib

2. setfattr "cousage" "bioinfo" /mnt/playpen/lib/lib.so

3. cp /home/manel/genoma1.csv /mnt/playpen/input

4. setfattr "cousage" "bioinfo" /mnt/playpen/input/genoma1.csv

5. cp /home/manel/genoma2.csv /mnt/playpen/input

6. setfattr "cousage" "bioinfo" /mnt/playpen/input/genoma2.csv28 / 31

Page 37: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Replicação + Descoberta de Recursos

29 / 31

Page 38: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Replicação + Descoberta de Recursos

1. cp /home/manel/genoma1.csv /mnt/playpen/input

2. setfattr "rlevel" "3" /mnt/playpen/input/genoma1.csv

3. dataservers=‘getfattr "location" /mnt/playpen/input/genoma1.csv‘

4. for ds in dataservers ; do "ssh ds" ; "bash sim.sh /mnt/playpen/input"

30 / 31

Page 39: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Replicação + Descoberta de Recursos

1. cp /home/manel/genoma1.csv /mnt/playpen/input

2. setfattr "rlevel" "3" /mnt/playpen/input/genoma1.csv

3. dataservers=‘getfattr "location" /mnt/playpen/input/genoma1.csv‘

4. for ds in dataservers ; do "ssh ds" ; "bash sim.sh /mnt/playpen/input"

30 / 31

Page 40: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Replicação + Descoberta de Recursos

1. cp /home/manel/genoma1.csv /mnt/playpen/input

2. setfattr "rlevel" "3" /mnt/playpen/input/genoma1.csv

3. dataservers=‘getfattr "location" /mnt/playpen/input/genoma1.csv‘

4. for ds in dataservers ; do "ssh ds" ; "bash sim.sh /mnt/playpen/input"

30 / 31

Page 41: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Replicação + Descoberta de Recursos

1. cp /home/manel/genoma1.csv /mnt/playpen/input

2. setfattr "rlevel" "3" /mnt/playpen/input/genoma1.csv

3. dataservers=‘getfattr "location" /mnt/playpen/input/genoma1.csv‘

4. for ds in dataservers ; do "ssh ds" ; "bash sim.sh /mnt/playpen/input"

30 / 31

Page 42: Otimizações em Sistemas de Armazenamento mediadas por anotações em Metadados

Discussão, Trabalho em andamento e Trabalhos futuros

• Análise de desempenho◦ Impacto do mecanismo de desvio (em andamento)

• Implantação e experimento pequena escala ( 20 nós) (em andamento)

• Implantação e experimento em grande escala (futuro)• Como verificar o grau de usabilidade ? (futuro)◦ OurBackup Enterprise◦ ...

• Bind Dinâmico (futuro)

31 / 31