如何开始实施 Linux ECC 块设备包装器

How to start implementing a Linux ECC block device wrapper

考虑学生项目建议;我是一个不错的 C 开发者和 C++ developer/architect。 除了“编写您的第一个模块”之外,Linux 没有做太多内核开发。

我想初步实现的(在建议学生将其作为团队项目正确执行之前)是:

这意味着fec0的大小小于sda的大小。另外,请注意,这与 RAID5 方法有些不同,因为没有将奇偶校验数据拆分为辅助数据组或类似数据。

现在,我正在尝试大致了解如何执行此操作。很明显,除了实现块设备接口本身之外,还需要实现一个控制接口来定义诸如“使用 /dev/sda 创建 fec0”、“关闭 fec0”之类的东西".

出现的问题是:

对于你问题的第一部分,我建议你有两个选择:块子系统或 md(多设备)子系统。我认为我能做的最有用的事情就是为您指出一些参考资料的方向,以便您可以决定最适合的内容。如果您想考虑逻辑卷,那么 see here for the lvm-raid man page which sits in both the md and dm subsystems. If you just want to restrict yourself to RAID functionality, then see here for the md driver man page. But if you want to keep it simple and just make a wrapper over a simple block device, perhaps emulating some aspects of lvm and raid, then add a driver to the block 子系统。

您的选择也会影响问题的第二部分。单块设备通常提供大量的 ioctl; md 驱动程序大量使用 sysfs 接口。希望对您有所帮助。