对文件系统设计的反思

在软件设计与实践的课程,我选择了设计并且实现一个快速的文件系统。当时的想法非常简单, 就是觉得一个文件在磁盘上都顺序存取。这样字读取和写入文件的时候都会非常快。然后再设计一个根据文件名 快速定位到磁盘系统的方案。使用hash结构什么的。接下来就是自己组织在磁盘上的存储方式了。 这些也就是复杂一点的数据结构而已。但是到现在为止,我发现自己真的是错了。目前一行代码还没有输入, 这真的是让我感到非常沮丧。开始一段时间,我开始搜索文件系统和操作系统结合的问题。很快我就知道可以有 两种方法。一种就是比较原始的方法,编译内核源代码。第二种方法以模块的形式插入。这些也都是对的, 没有任何问题,但是都太上层了,属于“说的很容易”的阶段。要开始做的时候,隐隐的感到有些压力,自己想要实现 一个这样的文件系统的目的是为了加快数据库对数据的存取速度。最好是不用经过文件系统这个层面直接访问磁盘。 而我想要做的就是为这个磁盘定义一个简单的格式,使得能够读取。来加快数据访问速度。而此时我怀疑自己是否 可以实现了。害怕自己的想法过于天真,缺少真正的可行性。想要求职于人,其实我的求助是真正的求助, 而不是寻求建议。就像小孩子想大人询问一般。但是我不知道为什么,从老师哪里得到的回答都是模糊的。 后来有老师建议使用fuse用户态文件系统来实现。于是又花费了很多的时间来搜索相关资料。但是发现大部分 都是基于现有的文件系统之上再实现一下的。而不是基于设备的。更有甚者,有一篇文章中直接说fuse不能实现 在磁盘上的额文件系统。我彻底迷糊了……关于fuse的中文资料介绍真的是很少。仅有几篇文章到处貼。我感到自己 仿佛是在站在一个路口前面有很多胡同,而我不知到哪一条是有出口的,我只能一条走到底,看到没有路了, 才回过头来,自己继续……最近十多天又再看不使用fuse来实现。发现了一些网上的例子,找到一个,使用重新编译 内核源代码的方式来实现的。可能是对于C语言也有些陌生了,看着EXT2的源代码,难受的不行,而且还有ext3,ext4 ,VFS的代码就够我看了,还有那么多……

我发现自己有些不自量力了,学了操作系统的基本知识和原理,就觉得是掌握了实现它的技能,而现在的境遇很沮丧, 我忘记了自己其实还只是一个大三学生,还有那么多的专业课程需要花费时间和精力。而这个项目的时间仅仅只有 一个学期而已。现在完全背离了当初我自己想要实现的目标。而我更加怀疑我的想要集合数据库和文件系统来提高 数据I/O效率的想法是不是正确的和可行的。目前可以做的可能就是实现一个简单的文件系统,而没有能力去考虑 是否真的具有实用性。就当作是自己理解文件系统的一个过程,而不是在创造一个应用。这是一个教训。

Xiang Chao 06 April 2012
blog comments powered by Disqus
Fork me on GitHub