Learning filesystem

I have been asked this question many times – “What are the best books/resources to learn about unix filesystems?”. Unfortunately, there is no clear answer. There is no good/authoritative one or two books that can teach you the basics of filesystem design and development. (Yes, I know there are couple of books, but none of them really fits the bill !!!). So, what should a new person starting in filesystem development should do?

Assuming the person has basic knowledge of comp sci (OS theory, algorithms etc), I would recommend to go through the filesystem related chapters on these 3 books:

  1. Operating systems: design and Implementation – Andrew S Tanenbaum
  2. Design and Implementation of FreeBSD Operating system -By M K McKusick
  3. Unix Internals – The new frontiers – Uresh Vahalia

Step 2: Once you got the basics covered, you can read these books to broaden your knowledge:

Step 3: Here, there is no limit. You can try to understand specific of individual filesystems, learn about new trends and research in the filesystems, various complex design issues of filesystems and so on . The list given below is only a starting point.

  1. KHB: A Filesystems reading list
  2. The Google File System
  3. Filesystems which have been ported to multiple kernels – MVFS (AIX, Solaris, Linux, Windows), IBM GPFS (AIX, Linux), ZFS (Solaris, FreeBSD)
  4. Copy-on-write filesystems – WAFL, ZFS and BTRFS
  5. File system consistency issues – Soft update vs Journaling then Log structured file system and finally NVRAM
  6. Filesystems and SSD : bcache, Hybrid Aggregates, more to come here …
  7. Compare various “Distributed” filesystems – GPFS , GFS2 (page 253), OCFS2, GlusterFS and Ceph etc…etc..
  8. Networked filesystem protocols : Read about NFS v4.1 and CIFS
  9. Log structured file system
  10. Soft updates, hard problems
  11. Filesystem in USErspace
  12. Windows vs Unix file system semantics
  13. BTRFS : Atime and btrfs,
  14. Building the next generation file system for Windows – ReFS
  15. ZFS – Jeff Boncwick’s blog, Adam Leventhal’s blog, ZFS – Last word in the filesystem ,
  16. NFS – Mike Eisler’s blog,
  17. More to come …

Leave a Reply

Your email address will not be published. Required fields are marked *