论文部分内容阅读
随着电子信息规模的扩大,海量存储系统中,元数据服务器的性能、可扩展性和可靠性面临了很大的挑战。本文结合中科院高能物理研究所的海量存储系统GRASS,完成了以下研究:
1.基于内存数据结构的元数据服务器设计
海量存储系统中的元数据组织形式包括:关系数据库、磁盘文件系统的扩展属性、HASH函数定位以及基于内存的数据结构四种。本文根据这四种形式的优缺点和应用需求,设计了一个基于内存数据结构元数据服务器。该设计将存储系统的元数据记录在内存数据结构中,通过内存指针保存名字空间的层次关系,通过HASH函数实现元数据节点的快速定位,通过线程读写锁保证多线程对名字空间操作的一致性,针对客户端与元数据服务器“数据包内容小,通信频繁”的通信特点,对TCP/IP通信进行了优化。实验说明,GRASS的元数据访问性能较其前系统CASTOR,获得了10到100倍的提升。
2.基于名字空间剪枝的元数据搜索优化
海量存储系统中,对元数据进行大规模、深度的搜索往往需要很长的客户端等待时间。提高元数据搜索性能的一种普遍的方法是构建外部索引,这种方法不仅增加了系统的成本,加重了服务器的负载,而且可能带来元数据信息的不一致。元数据属性(文件名,文件尺寸,时间等)具有明显的空间局部性。GRASS元数据服务器在不使用外部索引的条件下,通过对名字空间的搜索剪枝,提高了元数据搜索效率。该设计在目录的元数据中加入了记录其子孙节点的元数据特征的变量,通过Bloom Filter算法,log函数等手段,在元数据操作的过程中,修改这些特征变量;通过测试这些特征变量,进行搜索剪枝。实验表明,这种方法通过减少不必要的名字空间遍历,提高了元数据搜索的性能。
3.元数据服务的可靠性设计
在大型分布式系统中,组件的故障是常态而不是异常。元数据是数据的数据,元数据服务器是海量存储系统中,可靠性要求最高的组件。对于在内存中记录元数据信息的服务器,可靠性尤为重要。GRASS从以下5个层次设计了元数据服务的可靠性:1)定期的元数据持久化,将内存信息写入的磁盘2)元数据操作日志,记录内存中元数据信息的修改3)磁盘RAID实现磁盘数据的冗余4)分布式块设备副本,在从服务器上实现主服务器磁盘数据的网络镜像5)heartbeat,实现主从元数据服务器在故障时的切换。这些设计能够在发生软硬件故障时,保证数据的安全性和服务的可用性。