海量存储系统的元数据存储方法 【技术领域】
本发明涉及的是一种网络存储技术领域的方法,具体是一种海量存储系统的元数据存储方法。
背景技术
海量存储系统是一种大容量的网络存储系统,向外部提供基于文件的访问方式。其它计算机设备通过网络接口来访问海量存储系统,向其写入文件或读取文件。为了提供更大的容量和更高的性能,海量存储系统往往采用分布式架构。目前新型的海量存储系统都采用元数据和数据分离的存储方式,该方法能够防止元数据服务器成为性能瓶颈,系统具有更好的可扩展能力。这类系统中,系统的节点有2种类型:元数据服务器和对象存储设备。元数据服务器管理存储系统的命名空间,实现文件的创建、删除等操作,并实现文件元数据的管理。对象存储设备对外提供基于对象的访问接口。对象是类似于文件的容器,可以存储数据。海量存储系统中的数据采用条带化方式存储,在该方式中,同一文件的数据被划分为相同大小的对象,该大小称为条带化大小,分别存储在多个对象存储设备上,所选择对象存储设备的数目称为条带化宽度。
元数据服务器为了管理文件,需要记录文件的一些管理信息,如创建者,文件类型、访问权限、读写时间、以及文件的数据在存储系统中的地址信息,这类管理信息称为元数据。在海量存储系统中,元数据服务器记录的文件的地址信息包括文件被划分为哪几个对象,以及每个对象存储在哪一个对象存储设备上。元数据的组织和管理是元数据服务器的核心任务,直接影响着海量存储系统的性能和灵活性。
经对现有文献检索发现,在目前已有的海量存储系统中,有些系统将每个文件的多个对象保存在多个连续的对象存储设备中,如PVFS系统(《PVFS:A Parallel Virtual FileSystem for Linux Clusters(一种用于Linux集群系统的并行虚拟文件系统)》),这种方式难以实现对象存储设备的负载均衡,且对象服务器必须以连续方式编号,缺乏灵活性;有些在元数据中显式记录文件的每个对象所在的对象存储设备,如Luster系统(见《LusterFile system whitepaper(Luster文件系统白皮书)》)和Panasas系统(见《ScalablePerformance of the Panasas Parallel File System(Panasas并行文件系统的可扩展性能)》),该技术的缺点在于当文件大小增加时,元数据信息量将相应增加,增加了存储开销,在读取文件时需要执行查找过程,增加了计算开销;Ceph系统(见《Ceph:A Scalable,High-Performance Distributed File System(Ceph:一个可扩展、高性能分布式文件系统)》)中采用哈希计算方式,文件的每个对象被随机分布到不同的对象存储设备,其不足之处在于当动态增加对象存储设备的数量时,所有以前计算的值都需要重新计算,导致大量的计算工作和数据迁移。
【发明内容】
本发明的目的在于克服现有技术存在的上述不足,提供一种海量存储系统的元数据存储方法。本发明通过使用确定的分布方法来确定文件数据的存储地址,且不要求同一文件的多个对象必须存放在连续的对象存储设备上,也允许动态扩充对象存储设备,提高了海量存储系统中元数据存储的效率和灵活性。
本发明是通过以下技术方案实现的,包括以下步骤:
第一步,元数据服务器接收到创建文件的请求时,完成新创建文件中元数据的存储,当元数据服务器接收到写文件的请求时,执行第二步;当元数据服务器接收到读文件的请求时,执行第三步。
所述的新创建文件中元数据的存储是:
1)根据要求确定新创建文件的条带化大小S和条带化宽度W;
所述的条带化大小S的单位是字节,范围是大于0的整数。
所述地条带化宽度W的范围是大于0的整数。
2)根据要求选择用于存储新创建文件的对象存储设备,且该对象存储设备的数量等于条带化宽度W;
3)将得到的条带化大小S、条带化宽度W和选择的对象存储设备信息保存到新创建文件的元数据中。
第二步,根据要写入文件的写偏移量U确定写入元数据所在的对象存储设备的序列OS-x,进而向选定的文件数据(对象)所在的对象存储设备OS-x写入数据,其中:x代表大于0且小于等于条带化宽度W的整数。
所述的确定写入元数据所在的对象存储设备的序列OS-x是:
当(n-1)S<U<nS-1时,OS-x选为OS-n,即x代表n,其中:n是大于0且小于等于条带化宽度W的整数,S是条带化大小。
第三步,根据要读取文件的读偏移量V确定读取元数据所在的对象存储设备的序列OS-y,进而从选定的文件数据(对象)所在的对象存储设备OS-y读取数据,其中:y代表大于0且小于等于条带化宽度W的整数。
所述的确定读取元数据所在的对象存储设备的序列OS-y是:
当(m-1)S<V<mS-1时,OS-y选为OS-m,即y代表m,其中:m是大于0且小于等于条带化宽度W的整数,S是条带化大小。
与现有技术相比,本发明的有益效果是:文件的元数据中显式记录了存储该文件对象数据的所有对象存储设备,该设备序列是有序的,文件的多个对象依次、循环分布到该对象设备序列上,提供了更大的灵活性和更好的负载均衡潜力,且不需要对已保存在存储系统中的文件数据进行迁移,也不需要修改保存在元数据服务器上的已有文件的元数据,简化了存储的复杂度并提高了效率。
【附图说明】
图1是本发明第一步的流程框图;
图2是本发明第二步的流程框图;
图3是本发明第三步的流程框图。
【具体实施方式】
以下结合附图对本发明的方法进一步描述:本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例
本实施例用于包括1个元数据服务器和128个对象存储设备的海量存储系统的元数据存储,包括以下步骤:
第一步,如图1所示,元数据服务器接收到创建文件foo.bar的请求时,完成新创建文件中元数据的存储,当元数据服务器接收到写文件的请求时,执行第二步;当元数据服务器接收到读文件的请求时,执行第三步。
所述的新创建文件中元数据的存储是:
1)根据要求确定新创建文件foo.bar的条带化大小S和条带化宽度W,本实施例中条带化大小S为65536字节,条带化宽度W为5;
2)根据要求选择用于存储新创建文件foo.bar的对象存储设备,且该对象存储设备的数量等于条带化宽度W,本实施例选择的对象存储设备共5个,分别记为OS-A、OS-B、OS-E、OS-M和OS-N,其中:A、B、E、M和N分别代表1、2、3、4和5。
3)将得到的条带化大小S、条带化宽度W和选择的对象存储设备信息保存到新创建文件foo.bar的元数据中。
第二步,如图2所示,元数据服务器接收到一个写文件foo.bar的请求,欲写入的写偏移量U是75536,由于65536<75536<131071,即S<U<2S-1,所以确定写入元数据所在的对象存储设备的序列OS-B,进而向选定的文件数据(对象)所在的对象存储设备OS-B写入数据。
第三步,如图3所示,元数据服务器接收到一个读文件foo.bar的请求,欲读取的读偏移量V是20036,由于0<20036<65535,即0<V<S-1,所以确定读取元数据所在的对象存储设备的序列是OS-A,进而从选定的文件数据(对象)所在的对象存储设备OS-A读取数据。
本实施例的优点:通过使用确定的分布方法来确定文件数据的存储地址,且不要求同一文件的多个对象必须存放在连续的对象存储设备上,也允许动态扩充对象存储设备,提高了海量存储系统中元数据存储的效率和灵活性;文件的元数据中显示记录了存储该文件对象数据的所有对象存储设备,该设备序列是有序的,文件的多个对象依次、循环分布到该对象设备序列上,提供了更大的灵活性和更好的负载均衡潜力,且不需要对已保存在存储系统中的文件数据进行迁移,也不需要修改保存在元数据服务器上的已有文件的元数据,简化了存储的复杂性并提高了效率。