configfs 为什么

上回说到 cgroup 配置是通过特定的文件系统来弄的,这个...配置内核为什么要通过文件系统?就算要用 fs 为什么还去弄一个新的文件系统,现存的 sysfs 还不够吗?

关于第一个问题的答案是这样的。用户和操作系统打交道的标准方式是系统调用,可这 Linux 世界里那么多 developer,那么多 patch,每新开发一个需要用户交互的功能就新增系统调用显然不可行,这里有 Namespace/全局控制的显著难题;即使想在 ioctl 里增加宏定义什么也是同样的困境。通过文件系统路径来控制 Namespace 算一个大家都能接受的方案。

而 sysfs 的问题在于,它只是内核对象的一个视图,你可以去查看甚至修改对象的属性,但是所有的对象都是内核自己创建的,通过 sysfs 无法新建一个内核对象!对于 cgroup 应用来说,管理员需要去配置维护特定的 cgroup 对象,传统的 sysfs 就无能为力了。

这就是 configfs 的由来,它最初是 OCFS2(oracle cluster fs)的一部分,后来独立成为 Linux 的一个标准部件,在 2.6.16 成为 mainline

至于为什么 cgroup 最后没有用现成的 configfs而自己搞了一个新的文件系统,还没有从邮件列表中搜出端倪,待以后去考据罢...

Topic: 技术