7 File Systems

Week 10-12: November 7-22, 2022

  • Analysis and Evolution of Journaling File Systems by Vijayan Prabhakaran, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau
  • LOVE Chapter 13. The first few pages are a good overview of how to think about an interface that works regardless of the underlying file system implementation. You can skim/skip the pages of API details.

7.1 A video summary

7.1.1 The File Abstraction & FS Interfaces

7.1.2 Tracking Free & File Blocks - FS Implementations

7.1.3 The Page Cache and Why we cache?

7.1.4 Journaling

Learning Objectives

  • What benefits does a file abstraction bestow over simple storage blocks?
  • Should a file system be part of the kernel? What assurances can a kernel provide with respect to files?
  • What are the differences between soft and hard links?
  • Illustrate how some certain interface design choices have immediate file system implementation implications. Examine this issue through the concepts of access rights vs. capabilities.
  • What are the drawbacks of the FAT file system and why are inodes an improvement?
  • How can inodes support larger files than what is possible given a block size and the maximum levels of indirection possible?
  • What were the major redesigns introduced in the Unix Fast File System? What problems were these redesigns addressing and how?
  • What are some of the pros and cons of using free block lists vs. free block bitmaps?
  • Elaborate on the similarities and differences between VM and FS and in particular the swap space and the page cache?
  • What are the benefits of a unified page and buffer cache? Why did earlier operating systems maintain separate caches?
  • Why was using a hash-table to track pages in the cache discontinued in Linux 2.6? How does the current implementation of radix trees to track file blocks in the cache an improvement?
  • When is a file system inconsistent?
  • How does caching and write-back policies interplay to cause such inconsistencies?
  • Compare the different file systems, Journaling, Log-structured and Fast File Systems in terms of their performance on different workloads and choice in recovery-time/write-overhead tradeoff.
  • Consider different storage technologies and how you would design a FS that takes advantage of the device’s unique characteristics.