CN111427508A - 一种文件均衡分布方法及装置 - Google Patents
一种文件均衡分布方法及装置 Download PDFInfo
- Publication number
- CN111427508A CN111427508A CN201910020186.XA CN201910020186A CN111427508A CN 111427508 A CN111427508 A CN 111427508A CN 201910020186 A CN201910020186 A CN 201910020186A CN 111427508 A CN111427508 A CN 111427508A
- Authority
- CN
- China
- Prior art keywords
- file
- written
- stripe
- writing
- idle
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种文件均衡分布方法及装置,该文件均衡方法按照磁盘组剩余空间比对磁盘组进行排序,然后利用正态分布随机算法选取磁盘组,并选取一个条带进行文件写入,并且,在每写完一个磁盘组后,排除已经使用的磁盘组,这样,不仅可以实现将文件尽量保存在更多的磁盘组上,而且,可以将较小的文件尽量在剩余磁盘空间比较大的磁盘组中存储,这样可以减少磁盘组之间的剩余空间比的差距的问题,达到了文件均衡的目的,可以保证所有磁盘都能提供存储和输出功能。
Description
技术领域
本申请涉及文件存储技术领域,更具体地说,涉及一种文件均衡分布方法及装置。
背景技术
在分布式存储系统中,当存储文件的时候,需要将文件的数据块存储在各个磁盘中。
目前,在文件存储时,一般按照随机的均衡分布算法来获取条带进行文件存储,并且,所有磁盘组的所有条带均在一个池子中,然后在这个池子中随机选择一个条带进行存储。
然而,由于是随机选择一个条带,这样就可能多次获取的条带在同一个磁盘组中,即可能会导致同一个磁盘组中存储了同一个文件的多个片段,而有些磁盘组中却没有存储到这个文件的一个片段。此外,当存储的文件很多的时候,可能会造成有些磁盘组存储的文件比较多,而有些磁盘组存储的文件比较少。这样的存储方式造成存储系统中磁盘存储的不平衡,无法保证所有磁盘都能提供存储和输出功能。
发明内容
有鉴于此,本申请提供了一种文件均衡分布方法及装置,用于解决现有的文件存储方式所存在的存储系统中磁盘存储不平衡,无法保证所有磁盘都能提供存储和输出功能的问题。
为了实现上述目的,现提出的方案如下:
一种文件均衡分布方法,该方法包括:
将当前所有磁盘组按照磁盘组剩余空间比进行排序,得到排序列表,并将所述排序列表保存到与待写入文件相关联的列表中;
在所述列表中,通过正态分布随机算法选取第一磁盘组;
当所述待写入文件的大小在第一阈值范围内时,在所述第一磁盘组中随机选取一个空闲条带作为第一空闲条带,将所述待写入文件写入所述第一空闲条带;其中,所述第一阈值范围表征所述待写入文件的大小不大于所述第一空闲条带的大小;
当所述待写入文件的大小在第二阈值范围内时,在所述第一磁盘组中随机选取一个空闲条带作为第二空闲条带,将所述待写入文件的第一条带的数据写入所述第二空闲条带;所述第一空闲条带与所述第二空闲条带相同或不同;
通过正态分布随机算法选取所述列表中除第一磁盘组之外的第二磁盘组,在所述第二磁盘组中随机选取一个空闲条带作为第三空闲条带,将所述待写入文件的第二条带的数据写入所述第三空闲条带;
若所述待写入文件的写入没有完成,则继续选取出除所述第一磁盘组和第二磁盘组之外的其它磁盘组的空闲条带进行写入,直至写入完成;
其中,所述第二阈值范围表征所述待写入文件的大小大于所述第一空闲条带的大小,且不大于一轮写入所对应的总空闲条带的大小,所述一轮写入表示依序将所述当前所有磁盘组选取一遍,且每个磁盘组选取一个空闲条带进行写入。
优选的,该方法还包括:
当所述待写入文件的大小在第三阈值范围内时,开启下一轮写入,直至写入完成;
其中,所述第三阈值范围表征所述待写入文件的大小大于所述一轮写入所对应的总空闲条带的大小。
优选的,还包括:
在所述待写入文件的每一条带的数据写入完成后,将写入数据的条带信息记录在所述待写入文件中。
优选的,所述通过正态分布随机算法选取第一磁盘组包括:
通过正态分布随机算法得到一个随机数;
根据所述随机数与所述排序列表中计算的伪正态分布到顺序列表的映射关系,选取相应的磁盘组作为所述第一磁盘组。
优选的,所述正态分布随机算法的公式为:
其中,x表示通过正态分布随机算法得到的随机数;m表示所述当前所有磁盘组的个数;v用于表示获取正态分布的前面一半数据,还是后面一半的数据,若v小于0,表示获取正态分布中的前面一半的数据,若v大于或等于0,表示获取正态分布后面一半的数据。
一种文件均衡分布装置,该装置包括:
排序单元,用于将当前所有磁盘组按照磁盘组剩余空间比进行排序,得到排序列表,并将所述排序列表保存到与待写入文件相关联的列表中;
选取单元,用于在所述列表中,通过正态分布随机算法选取第一磁盘组;
第一写入单元,用于当所述待写入文件的大小在第一阈值范围内时,在所述第一磁盘组中随机选取一个空闲条带作为第一空闲条带,将所述待写入文件写入所述第一空闲条带;其中,所述第一阈值范围表征所述待写入文件的大小不大于所述第一空闲条带的大小;
第二写入单元,用于当所述待写入文件的大小在第二阈值范围内时,在所述第一磁盘组中随机选取一个空闲条带作为第二空闲条带,将所述待写入文件的第一条带的数据写入所述第二空闲条带;所述第一空闲条带与所述第二空闲条带相同或不同;
所述选取单元还用于通过正态分布随机算法选取所述列表中除第一磁盘组之外的第二磁盘组,在所述第二磁盘组中随机选取一个空闲条带作为第三空闲条带,以使所述第二写入单元将所述待写入文件的第二条带的数据写入所述第三空闲条带;
判断单元,用于判断所述待写入文件是否写入完成;若所述待写入文件的写入没有完成,则所述选取单元继续选取出除所述第一磁盘组和第二磁盘组之外的其它磁盘组的空闲条带以使所述第二写入单元进行写入,直至写入完成;
其中,所述第二阈值范围表征所述待写入文件的大小大于所述第一空闲条带的大小,且不大于一轮写入所对应的总空闲条带的大小,所述一轮写入表示依序将所述当前所有磁盘组选取一遍,且每个磁盘组选取一个空闲条带进行写入。
优选的,该装置还包括:
第三写入单元,当所述待写入文件的大小在第三阈值范围内时,开启下一轮写入,直至写入完成;
其中,所述第三阈值范围表征所述待写入文件的大小大于所述一轮写入所对应的总空闲条带的大小。
优选的,还包括:
记录单元,用于在所述待写入文件的每一条带的数据写入完成后,将写入数据的条带信息记录在所述待写入文件中。
优选的,所述选取单元包括:
计算单元,用于通过正态分布随机算法得到一个随机数;
选取子单元,用于根据所述随机数与所述排序列表中计算的伪正态分布到顺序列表的映射关系,选取相应的磁盘组作为所述第一磁盘组。
优选的,所述正态分布随机算法的公式为:
其中,x表示通过正态分布随机算法得到的随机数;m表示所述当前所有磁盘组的个数;v用于表示获取正态分布的前面一半数据,还是后面一半的数据,若v小于0,表示获取正态分布中的前面一半的数据,若v大于或等于0,表示获取正态分布后面一半的数据。
从上述的技术方案可以看出,本申请实施例提供的文件均衡分布方法中,通过按照磁盘组剩余空间比对磁盘组进行排序,然后利用正态分布随机算法选取磁盘组,并选取一个条带进行文件写入,并且,在每写完一个磁盘组后,排除已经使用的磁盘组,这样,不仅可以实现将文件尽量保存在更多的磁盘组上,而且,可以将较小的文件尽量在剩余磁盘空间比较大的磁盘组中存储,这样可以减少磁盘组之间的剩余空间比的差距的问题,达到了文件均衡的目的,可以保证所有磁盘都能提供存储和输出功能。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例一公开的一种文件均衡分布方法的流程图;
图2为本申请实施例二公开的一种文件均衡分布方法的流程图;
图3为本申请实施例提供的一种磁盘组按照剩余空间从多到少的排列图;
图4为本申请实施例提供的一种磁盘组伪正态分布方式排列图;
图5为本申请实施例提供的一种按照公式进行有序列表和伪正态分布映射的关系图;
图6为本申请实施例三提供的一种文件均衡分布装置的结构示意图;
图7为本申请实施例四提供的一种文件均衡分布装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为解决现有的文件存储方式所存在的存储系统中磁盘存储不平衡,无法保证所有磁盘都能提供存储和输出功能的问题,本申请提供了一种文件均衡分布方法及装置,具体方案如下所述:
实施例一
本申请实施例一提供了一种文件均衡分布方法,该方法应用于分布式存储系统中,分布式存储系统包括一个信息管理模块,信息管理模块中包括有磁盘管理、磁盘条带管理和文件管理等。
磁盘管理是将分布式存储系统中的所有磁盘进行的统一管理,并将所有的磁盘进行分组,每一个组有12个磁盘。从每个磁盘中获取一个数据块组合在一起,就是12个数据块,这12个数据块称为条带,将每一个组的磁盘分成若干个条带,一个组中存在若干个条带。单个磁盘可以描述为:groupid,磁盘的diskid、ip、port。其中,groupid是磁盘组的编号id,用来唯一标识一组磁盘。diskid是磁盘的编号id,用来唯一标识一个磁盘,在整个服务器运行过程中保持和对应的磁盘不变。ip和port用来连接这个磁盘,是磁盘提供对外部其他模块的访问地址,其他模块通过这个磁盘的ip和port进行连接,读取、写入数据。一个磁盘组中包括有1个groupid、12个diskid和12个连接。
磁盘的条带管理:一个条带中包含了bid、groupid、12个diskid和对应的12个磁盘块的blockid以及使用标志。其中bid是条带的编号id,用来唯一标识一个条带。通过groupid可以筛选出某一个磁盘组里面的所有条带。使用标志是用来标志这个条带是否已经被文件使用,若被文件使用该标志为1;没有被使用该标志为0,通过该标志可以确定一个磁盘组已经使用了的条带个数和没有使用的条带个数。
这里还存在一个统计表,用来记录每一个磁盘组的总的条带个数、已经使用的条带个数。该统计表的相关信息为:groupid、total、used。其中gourpid表示磁盘组的id;total表示总的条带数;used表示已经使用了的条带数。通过total-used表示还剩余的条带个数,那么,剩余空间比即为(total-used)/total,即1-used/total。文件管理:记录文件的相关信息,比如文件名、文件的id,文件的大小,使用的条带列表等。其中文件大小表示文件实际的大小,一般小于等于所有已经使用的条带个数对应的数据块大小的和。就是说一个条带为8+4,其中8个磁盘块为原始数据块,4个位编码数据块,在存储实际文件的数据的时候,只需要确定原始数据块就可以了,编码数据块不参与计算。假设一个文件存储的大小是25M,每一个磁盘块的大小是4M,那么通过25除以(8*4)等于0,表示只占用了一个条带,且这个条带只用了25除以4再加上1等于7个磁盘块。就是说在这个条带中存储了7个磁盘块,且占用了一个条带。
条带列表,表示这个文件存储所占用的条带列表。通过文件的大小除以(8*4)就可以知道占用了的条带个数(不能整除需要+1)。条带列表中保存的是条带的bid,bid保存的顺序就是文件存储的顺序。第一个bid存储的是文件的前32M内容,第二个bid存储的是文件的第二个32M内容,以此类推。
参见图1,图1为本申请实施例一公开的一种文件均衡分布方法的流程图,该方法包括:
S101:将当前所有磁盘组按照磁盘组剩余空间比进行排序,得到排序列表,并将排序列表保存到与待写入文件相关联的列表中;
其中,磁盘组剩余空间比是使用一个磁盘组的剩余条带数除以这个组的总的条带数得到的值。
S102:在列表中,通过正态分布随机算法选取第一磁盘组;
S103:当待写入文件的大小在第一阈值范围内时,在第一磁盘组中随机选取一个空闲条带作为第一空闲条带,将待写入文件写入第一空闲条带;
其中,第一阈值范围表征待写入文件的大小不大于第一空闲条带的大小;
S104:当待写入文件的大小在第二阈值范围内时,在第一磁盘组中随机选取一个空闲条带作为第二空闲条带,将待写入文件的第一条带的数据写入第二空闲条带;
第一空闲条带与第二空闲条带相同或不同;
S105:通过正态分布随机算法选取列表中除第一磁盘组之外的第二磁盘组,在第二磁盘组中随机选取一个空闲条带作为第三空闲条带,将待写入文件的第二条带的数据写入第三空闲条带;
S106:若待写入文件的写入没有完成,则继续选取出除第一磁盘组和第二磁盘组之外的其它磁盘组的空闲条带进行写入,直至写入完成;
其中,第二阈值范围表征待写入文件的大小大于第一空闲条带的大小,且不大于一轮写入所对应的总空闲条带的大小,一轮写入表示依序将当前所有磁盘组选取一遍,且每个磁盘组选取一个空闲条带进行写入。
该方案还包括:在待写入文件的每一条带的数据写入完成后,将写入数据的条带信息记录在待写入文件中。
需要说明的是,本申请对于文件大小的限定仅是为了描述方便,而对于文件大小的确认时间不做限定,如果是直接写入一个完整的文件,则可在写入前先确认文件的大小,以便确定需要几个磁盘组来存储,来执行相应的写入流程;本申请还可以一边写入文件一边选取相应的磁盘组进行文件写入。
具体的,本申请在创建一个新的文件后,将当前所有的磁盘组按照磁盘组剩余空间比从大到小进行排序,将排序的结果临时保存到与当前文件相关联的信息中,假设当前的磁盘组个数为m(m>0),保存的这个排序列表为slist。在保存第一个条带的数据的时候,产生一个取值不小于0,小于m的正态分布随机数,通过这个随机数从slist中获取一个磁盘组,然后在这个磁盘组中随机选择一个条带,将数据保存在条带中;保存完毕后,将条带的信息记录在这个文件中;同时将slist中对应的磁盘组删除,那么slist就少了一个磁盘组。m=m-1.在存储下一个条带的数据的时候,从剩下的m个磁盘中使用正态分布随机数算法获取一个磁盘组,再从这个磁盘组中选择一个条带进行存储,以此类推,直到将文件保存完毕。
由以上技术方案可知,本申请实施例一提供的文件均衡分布方法中,按照磁盘组剩余空间比对磁盘组进行排序,然后利用正态分布随机算法选取磁盘组,并选取一个条带进行文件写入,并且,在每写完一个磁盘组后,排除已经使用的磁盘组,这样,不仅可以实现将文件尽量保存在更多的磁盘组上,而且,可以将较小的文件尽量在剩余磁盘空间比较大的磁盘组中存储,这样可以减少磁盘组之间的剩余空间比的差距的问题,达到了文件均衡的目的,可以保证所有磁盘都能提供存储和输出功能。
实施例二
基于实施例一的方案,本申请实施例二提供了另一种文件均衡分布方法,主要针对于待写入文件很大的情况,即当待写入文件的大小在第三阈值范围内时的情况,第三阈值范围表征待写入文件的大小大于一轮写入所对应的总空闲条带的大小。如图2所示,图2为本申请实施例二公开的一种文件均衡分布方法的流程图,该方法包括:
S201:将当前所有磁盘组按照磁盘组剩余空间比进行排序,得到排序列表,并将排序列表保存到与待写入文件相关联的列表中;
S202:在列表中,通过正态分布随机算法选取第一磁盘组;在第一磁盘组中随机选取一个空闲条带作为第二空闲条带,将待写入文件的第一条带的数据写入第二空闲条带;
S203:通过正态分布随机算法选取列表中除第一磁盘组之外的第二磁盘组,在第二磁盘组中随机选取一个空闲条带作为第三空闲条带,将待写入文件的第二条带的数据写入第三空闲条带,以此直至遍历所有磁盘组;
S204:开启下一轮写入,直至写入完成。
具体的,在本实施例中,若文件很大,以至于列表中m最后的值被减成了0,即完成了一轮写入,如果还需要存储更多的数据,则重新将所有的磁盘组按照磁盘组剩余空间比从大到小进行排序,将排序的结果临时保存到当前文件关联的信息slist中,设置m为磁盘组的个数,继续前面的步骤,直到将文件保存完毕。
同样的,该方法还包括:在待写入文件的每一条带的数据写入完成后,将写入数据的条带信息记录在待写入文件中。
在本申请中,通过正态分布随机算法选取第一磁盘组包括:
通过伪正态分布随机算法得到一个随机数;
根据随机数与排序列表中计算的伪正态分布到顺序列表的映射关系,选取相应的磁盘组作为第一磁盘组。
具体的,其他磁盘组的选取也参照该过程,在本申请中不再赘述。
当用户写相关的文件内容到分布式存储系统中时,首先检查该文件对应的slist是否为空,若不为空,进入下一个流程;否则信息管理模块获取所有磁盘组的总的条带个数和已经使用的条带个数,通过1-(已经使用的条带个数/总的条带个数)计算出每一个磁盘组的剩余条带比值,将所有条带比值按照从大到小进行排序。如图3所示,图3为本申请实施例提供的一种磁盘组按照剩余空间从多到少的排列图。将磁盘组排序后,将已经排序号的列表保存到该文件相关联的slist中,同时记录磁盘组的个数为m。
信息管理模块在当前文件管理的对应文件的slist中,通过正态分布随机算法,选取一个磁盘组。在用正态分布随机算法选择磁盘组时,需要将磁盘按照正态分布的方式进行布局,则该正态分布方式是伪正态分布方式。由于slist中的磁盘组是按照磁盘组剩余空间比进行排序的,先从slist中获取第一个磁盘组作为伪正态分布的中间值,在顺序获取第二个和第三个磁盘组放到第一个值的两边,再获取第四个和第五个磁盘组依次放到第一个和第三个的外侧,以此类推,将slist中的所有磁盘组都进行伪正态分布排列,得到如图4所示的伪正态分布方式排列。
上述是针对磁盘组的伪正态分布形式,中间是剩余空间比最多的磁盘组,两头是剩余空间比最少的磁盘组。通过正态分布随机算法,从这个伪正态分布的磁盘组中列表选择一个磁盘组。
实际应用中并不一定要按这种正态分布的方式进行处理,但正态分布随机算法也要按照这个方式进行计算,这是因为已经排好序的磁盘组列表不需要再一次进行伪正态分布方式进排序,可以通过公式转换达到正态分布算法的效果。其公式如下:
其中,x表示通过正态分布随机算法算产生的随机数;m表示当前磁盘组的个数;v表示获取正态分布的前面的一半数据,还是后面一半的数据,若v小于0,表示获取正态分布中的前面一半的数据,大于等于0表示获取正态分布后面一半的数据。
当v≥0时,v'=v×2
当v<0时,v'=-v×2-1
v'表示实际的磁盘块在slist中的索引下标。
这样就可以将有序的磁盘组列表变换成了一个伪正态分布的一个列表。就是说我们只需要一个有序的磁盘组列表就可以了。如图5所示,是按照公式进行有序列表和伪正态分布映射的关系图。
在有序列表中,0,1,2,3,4,5,6,7,8,9,10表示磁盘组的有序索引下标,并将其映射到伪正态分布中的位置坐标。当系统产生一个正态分布随机数x,根据上面的图形映射关系,我们可以得出下面的表(m等于11,)
通过上表可以得出,有序列表中的索引可以通过正态分布随机数算法中可以计算出来,并一一的映射。
信息管理模块对应的文件的slist中,通过正态分布随机算法产生一个数字x。通过x计算出v',通过v'在slist的有序列表中取出v'对应的索引下表的磁盘组,得到groupid;通过groupid在条带管理中随机选择一个与该磁盘组相关的空闲条带,得到bid,并标记为正在写状态;通过bid可以获取到磁盘组里面的每一个磁盘的ip、port以及磁盘块id,返回给用户端。
在本申请中,若原始数据和编码数据写失败,或者写成功的磁盘块个数大于编码块个数,则认为写磁盘失败,那么这一个磁盘组就无法正常进行存储了,就需要将这个磁盘组从列表slist中丢弃,然后重新在列表slist中通过正态分布随机算法选择一个磁盘组,并在重新选取的磁盘组中随机选择一个空闲条带进行文件存储。
在待写入文件写入完成后,还包括:清理列表slist的内容,并清理该文件对应的管理。
本申请提供的方案,通过正态分布随机算法得出的结果直接通过公式计算到顺序列表中,可以减少一次顺序列表到伪正态分布的一次排列。按照磁盘组剩余空间比对磁盘组进行排序,然后利用正态分布随机算法选取磁盘组,并选取一个条带进行文件写入,并且,在每写完一个磁盘组后,排除已经使用的磁盘组,这样,不仅可以实现将文件尽量保存在更多的磁盘组上,而且,可以将较小的文件尽量在剩余磁盘空间比较大的磁盘组中存储,这样可以减少磁盘组之间的剩余空间比的差距的问题,达到了文件均衡的目的,可以保证所有磁盘都能提供存储和输出功能。
实施例三
在实施例一的基础上,本申请实施例三提供了一种文件均衡分布装置,如图6所示,该装置应用于分布式存储系统中,包括:
排序单元301,用于将当前所有磁盘组按照磁盘组剩余空间比进行排序,得到排序列表,并将排序列表保存到与待写入文件相关联的列表中;
选取单元302,用于在列表中,通过正态分布随机算法选取第一磁盘组;
第一写入单元303,用于当待写入文件的大小在第一阈值范围内时,在第一磁盘组中随机选取一个空闲条带作为第一空闲条带,将待写入文件写入第一空闲条带;其中,第一阈值范围表征待写入文件的大小不大于第一空闲条带的大小;
第二写入单元304,用于当待写入文件的大小在第二阈值范围内时,在第一磁盘组中随机选取一个空闲条带作为第二空闲条带,将待写入文件的第一条带的数据写入第二空闲条带;第一空闲条带与第二空闲条带相同或不同;
选取单元302还用于通过正态分布随机算法选取列表中除第一磁盘组之外的第二磁盘组,在第二磁盘组中随机选取一个空闲条带作为第三空闲条带,以使第二写入单元304将待写入文件的第二条带的数据写入第三空闲条带;
判断单元305,用于判断待写入文件是否写入完成;若待写入文件的写入没有完成,则选取单元302继续选取出除第一磁盘组和第二磁盘组之外的其它磁盘组的空闲条带以使第二写入单元进行写入,直至写入完成;
其中,第二阈值范围表征待写入文件的大小大于第一空闲条带的大小,且不大于一轮写入所对应的总空闲条带的大小,一轮写入表示依序将当前所有磁盘组选取一遍,且每个磁盘组选取一个空闲条带进行写入。
具体的,该装置还可以包括记录单元,用于在待写入文件的每一条带的数据写入完成后,将写入数据的条带信息记录在待写入文件中。
其他相同或相似的内容可参考实施例一,在本申请中不再赘述。
实施例四
在实施例三的基础上,本申请提供了另一种文件均衡分布装置,主要针对于待写入文件很大的情况,即当待写入文件的大小在第三阈值范围内时的情况,第三阈值范围表征待写入文件的大小大于一轮写入所对应的总空闲条带的大小。如图7所示,该装置包括:
排序单元401,用于将当前所有磁盘组按照磁盘组剩余空间比进行排序,得到排序列表,并将排序列表保存到与待写入文件相关联的列表中;
选取单元402,用于在列表中,通过正态分布随机算法选取第一磁盘组;
第二写入单元403,用于在第一磁盘组中随机选取一个空闲条带作为第二空闲条带,将待写入文件的第一条带的数据写入第二空闲条带;
选取单元402还用于通过正态分布随机算法选取列表中除第一磁盘组之外的第二磁盘组,在第二磁盘组中随机选取一个空闲条带作为第三空闲条带,以使第二写入单元403将待写入文件的第二条带的数据写入第三空闲条带,以此直至遍历所有磁盘组;
第三写入单元404,用于开启下一轮写入,直至写入完成;
其中,第三阈值范围表征待写入文件的大小大于一轮写入所对应的总空闲条带的大小。
同样的,该装置还包括:记录单元,用于在待写入文件的每一条带的数据写入完成后,将写入数据的条带信息记录在待写入文件中。
在本申请中,选取单元包括:
计算单元,用于通过正态分布随机算法得到一个随机数;
选取子单元,用于根据随机数与排序列表中计算的伪正态分布到顺序列表的映射关系,选取相应的磁盘组作为第一磁盘组。
具体的,其他磁盘组的选取也参照该过程,在本申请中不再赘述。
需要说明的是,正态分布随机算法的公式为:
其中,x表示通过正态分布随机算法得到的随机数;m表示所述当前所有磁盘组的个数;v用于表示获取正态分布的前面一半数据,还是后面一半的数据,若v小于0,表示获取正态分布中的前面一半的数据,若v大于或等于0,表示获取正态分布后面一半的数据。
此外,本实施例中与其他实施例相同或相似的内容可相互参考,在本申请中不再赘述。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种文件均衡分布方法,其特征在于,该方法包括:
将当前所有磁盘组按照磁盘组剩余空间比进行排序,得到排序列表,并将所述排序列表保存到与待写入文件相关联的列表中;
在所述列表中,通过正态分布随机算法选取第一磁盘组;
当所述待写入文件的大小在第一阈值范围内时,在所述第一磁盘组中随机选取一个空闲条带作为第一空闲条带,将所述待写入文件写入所述第一空闲条带;其中,所述第一阈值范围表征所述待写入文件的大小不大于所述第一空闲条带的大小;
当所述待写入文件的大小在第二阈值范围内时,在所述第一磁盘组中随机选取一个空闲条带作为第二空闲条带,将所述待写入文件的第一条带的数据写入所述第二空闲条带;所述第一空闲条带与所述第二空闲条带相同或不同;
通过正态分布随机算法选取所述列表中除第一磁盘组之外的第二磁盘组,在所述第二磁盘组中随机选取一个空闲条带作为第三空闲条带,将所述待写入文件的第二条带的数据写入所述第三空闲条带;
若所述待写入文件的写入没有完成,则继续选取出除所述第一磁盘组和第二磁盘组之外的其它磁盘组的空闲条带进行写入,直至写入完成;
其中,所述第二阈值范围表征所述待写入文件的大小大于所述第一空闲条带的大小,且不大于一轮写入所对应的总空闲条带的大小,所述一轮写入表示依序将所述当前所有磁盘组选取一遍,且每个磁盘组选取一个空闲条带进行写入。
2.根据权利要求1所述的方法,其特征在于,该方法还包括:
当所述待写入文件的大小在第三阈值范围内时,开启下一轮写入,直至写入完成;
其中,所述第三阈值范围表征所述待写入文件的大小大于所述一轮写入所对应的总空闲条带的大小。
3.根据权利要求1或2所述的方法,其特征在于,还包括:
在所述待写入文件的每一条带的数据写入完成后,将写入数据的条带信息记录在所述待写入文件中。
4.根据权利要求1所述的方法,其特征在于,所述通过正态分布随机算法选取第一磁盘组包括:
通过正态分布随机算法得到一个随机数;
根据所述随机数与所述排序列表中计算的伪正态分布到顺序列表的映射关系,选取相应的磁盘组作为所述第一磁盘组。
6.一种文件均衡分布装置,其特征在于,该装置包括:
排序单元,用于将当前所有磁盘组按照磁盘组剩余空间比进行排序,得到排序列表,并将所述排序列表保存到与待写入文件相关联的列表中;
选取单元,用于在所述列表中,通过正态分布随机算法选取第一磁盘组;
第一写入单元,用于当所述待写入文件的大小在第一阈值范围内时,在所述第一磁盘组中随机选取一个空闲条带作为第一空闲条带,将所述待写入文件写入所述第一空闲条带;其中,所述第一阈值范围表征所述待写入文件的大小不大于所述第一空闲条带的大小;
第二写入单元,用于当所述待写入文件的大小在第二阈值范围内时,在所述第一磁盘组中随机选取一个空闲条带作为第二空闲条带,将所述待写入文件的第一条带的数据写入所述第二空闲条带;所述第一空闲条带与所述第二空闲条带相同或不同;
所述选取单元还用于通过正态分布随机算法选取所述列表中除第一磁盘组之外的第二磁盘组,在所述第二磁盘组中随机选取一个空闲条带作为第三空闲条带,以使所述第二写入单元将所述待写入文件的第二条带的数据写入所述第三空闲条带;
判断单元,用于判断所述待写入文件是否写入完成;若所述待写入文件的写入没有完成,则所述选取单元继续选取出除所述第一磁盘组和第二磁盘组之外的其它磁盘组的空闲条带以使所述第二写入单元进行写入,直至写入完成;
其中,所述第二阈值范围表征所述待写入文件的大小大于所述第一空闲条带的大小,且不大于一轮写入所对应的总空闲条带的大小,所述一轮写入表示依序将所述当前所有磁盘组选取一遍,且每个磁盘组选取一个空闲条带进行写入。
7.根据权利要求6所述的装置,其特征在于,该装置还包括:
第三写入单元,用于当所述待写入文件的大小在第三阈值范围内时,开启下一轮写入,直至写入完成;
其中,所述第三阈值范围表征所述待写入文件的大小大于所述一轮写入所对应的总空闲条带的大小。
8.根据权利要求6或7所述的装置,其特征在于,还包括:
记录单元,用于在所述待写入文件的每一条带的数据写入完成后,将写入数据的条带信息记录在所述待写入文件中。
9.根据权利要求6所述的装置,其特征在于,所述选取单元包括:
计算单元,用于通过正态分布随机算法得到一个随机数;
选取子单元,用于根据所述随机数与所述排序列表中计算的伪正态分布到顺序列表的映射关系,选取相应的磁盘组作为所述第一磁盘组。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910020186.XA CN111427508B (zh) | 2019-01-09 | 2019-01-09 | 一种文件均衡分布方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910020186.XA CN111427508B (zh) | 2019-01-09 | 2019-01-09 | 一种文件均衡分布方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111427508A true CN111427508A (zh) | 2020-07-17 |
CN111427508B CN111427508B (zh) | 2023-07-21 |
Family
ID=71546644
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910020186.XA Active CN111427508B (zh) | 2019-01-09 | 2019-01-09 | 一种文件均衡分布方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111427508B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114489515A (zh) * | 2022-02-11 | 2022-05-13 | 北京中电兴发科技有限公司 | 一种基于流存储的数据写入方法 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030182349A1 (en) * | 2002-03-21 | 2003-09-25 | James Leong | Method and apparatus for decomposing I/O tasks in a raid system |
US20050246382A1 (en) * | 2004-04-30 | 2005-11-03 | Edwards John K | Extension of write anywhere file layout write allocation |
US20080256307A1 (en) * | 2006-10-17 | 2008-10-16 | Kazuhisa Fujimoto | Storage subsystem, storage system, and method of controlling power supply to the storage subsystem |
CN101604227A (zh) * | 2009-07-17 | 2009-12-16 | 杭州华三通信技术有限公司 | 数据存储的方法及设备 |
CN102446261A (zh) * | 2011-11-15 | 2012-05-09 | 浪潮电子信息产业股份有限公司 | 一种提高raid写效率的方法 |
CN102880428A (zh) * | 2012-08-20 | 2013-01-16 | 华为技术有限公司 | 分布式独立磁盘冗余阵列的创建方法及装置 |
CN103984508A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 基于飞腾处理器平台的raid多线程并发读写方法 |
CN104007936A (zh) * | 2014-01-07 | 2014-08-27 | 华为技术有限公司 | 访问数据的方法及装置 |
US9250823B1 (en) * | 2014-05-20 | 2016-02-02 | Emc Corporation | Online replacement of physical storage in a virtual storage system |
CN106933490A (zh) * | 2015-12-29 | 2017-07-07 | 伊姆西公司 | 控制对磁盘阵列进行读写操作的方法和装置 |
US9720596B1 (en) * | 2014-12-19 | 2017-08-01 | EMC IP Holding Company LLC | Coalescing writes for improved storage utilization |
-
2019
- 2019-01-09 CN CN201910020186.XA patent/CN111427508B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030182349A1 (en) * | 2002-03-21 | 2003-09-25 | James Leong | Method and apparatus for decomposing I/O tasks in a raid system |
US20050246382A1 (en) * | 2004-04-30 | 2005-11-03 | Edwards John K | Extension of write anywhere file layout write allocation |
US20080256307A1 (en) * | 2006-10-17 | 2008-10-16 | Kazuhisa Fujimoto | Storage subsystem, storage system, and method of controlling power supply to the storage subsystem |
CN101604227A (zh) * | 2009-07-17 | 2009-12-16 | 杭州华三通信技术有限公司 | 数据存储的方法及设备 |
CN102446261A (zh) * | 2011-11-15 | 2012-05-09 | 浪潮电子信息产业股份有限公司 | 一种提高raid写效率的方法 |
CN102880428A (zh) * | 2012-08-20 | 2013-01-16 | 华为技术有限公司 | 分布式独立磁盘冗余阵列的创建方法及装置 |
CN104007936A (zh) * | 2014-01-07 | 2014-08-27 | 华为技术有限公司 | 访问数据的方法及装置 |
CN103984508A (zh) * | 2014-05-15 | 2014-08-13 | 中国人民解放军国防科学技术大学 | 基于飞腾处理器平台的raid多线程并发读写方法 |
US9250823B1 (en) * | 2014-05-20 | 2016-02-02 | Emc Corporation | Online replacement of physical storage in a virtual storage system |
US9720596B1 (en) * | 2014-12-19 | 2017-08-01 | EMC IP Holding Company LLC | Coalescing writes for improved storage utilization |
CN106933490A (zh) * | 2015-12-29 | 2017-07-07 | 伊姆西公司 | 控制对磁盘阵列进行读写操作的方法和装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114489515A (zh) * | 2022-02-11 | 2022-05-13 | 北京中电兴发科技有限公司 | 一种基于流存储的数据写入方法 |
CN114489515B (zh) * | 2022-02-11 | 2022-08-16 | 北京中电兴发科技有限公司 | 一种基于流存储的数据写入方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111427508B (zh) | 2023-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106407207B (zh) | 一种实时新增数据更新方法和装置 | |
CN102867071B (zh) | 一种网管海量历史数据管理方法 | |
CN107436725A (zh) | 一种数据写、读方法、装置及分布式对象存储集群 | |
CN109445713A (zh) | 一种元数据卷的存储状态记录方法、系统及相关组件 | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN107015985B (zh) | 一种数据存储与获取方法及装置 | |
JP2012526320A5 (zh) | ||
US6742078B1 (en) | Management, data link structure and calculating method for flash memory | |
JP2005267600A5 (zh) | ||
US20120246394A1 (en) | Flash Memory Device and Data Writing Method for a Flash Memory | |
CN109117273B (zh) | 数据存储方法、装置及设备 | |
CN111459399A (zh) | 一种数据写入方法、数据读取方法及装置 | |
CN102142282A (zh) | 一种NAND Flash存储芯片ECC校验算法的识别方法 | |
CN109407985B (zh) | 一种数据管理的方法以及相关装置 | |
CN107479834A (zh) | 一种基于cos的文件存储方法及装置 | |
CN111488127A (zh) | 基于磁盘簇的数据并行存储方法、装置以及数据读取方法 | |
CN110688065A (zh) | 一种存储空间管理方法、系统、电子设备及存储介质 | |
CN115756955A (zh) | 一种数据备份、数据恢复的方法、装置及计算机设备 | |
CN108845771A (zh) | 一种存储系统中配置raid的方法、系统及相关组件 | |
CN111399761A (zh) | 存储资源分配方法、装置及设备、存储介质 | |
CN111427508B (zh) | 一种文件均衡分布方法及装置 | |
CN108572788A (zh) | 数据存取方法、装置及系统 | |
CN110019347A (zh) | 一种区块链的数据处理方法、装置及终端设备 | |
CN107132994A (zh) | 一种延长可擦写芯片寿命的方法和装置 | |
CN110427557A (zh) | 主播推荐方法、装置、电子设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |