银河麒麟日志文件系统的设计与实现
【摘要】:文件系统是现代操作系统的重要组成部分。对于一个文件系统来说,最为关键的是可靠和高效。然而计算机还是可能因为断电或软硬件的失效而发生崩溃。一旦系统崩溃,传统文件系统就需要扫描整个磁盘分区来恢复一致性。在大型分区上,这个扫描恢复过程会很长,对于特大型分区可能需要好几个小时。这对许多应用来说是不可接受的,因此需要一种机制来缩短这个漫长的恢复过程,而日志文件系统正好提供了这种机制,能够在几秒内恢复文件系统的一致性。
现今,Redhat的Enterprise Linux AS(Advanced Server)使用EXT3日志文件系统,Novell的SuSE Linux使用ReiserFS日志文件系统,SGI的IRIX系统使用XFS日志文件系统,IBM的AIX系统使用JFS日志文件系统。同时,IBM和SGI又分别把JFS和XFS移植到了Linux系统上。日志文件系统已成为当前主流服务器操作系统的重要组成部分,而银河麒麟操作系统还没有一个好的日志文件系统,因此迫切需要为其设计和实现一个稳定高效的日志文件系统。
本文首先分析了当前主流的日志文件系统及其各自的特点,接着讨论了银河麒麟操作系统的内核框架及其各模块之间的相互关系。重点研究了银河麒麟操作系统的文件系统模块及其虚拟文件系统。然后结合银河麒麟操作系统的特点,设计和实现了银河麒麟日志文件系统KFS。为了提高KFS的目录检索性能,分析了其他文件系统的目录索引技术并结合KFS的特点,设计了基于HTree的目录索引。为了减少文件的碎片提高文件在磁盘上的连续分布,针对KFS的特点,使用了基于预留窗口的块预分配算法。最后,使用文件系统测试工具Bonnie++、PostMark和Tiobench对KFS进行了测试,并对测试结果进行了分析和评价。