Linux kernel 如何开始实现Linux ECC块设备包装器
思考学生项目以提供建议;我是一个OK C开发者和C++开发者/架构师。 除了“编写您的第一个模块”之外,没有做过多少Linux内核开发 我想初步实现的事情(在建议学生作为团队项目正确完成之前)是:Linux kernel 如何开始实现Linux ECC块设备包装器,linux-kernel,error-correction,block-device,Linux Kernel,Error Correction,Block Device,思考学生项目以提供建议;我是一个OK C开发者和C++开发者/架构师。 除了“编写您的第一个模块”之外,没有做过多少Linux内核开发 我想初步实现的事情(在建议学生作为团队项目正确完成之前)是: 以现有的块设备为例,比如说/dev/sda 添加第二个块设备,例如/dev/fec0,它实现了第一个包装器,在读取时提供错误更正,在写入时提供数据+错误编码信息 这意味着fec0的大小小于sda的大小。另外,请注意,这与RAID5方法有些不同,因为没有将奇偶校验数据拆分到辅助数据组或类似数据组 现
- 以现有的块设备为例,比如说
/dev/sda
- 添加第二个块设备,例如
,它实现了第一个包装器,在/dev/fec0
时提供错误更正,在读取
时提供数据+错误编码信息写入
/dev/sda
创建fec0
”、“关闭fec0
”之类的内容
出现的问题是:
- 是否有一个首选的框架将其集成到?我们的目标是找到一个合理的地方来解决这个问题。请记住:
- dmraid和
- lvm2,或
- 只是一个普通的块设备驱动程序
- 如何实现控制接口?
- 特定的
sioctl
伪文件接口/sys/*
- 特定于框架的方法
- 特定的
你的选择也会影响问题的第二部分。单块设备通常提供大量IOCTL;md驱动程序大量使用sysfs接口。希望这会有所帮助。只是一个建议,但是a)框架应该与您正在包装的框架相同b)kernel.org可以让您开始使用IOCLT和sysfs@secretsquirrel谢谢a) 但我不是“包装框架”,而是包装任意块设备。b) 我知道IOCTL和SYSF是什么——我想知道控制这种函数的好选择是什么。lol OK措辞不好:所以,框架应该依赖于子系统;org有一些关于何时以及为什么应该或不应该使用ioctls等的指针。尽管“输入-输出控制”和“系统文件系统”,“配置文件系统”有点不言自明;在命名方面,Linux非常简单明了。@secretsquirrel-ha!嗯,我还必须承认,我的评论可能措辞不当:我甚至不确定应该在哪个子系统中工作。存储这是一个子系统还是一种过于元化的方式?EDAC(看起来不太像,但可能吧?)?MTD?或者,可以将意图更好地表示为只有一个文件的VFS(错误纠正块dev)?DM/Raid在哪里生存?@Tsyarev,我的观点是正确的,这就是为什么我把它保留在评论中……但我最后给出了一个答案,谢谢马库斯·穆勒;)我不认为这个问题是“从哪里开始”,而是“哪种实现更好”,而且有可靠的技术参考,可以防止回应基于观点。