NASD, GoogleFS, Farsite
Readings
Garth A. Gibson et al., "A Cost-Effective, High-Bandwidth Storage Architecture" (1998)
Sanjay Ghemawat et al., "The Google File System" (2003)
William J. Bolosky et al., "The Farsite Project: A Retrospective" (2007)
Questions
- What were the target environments for these filesystems? How did these environments shape their assumptions?
- What are the key ideas behind each filesystem?
- What are the strengths and weaknesses of each design?
- What are the strengths and weaknesses of each implementation?
- Which system is best suited for today's Internet? How about tomorrow's?
Questions for NASD
- Is giving direct access between client and drive a good idea?
- Are there substantial advantages in storing variable-length objects over fixed-sized blocks?
- Is putting the filesystem on the drive a good idea? Should more control and awareness be given to hardware devices?
- What are the strengths and weaknesses of the capability-based cryptography which NASD makes use of?
Questions for GoogleFS
- How does the Google file system implement security?
- Doesn't
- Is using a central server (point of access) a good design decision?
- It certainly works
- Makes administration easier
- As long as redundant and fast, why bother with the hassle of synchronization?
- Is removing random writes a good idea?
- They didn't actually remove it, but it is horribly inneficient
- BigTable specifically reduces the instances of random write and implements a way to append the same information
- Implementing this style would have killed their model
- Is the speedup attained by GFS's record-append method worth the sacrifice of Application overhead?
- Needing to manage duplication yourself
- Guaranteed access to specific offsets, which helps consistency, though wastes space
Questions for Farsite
- Byzantine fault tolerance?
- Have several entities, some of which may be compromised in some way. They might either be corrupted, compromised, or simply down.
- Assumptions for a Byzantine protocol? Failures are independent, so they are not colluding.
- Good model for hardware failures
- Bad model for software failures (infection, etc)
- Not really the appropriate solution, software is your main likely culprit, not hardware problems.
- Tried to implement a simpler version using checksums
- Have several entities, some of which may be compromised in some way. They might either be corrupted, compromised, or simply down.
- How similar and different compared to OceanStore?
- Uses crypto
- Uses commodity hardware
- Byzantine Fault tolerance
- Namespaces are different
- Simpler version than OceanStore
- Only one administrative domain (someone HAS admin access)
- Planned for complete distribution, though ended up implementing a central server
- Made sure that every machine was identified through different keys
- Oceanstore was originally designed for dedicated distributed network servers, Farsite was designed for local commodity machines
- What's up with the file lease mechanism?
- Four kinds
- Likely discovered an application class that broke and needed different semantics
- Unable to give truly seamless access as if local
- Content, name, access, machine leases
- Four kinds
Questions for Farsite retrospective
- If using different programming methods... how does this file-system work given different programming models
- Details of Byzantine fault tolerance