论文部分内容阅读
开源分布式文件系统HDFS为支持流式读写、提供高吞吐量访问而放宽了一部分POSIX约束,而基于HDFS研发的海量小文件系统SMDFS遗留了HDFS不兼容POSIX约束的这一问题,导致系统在实际生产应用环境中无法直接兼容传统的上层应用。现有的很多POSIX兼容的分布式文件系统大多源于文件系统服务端对文件随机访问等操作的支持,或者仅针对其自研文件系统的业务场景提供了类POISX支持,不能作为SMDFS或HDFS等其他POSIX不兼容的文件系统的参考方案。论文在现有的研究成果之上,分析了现有的分布式文件系统兼容现状以及主流的POSIX约束实现方式,并结合SMDFS暂不支持POSIX标准的原因,基于用户空间文件系统FUSE提出了基于数据暂存区的文件流重定向模型,通过将需要进行POSIX相关操作的对象转移到数据暂存区作为镜像文件,利用本地文件系统的POSIX兼容属性完成客户端的POSIX操作需求,再借助异步线程池完成镜像文件的同步以保持文件系统数据的完整性,同时采用覆写中断并发控制方案解决镜像文件同步期间的同一个文件读写冲突问题,保证系统的高并发性能。基于数据暂存区的文件流重定向模型为分布式文件系统的POSIX实现提供了解决方案。其次,目前海量小文件系统在文件上传时设置了元数据缓冲机制,从而导致客户端查询元数据的操作执行失败。针对这一问题,论文设计了基于目录的客户端元数据缓存机制,利用缓存占位解决文件创建时元数据缓存与查找冲突。同时,文章提出了事件加定时器的组合策略,可在短时间内恢复元数据的一致性。最后,基于数据暂存区的文件流重定向模型,在海量小文件系统SMDFS2.0的基础上实现了功能更完善的POSIX兼容的云存储网盘系统SMDFS3.0,包括网盘文件系统、POSIX兼容的网盘访问系统以及跨平台的Web访问系统。测试表明,SMDFS3.0实现了对文件随机写操作和文件执行权限的支持。同时,相比HDFS基于FUSE挂载的类POSIX兼容系统,基于本文成果的POSIX兼容的访问系统在读写性能上优势非常明显,随机读性能有10倍以上的性能提升;顺序读和顺序写性能有约3-4倍左右的提升;基于目录的元数据缓存的设计使目录的List操作效率提升近10倍。但由于FUSE带来的用户态和内核态切换开销,导致SMDFS的POSIX标准接口相比于Java接口会有50%的性能损失。