An inode-based filesystem implemented from scratch in C over a 256 MB virtual block store, with persistent storage and a POSIX-like API
A complete inode-based filesystem written from scratch in C, layered over a 256 MB virtual block store. It supports formatting, mounting, unmounting, and persistent storage that survives across sessions, exposing a POSIX-like API for file and directory operations.
The filesystem successfully supports large files and directories with efficient block allocation, demonstrating the effectiveness of the inode-based design. The use of indirect pointers allows for scalable file sizes without excessive metadata overhead.
This was a long term project for my Operating Systems course, and it provided valuable experience in low-level systems programming, memory management, and filesystem design. Through this project I found a real joy in solving and debugging low level problems, especially the more difficult issues.
Virtual Block Store
Block Addressing