Reference no: EM133846439
Project
Details
For this project, you will design and implement a custom file system that simulates how files and directories are stored, organized and accessed on a disk, just like we have explored in the latter half of this semester with FAT, ext and Btrfs. Your file system design will include:
File creation/deletion
Directory structure and navigation File metadata
Data block allocation
Optional features such as persistence, permissions, journaling, etc.
You will need to explain what shortcomings from other filesystems your filesystem as designed to overcome and on what data structure(s) your filesystem is based.
Core Components
Several core components are required:
Disk Layer (Virtual Disk): this is your disk image file (disk.img) that simulates a physical drive. You will be responsible for implementing the disk driver (like the Disk.py/c file that was provided in the labs) for your project. Feel free to use the existing driver file provided, modify it as needed or come up with your own original driver file.
Block Allocation System: This is how you manage used and free blocks on the disk. You will need some mechanism for allocation/deallocating blocks for file data and metadata. Hire best assignment help now!
Directory Structure: This is the way you map names to files/other directories. You will need to support hierarchical paths like "/home/user/somefile.txt". This needs to implement common directory navigation and modification commands like cd, mkdir, ls and current working directory.
File Operations: You will need to implement common file read/write operations as well as management operations like read, write, touch, delete, copy, link, etc. You will also need to support file data that can span across multiple blocks.
Deliverables
Your project has three parts to the deliverables. A write-up fully detailing the functionality of your file system, the underlying structures, the reasoning those structures were used and what your filesystem does better than other filesystems. You will then also code up a prototype of your filesystem with a core implementation of the filesystem, a disk driver, the shell for your filesystem (can be included in your core implementation like the other filesystem labs) and full documentation on how your filesystem functions and how to run it.
The final deliverable is a presentation to the class on your filesystem summarizing the write-up and demonstrating your prototype.
Various milestones will be added to the D2L dropbox with specific deliverables for those milestones that will cumulate to the full deliverable package.