专利名称:一种海量小文件读取存储方法
技术领域:
本发明涉及计算机应用技术领域,具体地说是一种海量小文件读取存储方法。
背景技术:
在现阶段的读取、存储领域小文件是数据访问、使用的最常见的数据形式。相对于大文件的条带化技术进行切片,来提高用户对文件访问的并发性,小文件64KB)由于其不利于条带化,传统的方法一般是采用将单个文件存储在单个数据服务器上的策略,但是当小文件的数量到达一定程度之后,对小文件的大量地重复访问将会给数据服务器带来性能上的负担及I/O瓶颈问题,由于互联网上的数据信息大多以高频率的小文件形式表现出来,而且在一般用户的信息读取、存储中,对小文件的读取、存储较多,因此对互联网上高频率的小文件读/写性能的研究有重要的现实意义。在现阶段,传统的针对海量小文件的处理、操作等管理上主要存在以下3个方面的问题:
1)由于小文件的访问频率较高,需要多次访问磁盘,所以磁盘I/o的性能较低;
2)因为文件比较小,容易形成文件碎片而造成磁盘空间的浪费;
3)为每个小文件请求建立一个连接时容易产生网络时延,降低了小文件的读取速率。
发明内容
本发明的目的是提供一种海量小文件读取存储方法。本发明的目的是按以下方式实现的,通过将逻辑上连续的小文件数据尽可能的存储在物理磁盘的连续空间之内,以此提高用户对文件访问的并发性操作,从而提高了海量小文件的访问性能,其中:
小文件的读取操作设计为:
在读写小文件的时间延迟主要花在磁盘磁头的寻道定位上,一旦定位好,读取一个数据块所花费的时间和读取连续几个数据块的时间相差不是很大,因此,结合上面提出的优化的数据存储结构,采用预读的方式,将同一个块中的文件一起读取出来,从而减少磁盘I/O的次数;针对频繁访问元数据服务器上的磁盘造成整个系统I/O性能较差的问题,使用cache充当元数据服务器的角色,在cache上保存文件信息节点的信息,并且通过简化的Node数据结构使每个文件信息节点只保留文件的磁盘空间信息以及另外少量有用的信息,从而提高cache的利用率,使cache能够保存大量的文件信息节点,通过这种方式,减少访问磁盘的次数和读取文件信息节点的开销,从而提高I/O性能;
海量小文件在磁盘阵列上的存储方法为:
在存储小文件时,通过采用开辟大块连续磁盘空间的方式来存储海量小文件,也就是将逻辑上连续的数据尽可能地存储在磁盘阵列的连续空间上,即将同一个文件的数据或将同一个文件夹下的文件数据尽可能地存储在连续的磁盘阵列块上,将磁盘空间划分为多个块,每个块的大小为64KB,每个小文件只能存放在单个块中,不能跨块存放,每一个文件夹将拥有一个或多个块,这些块都只存放此文件夹的数据,每个文件数据都存放在连续的磁盘空间上,以此提闻“预读”数据的命中率,减少磁盘寻道时间,提闻存储效能;
小文件在磁盘阵列上的存储数据存储方式是:通过简化Node属性信息,将文件信息节点的属性信息存放在元数据服务器上,用户只需要知道文件的磁盘空间信息即可进行访问,对Node的数据结构进行简化设计,只保留文件的磁盘空间信息以及属于它的少量数据成员,其中,File_id是文件标识符;StartPosition是文件在块中的起始位置;Long是文件的长度;Weight是文件权重,在本策略中代表文件的访问频率;Block_id是文件所存放的块的标识符;Count是文件的访问计数器;Lock是文件锁;
本发明的有益效果是:通过将逻辑上连续的数据尽可能存储在物理磁盘的连续空间,使用cache技术充当元数据服务器的角色并通过简化的文件信息节点提高cache利用率,提高了小文件访问性能;聚合更新数据及其文件夹域中的相关数据为一次I/O请求写入,减少了文件碎片数量,读取时采用提前发送批量的高访问率的小文件方式来降低频繁的I/O操作,较好的提高了文件传输性能。
图1是小文件数据存储结构示意 图2是同文件夹中的文件存储示意 图3是Node数据结构示意图。
具体实施例方式下面将对本发明实施方案做进一步详细描述。本发明设计在存储小文件时通过采用开辟大块的连续磁盘空间的方式来存储大量的小文件。首先将磁盘空间划分为多个块,每个块的大小为64KB,大文件的连续磁盘空间就由这一系列块所组成,当遇到的文件比较小时,每个小文件只能存放在单个块中,不能跨越2个块存放,每个文件数据都存放在连续的磁盘空间上,图1是在一个块中存放多个小文件的示例图,Al,A2,A3,A4和A5为5个文件,文件与文件之间连续存放,如Al与A2,A3与A4,红色部分为此块的碎片,当出现文件的大小小于这些碎片的大小时,应优先把文件存放在这些碎片中,为了提高“预读”数据的命中率,在本发明的存储布局中设计的是将逻辑上连续的数据尽可能地存储在物理磁盘的连续空间上,即将同一个文件的数据或将同一个文件夹下的文件数据尽可能地存储在连续的磁盘空间块上,每一个文件夹将拥有一个或多个块,这些块都只存放此文件夹的文件,如图2所示。在本系统的数据存储结构中,我们将文件信息节点的属性信息存放在元数据服务器上,在I/o服务器上,只需要知道文件的磁盘空间信息即可进行访问,因此在I/O服务器上,只需要记录文件的磁盘空间信息,而不需要记录文件的其他属性,如创建时间、最后访问时间和所属用户等。基于此,对Node的数据结构进行简化设计,只保留文件的磁盘空间信息以及属于它的少量数据成员,因此,设计了一种简化的Node属性信息,详细的Node数据结构如图3所示,其中,File_id是文件标识符;StartPosition是文件在块中的起始位置;Long是文件的长度;Weight是文件权重,在本策略中代表文件的访问频率;Block_id是文件所存放的块的标识符;Count是文件的访问计数器;Lock是文件锁。
针对本系统的数据存储访问频率问题,首先,设计一个全局变量NodeList,NodeList是对Node的一个排序链表,根据文件的访问频率进行排序,它是为了实现优化文件传输而设计的,为整个小文件读取、存储解决方案服务。NodeList是对与每个文件夹而服务的,根据文件夹里的每个文件的访问频率形成一个排序列表,当用户访问该文件夹里的某个文件时,系统会自动地将这个列表里高访问频率的文件一起发送过去,但为了避免发送过多的文件,设定一个高访问频率的阈值
巧,并将所有访问频率高于6的文件顺序分成多个组,每个组可能包含多个文件,组中所
有文件大小之和不超过64KB,每当用户请求当前文件夹中的一个文件时,系统会按照顺序
将一个组的文件一起发送过去,从而降低文件传输时延,巧,」&的计算公式如下:
权利要求
1.一种海量小文件读取存储方法,其特征在于通过将逻辑上连续的小文件数据尽可能的存储在物理磁盘的连续空间之内,以此提高用户对文件访问的并发性操作,从而提高了海量小文件的访问性能,其中: 小文件的读取操作设计为: 在读写小文件的时间延迟主要花在磁盘磁头的寻道定位上,一旦定位好,读取一个数据块所花费的时间和读取连续几个数据块的时间相差不是很大,因此,结合上面提出的优化的数据存储结构,采用预读的方式,将同一个块中的文件一起读取出来,从而减少磁盘I/O的次数;针对频繁访问元数据服务器上的磁盘造成整个系统I/O性能较差的问题,使用cache充当元数据服务器的角色,在cache上保存文件信息节点的信息,并且通过简化的Node数据结构使每个文件信息节点只保留文件的磁盘空间信息以及另外少量有用的信息,从而提高cache的利用率,使cache能够保存大量的文件信息节点,通过这种方式,减少访问磁盘的次数和读取文件信息节点的开销,从而提高I/O性能; 海量小文件在磁盘阵列上的存储方法为: 在存储小文件时,通过采用开辟大块连续磁盘空间的方式来存储海量小文件,也就是将逻辑上连续的数据尽可能地存储在磁盘阵列的连续空间上,即将同一个文件的数据或将同一个文件夹下的文件数据尽可能地存储在连续的磁盘阵列块上,将磁盘空间划分为多个块,每个块的大小为64KB,每个小文件只能存放在单个块中,不能跨块存放,每一个文件夹将拥有一个或多个块,这些块都只存放此文件夹的数据,每个文件数据都存放在连续的磁盘空间上,以此提闻“预读”数据的命中率,减少磁盘寻道时间,提闻存储效能; 小文件在磁盘阵列上的存储数据存储方式是:通过简化Node属性信息,将文件信息节点的属性信息存放在元数据服务器上,用户只需要知道文件的磁盘空间信息即可进行访问,对Node的数据结构进行简化设计,只保留文件的磁盘空间信息以及属于它的少量数据成员,其中,Fi I e_id是文件标识符;StartPos it ion是文件在块中的起始位置;Long是文件的长度;Weight是文件权重,在本策略中代表文件的访问频率;Block_id是文件所存放的块的标识符;Count是文件的访问计数器;Lock是文件锁。
全文摘要
本发明提供一种海量小文件读取存储方法,通过将逻辑上连续的数据尽可能存储在物理磁盘的连续空间,使用cache技术充当元数据服务器的角色并通过简化的文件信息节点提高cache利用率,提高了小文件访问性能;聚合更新数据及其文件夹域中的相关数据为一次I/O请求写入,减少了文件碎片数量,读取时采用提前发送批量的高访问率的小文件方式来降低频繁的I/O操作,较好的提高了文件传输性能。
文档编号G06F3/06GK103176754SQ201310112179
公开日2013年6月26日 申请日期2013年4月2日 优先权日2013年4月2日
发明者张砚波, 王东风 申请人:浪潮电子信息产业股份有限公司