Top Banner
LogFS Introduction Basics of Garbage Collection Garbage Collection in LogFS orn Engel, Dirk Bolte & Robert Mertens Lazybastard.org, IBM & University of Osnabr¨ uck January 16, 2007 orn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS
36
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Garbage Collection in LogFS

Jorn Engel, Dirk Bolte & Robert Mertens

Lazybastard.org, IBM & University of Osnabruck

January 16, 2007

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 2: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Flash properties

For all flashes:

Medium split into eraseblocks (16-128 KiB)

Eraseblocks can be written in any order

Eraseblocks must be erased before being written

Eraseblocks can be partially written

For some flashes:

Eraseblock split into pages (8-2048 Bytes)

Partial pages cannot get written

Writes within eraseblocks must happen in order

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 3: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

LogFS device abstraction

For all media:

Medium split into segments

Segments can be written in any order

Segments must be erased before being written

Segments can be partially written

For all media:

Eraseblock split into blocks

Partial blocks cannot get written

Writes within segments must happen in order

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 4: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Mapping flash to LogFS

One or more eraseblocks form a segment

One or more flash pages form a block

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 5: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Three storage areas

Superblock (1 Segment)

Journal (2-8 Segments)

Object store

Superblock

Journal 0

Journal 1

Object Store 0

Object Store N

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 6: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Object store

Object store split into segments

Segments split into blocks

Last block of each segment contains summary

SumData Data Data Data Data Data Data

Superblock

Journal 0

Journal 1

Object Store 0

Object Store N

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 7: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Segment summary

Summary contains for each block:

Inode number (ino)

Logical position in a file (pos)

Physical offset of the block (ofs)

Plus some segment-global information:

Erase count

Write time

...

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 8: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Block verification

No bitfields to track block usage

A block is used iff an inode points to it

Summary contains (ino,pos) pair as a back pointer

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 9: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

File format

Regular Unix format with inode, indirect blocks and data blocks:

Regular file/directory/...

Inode

Level 2

Level 1

Level 0

Level N

1x indirect blocks1x indirect blocks

Data Data Data Data Data Data Data Data Data Data Data Data Data

2x indirect blocks 2x indirect blocks

1x indirect blocks 1x indirect blocks

Nx indirect blocks

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 10: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Inode file

No reserved areas for inodes

Inodes stored in inode file (ifile)

Ifile’s inode stored in journal

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 11: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Inode file

Inode file

Regular file/directory/...

Inode Inode Inode Inode Inode Inode Inode Inode Inode Inode Inode

Level 2

Level 1

Level 0

Level N

Level 2

Level 1

Level 0

Level N

1x indirect blocks1x indirect blocks

Data Data Data Data Data Data Data Data Data Data Data Data Data

2x indirect blocks 2x indirect blocks

1x indirect blocks 1x indirect blocks 1x indirect blocks1x indirect blocks

2x indirect blocks 2x indirect blocks

1x indirect blocks 1x indirect blocks

Nx indirect blocks

Inode

Nx indirect blocks

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 12: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Writes

Flash must be erased before being written

Eraseblocks too large to be practical

Writes cannot happen in-place

Solution: Wandering tree

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 13: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Writes

The red block is overwritten with new data ...

Regular file/directory/...

Inode

1x indirect blocks1x indirect blocks

Data Data Data Data Data Data Data Data Data Data Data Data

2x indirect blocks

1x indirect blocks

Level 2

Level 1

Level 0

Level N

Data

1x indirect blocks

2x indirect blocks

Nx indirect blocks

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 14: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Writes

... and has to be written to a different location.

Regular file/directory/...

Inode

1x indirect blocks1x indirect blocks

Data Data Data Data Data Data Data Data Data Data Data Data

2x indirect blocks

1x indirect blocks

Data

Level 2

Level 1

Level 0

Level N

Data

1x indirect blocks

2x indirect blocks

Nx indirect blocks

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 15: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Writes

Since the indirect block still points to the old location ...

Regular file/directory/...

Inode

1x indirect blocks1x indirect blocks

Data Data Data Data Data Data Data Data Data Data Data Data

2x indirect blocks

1x indirect blocks

Data

Level 2

Level 1

Level 0

Level N

Data

1x indirect blocks

2x indirect blocks

Nx indirect blocks

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 16: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Writes

... it has to be changed as well ...

Regular file/directory/...

Inode

1x indirect blocks1x indirect blocks

Data Data Data Data Data Data Data Data Data Data Data Data

2x indirect blocks

1x indirect blocks

Data

Level 2

Level 1

Level 0

Level N

Data

1x indirect blocks

2x indirect blocks

Nx indirect blocks

1x indirect blocks

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 17: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Flash propertiesLogFS FormatWandering Tree

Writes

... along with all other indirect blocks further up.

Regular file/directory/...

Inode

1x indirect blocks1x indirect blocks

Data Data Data Data Data Data Data Data Data Data Data Data

2x indirect blocks

1x indirect blocks

Data

1x indirect blocks

2x indirect blocks

Nx indirect blocks

Level 2

Level 1

Level 0

Level N

Data

1x indirect blocks

2x indirect blocks

Nx indirect blocks

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 18: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Why Garbage Collection?

Writes happen out-of-place

Blocks obsoleted by writes

Near-empty segments are useless

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 19: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Why Garbage Collection?

A single valid block in a segment prevents reuse

SumData Data Data Data Data Data Data

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 20: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Simple Garbage Collection

GC has to move each valid block away ...

SumData Data Data Data Data Data Data

SumData

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 21: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Simple Garbage Collection

... thereby obsoleting the old block ...

SumData Data Data Data Data Data Data

SumData

SumData Data Data Data Data Data Data

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 22: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Simple Garbage Collection

... so it can be deleted.

SumData

SumData Data Data Data Data Data Data

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 23: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Simple Garbage Collection

GC should free more segments than it uses.

A B C

D FE

Sum

A’ B’ C’ D’ F’E’

Sum

Sum

Sum

Sum

A B C

D E F

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 24: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Simple Garbage Collection

GC must free more segments than it uses!

A B C

D FE

Sum

A’ B’ C’ D’ F’E’

Sum

Sum

Sum

Sum

A B C

D E F

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 25: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Simple Garbage Collection

GC MUST free more segments than it uses!!!

GC MUST free more segments than it uses!!!

GC MUST free more segments than it uses!!!

A B C

D FE

Sum

A’ B’ C’ D’ F’E’

Sum

Sum

Sum

Sum

A B C

D E F

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 26: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Garbage Collection with a Wandering Tree

Wandering tree?

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 27: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Garbage Collection with a Wandering Tree

Didn’t we have a wandering tree?

Regular file/directory/...

Inode

1x indirect blocks1x indirect blocks

Data Data Data Data Data Data Data Data Data Data Data Data

2x indirect blocks

1x indirect blocks

Data

1x indirect blocks

2x indirect blocks

Nx indirect blocks

Level 2

Level 1

Level 0

Level N

Data

1x indirect blocks

2x indirect blocks

Nx indirect blocks

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 28: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Garbage Collection with a Wandering Tree

Oh dear!

Sum

Sum

Sum

SumA0

A1

A2

A3

Sum

Sum

Sum

Sum

A0’ A1’ A2’ A3’ Sum

B0 C0 B0 C0

A1

A2

A3

A0

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 29: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Garbage Collection with a Wandering Tree

Mustn’t GC free more segments than it uses?

Sum

Sum

Sum

SumA0

A1

A2

A3

Sum

Sum

Sum

Sum

A0’ A1’ A2’ A3’ Sum

B0 C0

Sum

B0’

C0’

B1’

C1’

B2’

C2’B3’ C3’

A0 B0 C0

A1

A2

A3

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 30: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Garbage Collection with a Wandering Tree

Ooooh!

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 31: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Introducing Levels

Definition: Two nodes are on the same level, if their distance fromthe root node is identical

Regular file/directory/...

Inode

Level 2

Level 1

Level 0

Level N

1x indirect blocks1x indirect blocks

Data Data Data Data Data Data Data Data Data Data Data Data Data

2x indirect blocks 2x indirect blocks

1x indirect blocks 1x indirect blocks

Nx indirect blocks

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 32: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Garbage Collection with Levels

Blocks on the same level are written to the same segments

Blocks on different levels are written to different segments

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 33: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Garbage Collection with Levels

Sum

Sum

Sum

SumA0

A1

A2

A3

Sum

Sum

Sum

SumB0 C0 B0 C0A0

A1

A2

A3

A3’ SumB3’ C3’

A0’ SumB0’ C0’

A1’ SumB1’ C1’

A2’ SumB2’ C2’

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 34: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Garbage Collection with Levels

Aaaah!

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 35: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Thanks!

Arnd BergmannMartin Schwidefsky

Dirk BolteRobert Mertens

You, the audience

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS

Page 36: 20090420 ref gc

LogFS IntroductionBasics of Garbage Collection

Why Garbage Collection?Simple Garbage CollectionGarbage Collection with a Wandering TreeLevels

Wrapup

Questions?Suggestions?Sponsors?

Jorn Engel, Dirk Bolte & Robert Mertens Garbage Collection in LogFS