论文部分内容阅读
海量数据是大数据时代的基石和挑战,数据洪流包围着我们,数据的爆炸式增长及其随之而来的潜在收益突出了分级存储系统的研究价值。目前在文件系统下层实现的、基于块的分级存储系统,在系统层级构建、块级元数据管理、追踪迁移机制方面存在问题。本文针对这些系统的研究现状和存在的问题,设计实现了一个基于块的多样性分级存储系统HazelNut。HazelNut以Linux可装载内核模块形式实现,旨在解决层级构建的限制性问题、块级元数据管理的可扩展性问题以及追踪迁移机制的多样性问题。本文的主要内容和贡献如下所示。 (1)多样性设备管理机制。在构建由多种存储设备组成的存储层级时,首先面对的问题是多样性设备管理问题。存储硬件技术的不断发展和数据量的不断增长,使得存储层级的非限制性尤为重要;但目前大多数分级存储系统在构建存储层级时,或者限制存储层级数目,或者限制层级设备数量或种类。基于以上需求和问题,HazelNut实现了多样性设备管理机制HNDisk,HNDisk将多种物理设备按存储特性组织为多层级虚拟设备,各层级设备可按需求横向或纵向扩展,方便纳入新型块设备、增加层级数目和扩展设备数量,使得系统设计者和实施者可根据需求构建系统存储层级。 (2)可扩展、高性能块级元数据存储管理机制。块级元数据管理是分级存储系统面临的重要问题。块级元数据的内存需求量非常大,并随着存储容量的增加而不断增长,其性能直接影响系统性能。目前大部分分级存储系统只考虑了块级元数据的性能,却忽略了随着存储容量增加所带来的可扩展性问题。为此,HazelNut基于Chord算法设计实现了一个可扩展、高性能的元数据存储环机制SCRing。SCRing将数据块元数据组织成双向循环链表Shell List,动态分配内存,满足元数据内存需求量大并不断增长的需求;根据Chord算法设置动态哈希表ChordRing,同时使用可缓存元数据位置信息的缓存表以满足性能需求。测试结果表明SCRing兼具可扩展性和高性能。Shell List和Chord Ring中的节点借助消息摘要算法进行映射,为了确定使用何种消息摘要算法以及以何种模式使用,HazelNut测试了Linux内核提供的消息摘要算法,通过比较速度、均匀性和稳定性,并结合Linux内核版本,得到了使用的算法种类和使用模式。 (3)多样性追踪迁移机制。分级存储系统通过追踪收集数据访问信息、结合相应的迁移算法,来决定数据的存储位置并完成相应的数据迁移操作。追踪收集哪些数据访问信息以及使用何种迁移算法是系统设计者面临的问题。为解决此问题,方便系统设计者和实施者按需选择追踪度量和设计迁移算法,HazelNut设计实现了一个多样性追踪迁移机制HNType。HNType由两部分组成:多样性追踪机制HNType-t和多样性迁移机制HNType-s。HNType-t根据VFS文件系统的设计思想,提出了追踪迁移类型及其基本元素的概念,并设计了基本元素追踪操作接口,实现了追踪机制的多样性。HNType-s设计了三种迁移机制:长周期迁移机制、短周期向上迁移机制以及紧急向下迁移机制,抽象出了三种迁移机制所使用的迁移算法接口,实现了迁移机制的多样性。测试结果表明,HNType机制能够正常运行并具备良好的迁移效果。 (4)用户空间与HazelNut间的交互接口。HazelNut运行在内核空间。为方便用户空间和HazelNut交互,HazelNut提供了两种交互接口:一种以ioctl系统调用方式实现,简称为ioctl接口;另一种以sysfs文件系统方式实现,简称为sysfs接口。ioctl接口定义了ioctl控制命令,通过向运行在内核空间的HazelNut发送这些命令来达到控制系统的目的。sysfs接口以读写属性文件的方式实现了参数控制和状态查看功能。