纠删码集群文件系统提高顺序写效率的处理方法及装置的制造方法
【专利摘要】本发明公开了一种纠删码集群文件系统提高顺序写效率的处理方法和装置,该方法包括:在纠删码集群文件系统顺序写遇到用户数据未满条带时,将用户数据中的满条带的部分数据下发到写操作处理模块,将未满条带的部分数据缓存下来,与下一次的用户数据进行拼接,如满足拼接条件且拼接起来的数据满足一个条带的整数倍,则将拼接后的满条带数据下发到写操作处理;如满足拼接条件但拼接后的数据不满足条带尾,则将拼接后的满条带的部分数据下发到写操作处理模块,将拼接后的不满足条带尾的部分数据继续缓存下来。
【专利说明】
纠删码集群文件系统提高顺序写效率的处理方法及装置
技术领域
[0001]本发明涉及纠删码集群文件系统技术领域,特别是指纠删码集群文件系统提高顺序写效率的处理方法及装置。
【背景技术】
[0002]纠删码集群文件系统是运行于Iinux操作系统上的一个文件系统,它按照文件系统自身组织数据的规则处理并存储用户数据。顺序写是指在向文件写入内容时按照顺序逐一写入。条带化是把连续的数据分割成相同大小的数据块,把每段数据分别写入到阵列中不同磁盘上的方法。它比单个磁盘所能提供的读写速度要快得多,目前在磁盘阵列存储中得到广泛应用。
[0003]纠删码是将用户数据切割成多个条带,是纠删码算法的最小单位,然后再根据算法和各个条带的用户数据算出冗余数据,最后将用户数据和冗余数据按照规则写入磁盘。
[0004]纠删码技术基本思想是将一份数据划分为k块原始的数据,基于k块原始数据经过纠删码算法获得m块冗余数据,将得到的k+m块数据写入磁盘中;以保证对于这k+m块数据,当其中任意的m块元素出错时,磁盘均可以通过重构算法恢复出原始的k块数据。
[0005]传统的纠删码集群文件系统顺序写遇到未满条带时,需要重新从磁盘的底层文件系统读取未满条带(也称为条带头)部分的数据内容,用以拼接出一个完整的满条带,然后再向整个集群下发写操作,这期间增加了内存与磁盘底层文件系统交互的次数,从而导致顺序写的效率低,增加了时间成本。
[0006]针对现有技术中磁盘写入效率低、耗时长的问题,目前尚未有有效的解决方法。
【发明内容】
[0007]有鉴于此,本发明的目的在于提出一种纠删码集群文件系统提高顺序写效率的处理方法及装置,能够减少内存与磁盘的底层文件系统的交互次数,大大提高了顺序写的效率。
[0008]基于上述目的本发明提供的一种纠删码集群文件系统提高顺序写效率的处理方法,其特征在于,包括:纠删码集群文件系统顺序写遇到未满条带时,自动缓存未满条带的数据,缓存数据与下一次的用户数据根据拼接条件进行拼接;如满足拼接条件且拼接起来的数据满足一个条带的整数倍,则将拼接后的满条带数据下发到写操作处理模块;
[0009]如没有缓存数据,则判断用户数据是否满足条带尾,如满足条带尾则将用户数据下发到写操作处理模块,如不满足条带尾则将其中的满条带的部分数据下发到写操作处理模块,但将不满足条带尾的部分数据缓存下来。
[0010]上述方法中,所述缓存数据与所述用户数据如满足拼接条件但拼接后的数据不满足条带尾,则将拼接后的满条带的部分数据下发到写操作处理模块,将拼接后的不满足条带尾的部分数据继续缓存下来。
[0011 ]上述方法中,所述缓存数据与所述用户数据如不满足拼接条件,则将缓存数据下发到写操作处理模块,再判断用户数据是否满足条带尾;如满足条带尾则将用户数据下发到写操作处理模块;如不满足条带尾则将其中的满条带数据下发到写操作处理模块,但将不满足条带尾的部分数据缓存下来。
[0012]上述方法中,所述拼接条件是指将缓存数据的偏移位置与用户数据的偏移位置进行比较,如用户数据的偏移位置恰位于缓存数据偏移位置与缓存数据长度之和的后一位,则可拼接;否则不能拼接。
[0013]上述方法中,所述不满足条带尾是指将用户数据的偏移位置与用户数据的长度相加,相加的和对条带大小求余;若有余数,则不满足条带尾,余数对应的数据即为不满足条带尾的部分数据。
[0014]上述方法中,所述缓存数据如果超时,则将缓存数据下发到写操作处理。
[0015]根据本发明的一个实施例,还提供一种纠删码集群文件系统提高顺序写效率的处理装置,包括:用于将数据缓存的内存设备,用于进行逻辑判断的内存逻辑控制单元,用于存储数据的磁盘设备,以及用于实现纠删码集群文件系统提高顺序写效率的处理方法的系统。
[0016]从上面所述可以看出,本发明提供的一种纠删码集群文件系统提高顺序写效率的处理方法及装置在纠删码集群文件系统顺序写遇到未满条带时,自动缓存该未满条带的数据,再向集群下发写操作,避免了传统写操作前需从磁盘的底层文件系统读取未满条带数据的步骤,减少了与磁盘的底层文件系统的交互次数,大大提高了顺序写的效率。
【附图说明】
[0017]以下参照附图对本发明实施例作进一步说明,其中:
[0018]图1为本发明提供的纠删码集群文件系统提高顺序写效率的处理方法实施例的结构流程图;
[0019]图2为本发明提供的纠删码集群文件系统提高顺序写效率的处理方法实施例的条带头、条带尾以及满条带的概念图;
[0020]图3为本发明提供的纠删码集群文件系统提高顺序写效率的处理方法实施例的缓存处理流程图;
[0021]图4为本发明提供的纠删码集群文件系统提高顺序写效率的处理方法实施例的写操作处理流程图。
[0022]图中可能存在的英文单词或其缩写翻译如下:
[0023]CPU——中央处理器;
[0024]cache O 一一集群缓存处理模块;
[0025]user_data_len--用户数据的长度;
[0026]user_offset--用户数据的偏移位置;
[0027 ] cache_data_len--缓存数据的长度;
[0028]cache_offset--缓存数据的偏移位置;
[0029]writevO--集群写操作处理模块。
【具体实施方式】
[0030]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0031]本发明提供的一种纠删码集群文件系统提高顺序写效率的处理方法,其特征在于,包括:纠删码集群文件系统顺序写遇到未满条带时,自动缓存未满条带的数据,缓存数据与下一次的用户数据根据拼接条件进行拼接;如满足拼接条件且拼接起来的数据满足一个条带的整数倍,则将拼接后的满条带数据下发到写操作处理模块;
[0032]如没有缓存数据,则判断用户数据是否满足条带尾,如满足条带尾则将用户数据下发到写操作处理模块,如不满足条带尾则将其中的满条带的部分数据下发到写操作处理模块,但将不满足条带尾的部分数据缓存下来。
[0033]上述方法中,所述缓存数据与所述用户数据如满足拼接条件但拼接后的数据不满足条带尾,则将拼接后的满条带的部分数据下发到写操作处理模块,将拼接后的不满足条带尾的部分数据继续缓存下来。
[0034]上述方法中,所述缓存数据与所述用户数据如不满足拼接条件,则将缓存数据下发到写操作处理模块,再判断用户数据是否满足条带尾;如满足条带尾则将用户数据下发到写操作处理模块,如不满足条带尾则将其中的满条带数据下发到写操作处理模块,但将不满足条带尾的部分数据缓存下来。
[0035]上述方法中,所述拼接条件是指将缓存数据的偏移位置与用户数据的偏移位置进行比较,如用户数据的偏移位置恰位于缓存数据偏移位置与缓存数据长度之和的后一位,则可拼接;否则不能拼接。
[0036]上述方法中,所述不满足条带尾是指将用户数据的偏移位置与用户数据的长度相加,相加的和对条带大小求余;若有余数,则不满足条带尾,余数对应的数据即为不满足条带尾的部分数据。
[0037]上述方法中,所述缓存数据如果超时,则将缓存数据下发到写操作处理。
[0038]下面结合附图描述本发明提供的纠删码集群文件系统提高顺序写效率的处理方法的一个实施例。
[0039]图1示出了纠删码集群文件系统提高顺序写效率的处理方法实施例的整体结构流程图,其中内存部分包括集群、集群缓存处理模块与集群写操作处理模块。
[0040]纠删码集群文件系统提高顺序写效率的处理方法包括缓存处理流程和写操作处理流程,具体为:当纠删码集群文件系统待顺序写入用户数据时,如果没有缓存数据且用户数据是满条带的整数倍,则直接将用户数据下发写操作处理模块;如果没有缓存数据且用户数据不是满条带的整数倍,则将用户数据中的满条带部分数据下发写操作处理模块,将用户数据中的未满条带的部分数据缓存下来。当下一次的用户数据待写入时,判断缓存数据与待写入的用户数据是否满足拼接条件,如果满足拼接条件且拼接后的数据满足一个条带的整数倍,则将拼接后的满条带数据下发到写操作处理模块;如果满足拼接条件但拼接后的数据不满足一个条带的整数倍,则将拼接后的数据中的满条带部分数据下发到写操作处理模块,将拼接后的数据中的未满条带的部分数据继续缓存下来;如果不满足拼接条件,则将缓存数据下发到写操作处理模块,再判断用户数据是否满足条带尾,将满足条带尾的部分数据下发到写操作处理模块;如果缓存超时,则直接将缓存数据下发到写操作处理模块。
[0041]图2示出的是纠删码集群文件系统提高顺序写效率的处理方法实施例的条带头、条带尾以及满条带的概念图,如图2所示,满条带为多个条带组成,每个格子代表一个条带,内部没有网状线的是第一条带,存储需要缓存部分的条带头位于第一条带内;清零的部分位于条带尾;条带头与条带尾之间是一次写入的用户数据大小可能同时占据多个条带,以User_data表示;条带头的末端即文件写入的起始偏移位置,记为Off set。
[0042]图3示出的是纠删码集群文件系统提高顺序写效率的处理方法实施例的缓存处理流程图,如图3所示,缓存处理流程的具体步骤如下:I)当用户数据未满条带时,将未满条带的部分用户数据缓存(作为条带头),并给用户返回一个成功的值,使用户继续写入。2)判断是否有缓存数据,如没有缓存数据则判断用户数据是否满足条带尾;如满足条带尾则将用户数据下发到写操作处理模块,如不满足条带尾则将用户数据中的满条带部分数据下发到写操作处理模块,将不满足条带尾的部分数据缓存下来。3)在有缓存情况下,通过拼接条件判断缓存数据与用户数据是否能拼接。拼接条件如下:将缓存数据的偏移位置与用户数据的偏移位置进行比较,如用户数据的偏移位置恰位于缓存数据偏移位置与缓存数据长度之和的后一位,则可拼接;否则不能拼接。4)如不能拼接,则将缓存数据下发到写操作处理,再判断用户数据是否满足条带尾;如能拼接,判断拼接后的数据是否满足条带尾。5)如用户数据(或拼接后的数据)满足条带尾,则将用户数据(或拼接后的数据)下发进入写操作处理模块;如用户数据(或拼接后的数据)不满足条带尾,则将用户数据(或拼接后的数据)中的满条带的部分数据下发到写操作处理模块,将不满足条带尾的部分数据缓存,等待下一次写入或定时刷新。
[0043]是否满足条带尾的判断规则:将用户数据的偏移位置与用户数据的长度相加,相加的和对条带大小求余;若余数为O则满足条带尾;若余数不为O则不满足条带尾,余数对应的数据即为不满足条带尾的部分数据。
[0044]图4示出的是纠删码集群文件系统提高顺序写效率的处理方法实施例的写操作处理流程图,如图4所示,写操作处理流程的具体步骤如下:I)对于待写入的用户数据,计算出用户数据的长度(字节数);2)判断是否满足条带头,如果满足条带头则继续判断是否满足条带尾;3)如满足条带尾,则将用户数据经过纠删码算法分片并计算出校验数据;4)将经过纠删码算法处理后的用户数据与校验数据写入集群的各个节点(磁盘)中。
[0045]是否满足条带头的判断规则:将指定的用户偏移位置对条带大小进行求余计算,若余数为O则满足条带头;若余数不为O则说明不满足条带头,余数对应的数据即为条带头的部分数据。
[0046]应当注意的是,经过缓存处理后的数据通常既满足条带头又满足条带尾。但在首次进行写操作处理(即此时无缓存数据)时,会出现待写入的数据不满足条带头或不满足条带尾的情况。此时,如待写入的用户数据不满足条带头,则需要根据用户数据的偏移位置计算出条带头的偏移位置,并向磁盘的底层文件系统读取条带头的部分数据,再将条带头的部分数据与待写入的用户数据进行拼接;对拼接后的数据再判断是否满足条带尾,如果不满足条带尾,则需要从磁盘的底层文件系统中读取条带尾的部分数据进行清零处理,再将处理后的数据进行纠删码算法处理。
[0047]虽然首次进行写操作处理时需要从磁盘的底层文件系统读取数据,但由于经过缓存处理后的数据通常既满足条带头又满足条带尾,故本实施例中的处理方法仍然大大减少了与底层文件系统的交互次数,从而提高了顺序写的效率。
[0048]上文描述了本发明提供的纠删码集群文件系统提高顺序写效率的处理方法的实施例。本发明还提供了纠删码集群文件系统提高顺序写效率的装置的实施例,包括:用于将数据缓存的内存设备,用于进行逻辑判断的内存逻辑控制单元,用于存储数据的磁盘设备,以及用于实现纠删码集群文件系统提高顺序写效率的处理方法的系统。装置采用多个磁盘组成磁盘阵列对数据进行条带化存储,通过采用上文中的处理方法,装置可以实现提高纠删码集群文件系统顺序写的效率。
[0049]从上面所述可以看出,本发明提供的一种纠删码集群文件系统提高顺序写效率的处理方法及装置在纠删码集群文件系统顺序写遇到未满条带时,自动缓存该未满条带的数据,再向集群下发写操作,避免了传统写操作前需从磁盘的底层文件系统读取未满条带数据的步骤,减少了与磁盘的底层文件系统的交互次数,大大提高了顺序写的效率。
[0050]所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本公开的范围(包括权利要求)被限于这些例子;在本发明的思路下,以上实施例中的技术特征之间也可以进行组合,并存在如上所述的本发明的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种纠删码集群文件系统提高顺序写效率的处理方法,其特征在于,包括:纠删码集群文件系统顺序写遇到未满条带时,自动缓存未满条带的数据;如有缓存数据,将缓存数据与下一次的用户数据根据拼接条件进行拼接,如满足拼接条件且拼接起来的数据满足一个条带的整数倍,则将拼接后的满条带数据下发到写操作处理模块; 如没有缓存数据,则判断用户数据是否满足条带尾,如满足条带尾则将用户数据下发到写操作处理模块,如不满足条带尾则将用户数据中的满条带的部分数据下发到写操作处理模块,但将不满足条带尾的部分数据缓存下来。2.根据权利要求1所述的方法,其特征在于,所述缓存数据与所述用户数据如满足拼接条件但拼接后的数据不满足条带尾,则将拼接后的满条带的部分数据下发到写操作处理模块,将拼接后的不满足条带尾的部分数据继续缓存下来。3.根据权利要求1所述的方法,其特征在于,所述缓存数据与所述用户数据如不满足拼接条件,则将缓存数据下发到写操作处理模块,再判断用户数据是否满足条带尾;如满足条带尾则将用户数据下发到写操作处理模块,如不满足条带尾则将其中的满条带数据下发到写操作处理模块,但将不满足条带尾的部分数据缓存下来。4.根据权利要求1或2或3所述的方法,其特征在于,所述拼接条件是指将缓存数据的偏移位置与用户数据的偏移位置进行比较,如用户数据的偏移位置恰位于缓存数据偏移位置与缓存数据长度之和的后一位,则可拼接;否则不能拼接。5.根据权利要求1或2或3所述的方法,其特征在于,所述是否满足条带尾是指将用户数据的偏移位置与用户数据的长度相加,相加的和对条带大小求余;若余数为O则满足条带尾,若余数不为O则不满足条带尾,余数对应的数据即为不满足条带尾的部分数据。6.根据权利要求1所述的方法,其特征在于,所述缓存数据如果超时,则将缓存数据下发到写操作处理模块。7.—种纠删码集群文件系统提高顺序写效率的处理装置,其特征在于,包括:用于将数据缓存的内存设备,用于进行逻辑判断的内存逻辑控制单元,用于存储数据的磁盘设备,以及用于实现纠删码集群文件系统提高顺序写效率的处理方法的系统。
【文档编号】G06F3/06GK105824583SQ201610243348
【公开日】2016年8月3日
【申请日】2016年4月18日
【发明人】王晓强, 张建伟
【申请人】北京鲸鲨软件科技有限公司