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

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

Embed Size (px)

Citation preview

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