Competition Topic: Basic File System and RAID

Goals

The final submission should consist of the source code and a series of binary files, which should be extracted to /usr/local/bin.

It should correctly format the disk:

sudo mkfs.myfs /dev/sda1

Of course, you can also choose not to format a physical disk and instead use a virtual disk file:

dd if=/dev/zero of=/tmp/disk.img bs=1G count=1
sudo mkfs.myfs /tmp/disk.img

Then, you can mount the filesystem to a directory:

sudo mount -t myfs /dev/sda1 /mnt

and allow automatic mounting using the /etc/fstab file:

/dev/sda1 /mnt myfs defaults 0 0

Limitations

The entire project must be written in C\C++\Rust\Go\Erlang\C#\Java. The use of third-party libraries is allowed.

Support for devices such as SATA, NVME, USB, and SD cards is required.

The implemented file system must support:

  • File creation, deletion, reading, and writing
  • File extension and truncation
  • Reporting of free space
  • File permission control
  • Software RAID0, RAID1, and RAID5

Rating

Submissions that do not meet the above standards will be rejected.

Scoring will be based on the following criteria (not mandatory requirements):

  • Performance: Solid-state 7 read / 3 write
  • Performance: Mechanical 7 read / 3 write
  • Incident recovery capability (whether it uses Copy On Write)
  • RAID 0 speed gain (whether RAID is reasonably implemented)
  • Whether it can be used as a system disk (mounted to / and running a complete Linux)

Not sure where to start? Take a look at FUSE first!

FUSE provides an extremely easy-to-implement interface, regardless of the programming language you use. Start writing against it, and you will quickly find that your file system works!

Work Submission

Anyone can participate and submit an entry.

If you want to participate, you can start writing your code today.

Your code must be licensed under the MIT License. It must be submitted to https://git.aiursoft.cn . You must clearly and briefly explain how to compile it in REAMDE.md, or provide a Dockerfile for compilation.

After compilation, we will attempt to use it to format virtual disks and physical hard drives, and we will test various features.

Submission deadline: September 1, 2024. Please submit before the deadline. After submitting, please send an email to [email protected].

Awards

Ultimately, the three works that achieve the most ideal and production-significant implementation of all features will be awarded First, Second, and Third Place.

  • First Place Prize: One Minisforum MS01 All-in-One 10G Mini PC (Barebone)
  • Second Place Prize: One Dell Optiplex Mini PC
  • Third Place Prize: Oral-B Electric Toothbrush