File System Project Seminar (2017)

Prof. Dr. Andreas Polze

Andreas Grapentin, M.Sc.
Sven Köhler, M.Sc.
Max Plauth, M.Sc.
Jossekin Beilharz, M.Sc.
Felix Eberhardt, M.Sc.

In this course, we want to discuss the relevant theoretical and practical solutions available for file system development.

We will showcase fundamental concepts of historic single-computer filesystems, means of abstractions (virtual file systems), and common implementation strategies for physical layout. Features like journaling, block-based checksumming, pools, and snapshotting are introduced using sources from Linux, FreeBSD, and Solaris.

Further topics include network file systems, distributed file systems and computing file-systems.

Organization

Extent: 4 semester hours (6 graded credit points)

Lectures: Wednesday, 13:30 - 15:00, HS 3

Grading: 50 % project, 50 % presentation and report

The seminar consists of 2 hours of lecture each week and another 2 hours project work in teams. Participants are expected to:
  • Have recurring meetings with their mentors on the current project progress.
  • Give a 30-45 minute presentation on their topic.
  • Write a 5-10 pages report (template will be provided).

Slides

Project Topics

We are open for any topic suggestions. Each of the following proposed topics may be worked on by teams of 1-3 students.

New File Systems in OpenSolaris (Schilix)

  • exFAT: Build a new implementation build upon exisiting ones, documentations and reverse engineering.
  • TranslucentFS: Implement a virtual filesystem that overlays read-only contents, by storing changes apart from the original data. Possible application as root filesystem in a live distribution. Compare: UnionFS.
  • Event notification interface for the VFS. Provide new kernel interfaces that notifies processes when the contents of a file or directory changed. Compare: kqueue in FreeBSD

In-Place File System Upgrade

Document examples of existing projects, that convert one file system into another, while keeping the original file data in place. Implement an experimental conversion.

Examples include UFS to ZFS, ext4 to btrfs. We are open to your suggestions.

FPGA File System

Implement a file system that uses the POWER8 CAPI interface to access external accelerators like FPGAs.
  • Design an on-FPGA file system for accelerator function units, that facilitates storage access at minimum requirements on the FPGA area.
  • Build an FPGA assisted file sytem, that off-loads operations/encryption to the accelerator.

Back To The Future

Transparently extend legacy file systems with modern features, while (preferably) preserving compatability to the original implementation.

Explore feasibility and present experimental implementions. Examples include

  • Journaling in FAT
  • Snapshotting in ext4
  • Checksumming in UFS

Discovering IPFS

Document the installation and setup of an InterPlanetary File System. Simluate network disconnects, document partioning and methods of conflict resolution. Analyze weaknesses and highlight potential attack vectors.