CSE221 - lec13: File System Consistency: Soft Updates & Split FS
date
Nov 21, 2024
slug
cse221-lec13
status
Published
tags
System
summary
type
Post
Problem: FS Consistency after a crash
File System Inconsistencies
- lost some file data: tolerable
- inconsistent metadata: not tolerable
- metadata could include: inode, directory, bitmap for resouce management
fsck: File System Checker
- check & restore consistency
- takes long time to run
- can’t always restore consistency, may need human intervention
File Buffer Cache
- caches data in memory
- write back to disk periodically
- hold data and metadata
- fsync syscall: force to flush to disks
Consistency in FFS
- update metadata synchronously
Soft Updates: A Solution to the Metadata Update Problem in File Systems
Ordering Constraints in FS
- no dangling pointers: initilize before pointing to an object
- don’t reuse until old pointers be removed
- never reset old pointers until new pointers persists (example: rename file)
Approach
- write modifications to buffer cache
- track dependencies between blocks
- write blocks asynchronously in a safe order (blocks with no dependencies should be written first ideally)
Challenges: circular dependencies
- if dependencies are tracked at block level, there are often circular dependencies
Dependencies
- Create files: (ordering constraint 1)
- create a inode
- update directory entry to points to it
- Delete files: (ordering constrains 2)
- remove directory entry
- update inode
Softupdate Solutions
- fine-grained dependency tracking: track at pointer level
- undo/redo
- temporarily undo updates in memory
- write back
- redo updates in memory
Overhead
- cpu overhead: extra work such as undo / redo and mataining dependencies
- memory overhead: track dependencies data structures
Optimizations
- write many blocks at once (when no dependencies)
- skip write that are undone
Evaluation
- Conventional FFS: reliable, poor performance
- FFS async write (No-Order): good performance, no consistency guarentee
- Softupdate
- Write Ahead Logging
- result: performance approaches no-order, better recovery
Summary
- metadata consistency and ordering constraints
- softupdates:
- fine-grained dependency tracking
- undo / redo
SplitFS: Reducing Software Overhead in File Systems for Persistent Memory
Persistent Memory
- attached via memory bus (faster than PCIe)
- released by Intel at around 2019
PM Property
- persistent
- 1 / 2 - 1 / 3 bandwidth of DRAM
- 2 - 4x slower than DRAM
- load / store interface
- larger capacity than DRAM, smaller than disks
- byte addressable
Challenges: caching
- need to force write through
- non-temporal move MOVNT on x86
- flush CLFLUSH on x86
- fence instructions to prevent reordering
SplitFS
- NOVA: in kernel FS
- Others: in user FS
- SplitFS: hybrid approach
- data operations: in user space
- meta data operations: in kernel space
- optimize common case (data operations)
- goal: handle unmodified apps
- use staging files for consistency
- use relink to avoid copy
Summary
- hybrid (user/kernel) FS for persistent memory
- optimize for data operations
- staging files & relink