more i/o services and recovery jeff chase duke university

40
More I/O services and recovery Jeff Chase Duke University

Upload: nathan-boone

Post on 11-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: More I/O services and recovery Jeff Chase Duke University

More I/O services and recovery

Jeff ChaseDuke University

Page 2: More I/O services and recovery Jeff Chase Duke University
Page 3: More I/O services and recovery Jeff Chase Duke University

DBufferCache DBuffer

read(), write()startFetch(), startPush()waitValid(), waitClean()

DBuffer dbuf = getBlock(blockID)releaseBlock(dbuf)

The DeFiler buffer cache

Device I/O interfaceAsynchronous I/O to/from buffersblock read and writeBlocks numbered by blockIDs

File abstraction implemented in upper DFS layer.All knowledge of how files are laid out on disk is at this layer.Access underlying disk volume through buffer cache API.Obtain buffers (dbufs), write/read to/from buffers, orchestrate I/O.

Page 4: More I/O services and recovery Jeff Chase Duke University

“Filers”

• Network-attached (IP)

• RAID appliance

• Multiple protocols– iSCSI, NFS, CIFS

• Admin interfaces

• Flexible configuration

• Lots of virtualization: dynamic volumes

• Volume cloning, mirroring, snapshots, etc.

• NetApp technology leader since 1994 (WAFL)

Page 5: More I/O services and recovery Jeff Chase Duke University

What is clustered Data ONTAP?

NetApp’s “scale-out” clustering solution1-24 “nodes” (filers), 10 Gb ethernet

interconnectDesigned for extreme performance and

flexibility

Key concepts:– Vserver– Aggregate– Volume (FlexVol)

5NetApp Confidential - Limited Use

Page 6: More I/O services and recovery Jeff Chase Duke University

Architecture of clustered Data ONTAP

N-BladeNetwork,Protocols

Client Client Client Client Client

Disks

Network

HA

D-BladeWAFL,RAID,Storage,HA,NVRAM

N-BladeNetwork,Protocols

D-BladeWAFL,RAID,Storage,HA,NVRAM

Nod

e

HA

Pai

r

N-BladeNetwork,Protocols

D-BladeWAFL,RAID,Storage,HA,NVRAM

N-BladeNetwork,Protocols

D-BladeWAFL,RAID,Storage,HA,NVRAM

HA

Pai

r

SpinNP

NetApp Confidential - Limited Use 6

Page 7: More I/O services and recovery Jeff Chase Duke University

Notes on “scale-out”

• NetApp filer solution is “scalable”.– “Just buy more blades.”

– Load is distributed: among the blades, interfaces, disks, etc..

– If we add another blade, it adds to the total load we can serve.

• What about failure?– Redistribute load to the surviving blades.

– But what if the failed blade has some critical state?

• E.g., D-blades have writeback I/O caches.– Replicate nodes in “HA pairs” (Highly Available).

– If one fails, the other can take over. (like the “buddy system”)

Page 8: More I/O services and recovery Jeff Chase Duke University

File data and metadata

inode

An inode could be “anywhere” on disk. How to find the inode for a given file?

A fixed-size inode has a fixed-size block map.

How to represent large files that have more logical blocks than can fit in the inode’s map?

block map

Once upon a time/nin a l

and far far away,/nlived t

he wise and sagewizard.

attributes

data blocks

A file’s data blocks could be “anywhere” on disk. The file’s inode maps them.

Page 9: More I/O services and recovery Jeff Chase Duke University

Representing Large Filesinode

indirectblock

doubleindirectblock

Suppose block size = 8KB12 direct block map entries: 96KB of data.One indirect block pointer in inode: + 16MB of data.One double indirect pointer in inode: +2K indirects.

Maximum file size is 96KB + 16MB + (2K*16MB) + ...

Classic Unix file systems

inode == 128 bytes

inodes are packed into blocks

Each inode has 68 bytes of attributes and 15 block map entries.

directblockmap

indirectblocks

Page 10: More I/O services and recovery Jeff Chase Duke University

Skewed tree block maps

• Inodes are the root of a tree-structured block map.– Like multi-level hierarchical page tables, but

• These maps are skewed.– Low branching factor at the root: just enough for small files.

– Small files are cheap: just need the inode to map it.

– Inodes for small files are small…and most files are small.

• Use indirect blocks for large files– Requires another fetch for another map block

– But the shift to a high branching factor covers most large files.

• Double indirects allow very large files, at higher cost.

• Other advantages to trees?

Page 11: More I/O services and recovery Jeff Chase Duke University

Writes in the FS buffer cache

• Delayed writes– Partial-block writes may be left dirty in the cache. The push is

deferred in expectation of later writes to the same block.

• Write-behind– Dirty blocks are pushed asynchronously; write call returns before

push is complete.

– May lose data! Be sure you know the failure semantics of the file systems you use in your life. A classic UNIX file system may discard any subset of recent writes on failure.

– Fsync system call to wait for push, for use by applications that really want to know their data is “safe”.

– Good file systems sync-on-close.

Page 12: More I/O services and recovery Jeff Chase Duke University

Failures, Commits, Atomicity

• Hard state is state (data) that the service needs to function correctly. Soft state is non-critical.

• What guarantees does the system offer about the hard state if the system fails?– Durability

• Did my writes commit, i.e., are they saved? Can I get it back?

– Failure atomicity

• Can a set of writes “partly commit”?

– Recoverability and Corruption

• Can we recover a previous state?

• Is the state consistent?

• Is the metadata well-formed?

Page 13: More I/O services and recovery Jeff Chase Duke University

Failure/Atomicity

• File writes are not guaranteed to commit until close.– A process can force commit with a sync.

– The system forces commit every (say) 30 seconds.

– Failure may lose an arbitrary subset of writes.

– Want better reliability? Use a database.

• Problem: safety of metadata.– How to protect the integrity of the metadata structures?

– E.g., directory tree, inodes, block map trees

– Metadata is a complex linked data structure, e.g., a tree.

– Must be possible to restore with a scrub (“fsck”) on restart.

Page 14: More I/O services and recovery Jeff Chase Duke University

Write Anywhere File Layout (WAFL)

Page 15: More I/O services and recovery Jeff Chase Duke University

Metadata updates and recovery

• Metadata updates incur extra seek overhead.– E.g., extending a file requires writes to the inode, direct

and/or indirect blocks, cylinder group bit maps and summaries, and the file block itself.

• Metadata items are often updated repeatedly, so delayed writes help.

• But delayed writes incur a higher risk of file system corruption in a crash.– If you lose your metadata, you are dead in the water.

• Option 1: careful write ordering, with scrub on recovery

• Option 2: shadowing (e.g., WAFL)

• Option 3: logging/journaling (used in databases)

Page 16: More I/O services and recovery Jeff Chase Duke University

Disk write behavior (cartoon version)

• Disk may reorder pending writes.– Limited ordering support (“do X before Y”).

– Can enforce ordering by writing X synchronously: wait for write of X to complete before issuing Y.

• Writes at sector grain are atomic (512 bytes?).

• Writes of larger blocks may fail “in the middle”.

• Disk may itself have a writeback cache.– Even “old” writes may be lost.

– (Can be disabled.)

Page 17: More I/O services and recovery Jeff Chase Duke University

Metadata write orderingA common approach to safety of file system metadata:

•Order essential metadata writes carefully.– Various techniques to enforce a partial order of writes to the disk, i.e.,

ensure that write A completes before write B begins.

•Maintain invariants! E.g., avoid dangling references.– Never recycle a structure (block or inode) before zeroing all pointers to it

(truncate, unlink, rmdir).

– Never point to a new structure before it has been initialized. E.g., sync inode on creat before filling directory entry, and sync a new block before writing the block map.

•Traverse the metadata tree to rebuild derived structures.– Can rebuild e.g., free block bitmaps, free inode bitmaps.

Page 18: More I/O services and recovery Jeff Chase Duke University

A quick peek at sequential writein BSD Unix “FFS” (Circa 2001)

physicaldisk

sector

time in milliseconds

writewrite stallread

sync command(typed to shell)pushes indirectblocks to disk

read nextblock of

free spacebitmap (??)

note sequential block allocation

sync

Page 19: More I/O services and recovery Jeff Chase Duke University

Sequential writes: a closer look

writewrite stall

140 msdelay for

cylinder seeketc. (???)

longer delayfor head movement

to push indirectblocks

16 MB in one second(one indirect block worth)

time in milliseconds

physicaldisk

sector

Push indirect blocks synchronously.

Page 20: More I/O services and recovery Jeff Chase Duke University

Small-File Create Storm

writewrite stall

time in milliseconds

physicaldisk

sector

sync

sync

syncinodes andfile contents

(localized allocation)

delayed-writemetadata

note synchronouswrites for some

metadata

50 MB

Page 21: More I/O services and recovery Jeff Chase Duke University

WAFL and Writes

• In WAFL, any modified data or metadata can go anywhere on the disk.– Don’t overwrite the “old” copies!

– Group writes together and write them in bursts!

– Avoid small writes! better RAID performance

• An arbitrary stream of updates can be installed atomically.– Retain the old copy, switch to new copy with a single

write to the root of the tree (shadowing).

– Old copy lives on as a point-in-time snapshot.

Page 22: More I/O services and recovery Jeff Chase Duke University

Shadowing

1. starting pointmodify purple/grey blocks

2. write new blocks to diskprepare new block map

3. overwrite block map(atomic commit)

and free old blocks

Page 23: More I/O services and recovery Jeff Chase Duke University

WAFL’s on-disk structure (high level)

23NetApp Confidential - Limited Use

Root Inode

File Data Blocks

Metadata

Page 24: More I/O services and recovery Jeff Chase Duke University

WAFL Snapshots

The snapshot mechanism is used for user-accessible snapshots and for transient consistency points.

Page 25: More I/O services and recovery Jeff Chase Duke University

Another Look

Page 26: More I/O services and recovery Jeff Chase Duke University

Write Anywhere File Layout (WAFL)

Page 27: More I/O services and recovery Jeff Chase Duke University

WAFL and the disk system

• WAFL generates a continuous stream of large-chunk contiguous writes to the disk system.– WAFL does not overwrite the old copy of a modified structure: it can write a

new copy anywhere. So it gathers them together.

• Large writes minimize seek overhead and deliver the full bandwidth of the disk.

• WAFL gets excellent performance by/when using many disks in tandem (“RAID”)…

• …and writing the chunks in interleaved fashion across the disks (“striping”).

• Old copies of the data and metadata survive on the disk and are accessible through point-in-time “snapshots”.

Page 28: More I/O services and recovery Jeff Chase Duke University

Fujitsu

• Redundant Array of Independent Disks

• Striping for high throughput for pipelined reads.

• Data redundancy: parity• Enables recovery from one

disk failure• RAID5 distributes parity:

no“hot spot” for random writes

• Market standard

Building a better disk: RAID 5

Page 29: More I/O services and recovery Jeff Chase Duke University

RAID Parity with XOR

• Bitwise exclusive or: xor

• “One or the other but not both”

• Bit sum, with no carry

– Commutative, associative

• Or: sum up the 1s, and choose parity to make the sum even.

– “Even parity”

• If any bit is lost, xor of the surviving bits gets it back.

• If any bit flips, the parity flips.

• What if two bits flip or are lost?

XOR

Page 30: More I/O services and recovery Jeff Chase Duke University

WAFL & NVRAM

NVRAM provides low latency pending request stable storage– Many clients don’t consider a write complete

until it has reached stable storageAllows WAFL to defer writes until many are

pending (up to ½ NVRAM)– Big write operations: get lots of bandwidth out

of disk– Crash is no problem, all pending requests

stored; just replay– While ½ of NVRAM gets written out, other is

accepting requests (continuous service)

30NetApp Confidential - Limited Use

Page 31: More I/O services and recovery Jeff Chase Duke University

Postnote

• The following slides on logging were not covered in lecture and won’t be tested.

Page 32: More I/O services and recovery Jeff Chase Duke University

Alternative: Logging/Journaling• Logging can be used to localize synchronous metadata

writes, and reduce the work that must be done on recovery.

• Universally used in database systems.• Used for metadata writes in journaling file systems

• Key idea: group each set of related updates into a single log record that can be written to disk atomically (“all-or-nothing”).– Log records are written to the log file or log disk sequentially.

• No seeks, and preserves temporal ordering.

– Each log record is trailed by a marker (e.g., checksum) that says “this log record is complete”.

– To recover, scan the log and reapply updates.

Page 33: More I/O services and recovery Jeff Chase Duke University

Transactions

BEGIN T1 read X read Y … write XEND

Transactions group a sequence of operations, often on different objects.

BEGIN T2 read X write Y … write XEND

Page 34: More I/O services and recovery Jeff Chase Duke University

Recoverable Data with a Logvolatile memory (e.g., buffer cache)

logsnapshot

Your program (or file system or database software)

executes transactions that read or change the data structures in memory.

Your data structures in memory

Push a checkpoint or snapshot to disk

periodically

Log transaction events as they occur

After a failure, replay the log into the last snapshot to recover the data structure.

Page 35: More I/O services and recovery Jeff Chase Duke University

Transactions: logging

1. Begin transaction2. Append info about modifications to

a log3. Append “commit” to log to end x-

action4. Write new data to normal database Single-sector write commits x-

action (3)

Invariant: append new data to log before applying to DBCalled “write-ahead logging”

Transaction CompleteTransaction Complete

Page 36: More I/O services and recovery Jeff Chase Duke University

Transactions: logging

1. Begin transaction2. Append info about modifications to

a log3. Append “commit” to log to end x-

action4. Write new data to normal database Single-sector write commits x-

action (3)

What if we crash here (between 3,4)?On reboot, reapply committed updates in log order.

Page 37: More I/O services and recovery Jeff Chase Duke University

Transactions: logging

1. Begin transaction2. Append info about modifications to

a log3. Append “commit” to log to end x-

action4. Write new data to normal database Single-sector write commits x-

action (3)

What if we crash here?On reboot, discard uncommitted updates.

Page 38: More I/O services and recovery Jeff Chase Duke University

Anatomy of a Log

• A log is a sequence of records (entries) on recoverable storage.

• Each entry is associated with some transaction.

• The entries for transaction T record execution progress of T.

• Atomic operations:– Append/write entry to log tail

– Truncate entries from log head

– Read/scan entries

• Log writes are atomic and durable, and complete detectably in order.

head (old)

tail (new)

LSN 11XID 18

LSN 13XID 19

LSN 12XID 18

LSN 14XID 18commit

...Log

SequenceNumber(LSN)

TransactionID (XID)

commitrecord

Page 39: More I/O services and recovery Jeff Chase Duke University

Using a Log

• Log entries for T record the writes by T or method calls in T.– Redo logging

• To recover, read the checkpoint and replay committed log entries. – “Redo” by reissuing writes or reinvoking the

methods.

– Redo in order (head to tail)

– Skip the records of uncommitted Ts

• No T can affect the checkpoint until T’s commit is logged.– Write-ahead logging

head (old)

tail (new)

LSN 11XID 18

LSN 13XID 19

LSN 12XID 18

LSN 14XID 18commit

...Log

SequenceNumber(LSN)

TransactionID (XID)

commitrecord

Page 40: More I/O services and recovery Jeff Chase Duke University

Managing a Log

• On checkpoint, truncate the log– No longer need the entries to recover

• Checkpoint how often? Tradeoff:– Checkpoints are expensive, BUT

– Long logs take up space

– Long logs increase recovery time

• Checkpoint+truncate is “atomic”– Is it safe to redo/replay records whose effect

is already in the checkpoint?

– Checkpoint “between” transactions, so checkpoint is a consistent state.

– Lots of approaches

head (old)

tail (new)

LSN 11XID 18

LSN 13XID 19

LSN 12XID 18

LSN 14XID 18commit

...Log

SequenceNumber(LSN)

TransactionID (XID)

commitrecord