论文部分内容阅读
本文先简要介绍Linux文件系统的整体结构及主要数据结构,然后着重介绍Linux对缓冲块的管理,最后再给出系统调用安装或卸载文件系统的实现流程及相关的数据结构。然后在以上基础上仔细分析了网络存储镜像的实现方法,举了几个例子来分析如何有效的截获用户读写数据。因为在网络镜像中使用了 TCPIP 协议栈和网络编程,所以文章中也对这部分进行了分析研究。最后分析了一下内核中的一些提高性能的关键机制。这时就来到了本文最重要的地方,就是 Linux 系统下的驱动程序的编写部分,因为我们重点关注的是块设备驱动程序,所以简单的介绍了一下如何编写驱动程序,然后就重点分析了块设备驱动程序的重要数据结构,重要的函数,这里面有 request 队列的数据结构和操作函数等等。最后为了保证可移植性,我采用的不是更改 Linux 源代码树的方法,而是加载内核模块的方法,所以也详细分析了如何编写内核模块的方法。然后详细分析了Linux系统下用软件实现磁盘镜像和NAS的方法,这里面包括软件 Raid 和 Nbd 的一些内核代码,从这里得出网络镜像系统可以充分参考借鉴这两类不同的块设备驱动程序的一部分实现代码,即从 Raid 中学习块设备镜像的方法,再从 Nbd 中学习到数据块在网络中传递的一些技巧。其实我们如果仔细的研究 Linux 内核源代码,就可以实现很多东西,这也是它比 Windows 系统更受 Hacker 们欢迎的原因。最后就到了 NMBD 驱动程序设计和实现的方法,从代码中可以看出 Linux 的源代码树对我有多大的帮助。而且在实现的过程中发现一些问题,比如不同应用程序对数据块的一致性有不同的需求,比如发送端和接收端之间读写数据块的一些影响。那么在 NMBD 中都仔细考虑并提出了一些算法解决。通过对本系统的初步测试,表明该系统初步实现了设计目标。