要从单个目录中提供数百万个文件,能够连接到来自数百个端点的驱动器,以及其他一些原因(为了避免基于gluster / nfs /所有fs的networking解决scheme),我想评估制作一个基于MongoDB(或任何其他)的文件系统。
基本上,它像保险丝一样工作,每个文件都保存在mongo网格中。 理论上我是这样做的,
mount mongodbfs /mountPoint mongodb://localhost
那么当我说touch /mountPoint/test.txt
这个文件被插入到mongodb。 这个FS也会存储uid / gid和perms文件,我们可以向它扔上百个服务器,不需要useradd
。 我不打算包括FS的所有function,只是我们需要的function。
我的问题是,我如何开始寻找资源,书籍,链接,人员,开发人员来帮助我实现这一目标? 至less是一个概念的certificate。 这可行吗? 我应该期待什么作为这样的事业的时间表?
请只考虑gazillion小文件和文件夹。
ps:经过几天的研究,我认为这是我的方向http://www.ibm.com/developerworks/library/l-sc12.html http://www.flipcode.com/archives/Programming_a_Virtual_File_System -Part_I.shtml
ps2:我知道这项工作的难度。 然而,我们愿意拨出一笔严肃的预算,愿意组build一支严肃的团队,只有在我们确定这不是一个黑洞(因此是一个问题)之后。
这里最常见的建议是“使用FUSE”。 这是一个很好的建议,你应该好好听从它(因为Sciurus指出已经有了和你想要的非常接近的网格结构 )。
这就是说,如果你想走痛苦和痛苦的漫长道路(写自己的文件系统),你几乎可以肯定地想在当地的大学学习操作系统课程,或者看一些在线课程资料 (“写一个简单的FS“通常是一个小项目,文件系统通常是吸引人的,因为它们是学术玩具)。
跟随Linux文件系统 (Moshe酒吧),并彻底阅读一些简单的文件系统驱动程序,看看你需要做的基本骨架。
就时间线而言,如果你是一个体面的编码器,你可以在几天到一周内编写一个基本的文件系统(但是它将会是SUCK )。 我甚至不会猜测编写一个好的文件系统需要多长时间 – 至少在20世纪70年代末/ 80年代初以来,UFS / FFS(BSD文件系统)一直处于持续发展之中,而且改进/增强/错误修复仍然流行偶尔会有。 Sun / Oracle的ZFS在其相对较短(6年)的生命中已经经历了20次以上的迭代,尽管其中大部分与批量管理能力有关。