竞赛题目:初级文件系统与 Raid
目标
最终提交的内容应当是源码和一系列二进制文件,其应当被解压到 /usr/local/bin
。
它应当可以正确的将磁盘格式化:
sudo mkfs.myfs /dev/sda1
当然,也可以允许不格式化真正的磁盘,而是一个虚拟磁盘文件:
dd if=/dev/zero of=/tmp/disk.img bs=1G count=1
sudo mkfs.myfs /tmp/disk.img
然后,可以将文件系统挂载到一个目录:
sudo mount -t myfs /dev/sda1 /mnt
并且允许使用/etc/fstab
文件自动挂载:
/dev/sda1 /mnt myfs defaults 0 0
限制
整个项目必须使用 C\C++\Rust\Go\Erlang\C#\Java
语言编写。允许使用第三方库。
必须支持 SATA、NVME、USB、SD 卡等设备。
实现的文件系统必须支持:
- 文件的创建、删除、读取、写入
- 文件的扩增、截断
- 剩余空间的汇报
- 文件的权限控制
- 软件 Raid0,Raid1,Raid5
评分
未达到上述标准的提交将被拒绝。
评分将根据以下标准(并非强制要求):
- 性能:固态 7读3写
- 性能:机械 7读3写
- 事故的恢复能力(是否是Copy On Write)
- Raid0 的速度增益(是否合理实现了Raid)
- 是否能够作为系统盘(挂载到 / 并运行完整的Linux)
不知道从何起步?先看看 FUSE 吧!
FUSE 提供了非常容易实现的接口,无论你使用何种编程语言。直接对着它写,很快就会发现你写的文件系统可以用了!
作品提交
任何人都可以参赛和提交作品。
如果你想参赛,今天就可以开始写你的代码了。
你的代码必须被赋予 MIT 协议。必须被提交到 https://git.aiursoft.cn 。必须在 REAMDE.md
里清晰简要的写清如何编译,或提供 Dockerfile
用于编译。
编译后,我们将试图使用它来格式化虚拟磁盘和真实的硬盘,并尝试测试各个功能。
提交的截止日期:2024年9月1日。请在截止日期前提交。提交后,请向 anduin@aiursoft.com
发邮件。
评奖
最终所有功能实现最理想、最具有生产意义的三个作品将获得一二三等奖。
- 一等奖奖品 铭凡 MS01 全能万兆小主机(裸机)一台
- 二等奖奖品 戴尔Optiplex 小主机一台
- 三等奖奖品 欧乐B电动牙刷
这是一个很棒的编程大赛,要求参赛者使用特定的语言编写初级文件系统和Raid,实现多个功能,包括文件的创建、删除、读取、写入,文件的扩增、截断,剩余空间的汇报,文件的权限控制,软件Raid0,Raid1,Raid5等。此外,还要求参赛者使用FUSE实现文件系统,支持多种设备,并在Linux上运行。这些要求使得参赛者需要具备较强的编程能力和对文件系统的理解。
值得赞赏的是,文章提供了一些有用的库和资源,可以帮助参赛者更好地完成任务。此外,评分标准也很合理,可以评估参赛者的成果是否符合要求。
然而,我认为文章可以更好地解释一些具体的实现细节,比如如何实现文件系统的权限控制和Raid,以及如何保证数据的安全性等。此外,文章可以提供一些示例代码或参考资料,帮助参赛者更好地理解和完成任务。
总的来说,这是一个很有挑战性的编程大赛,可以提高参赛者的编程能力和对文件系统的理解。希望参赛者能够努力完成任务,创造出优秀的作品。