CN106406756B - 一种文件***的空间分配方法及装置 - Google Patents

一种文件***的空间分配方法及装置 Download PDF

Info

Publication number
CN106406756B
CN106406756B CN201610802647.5A CN201610802647A CN106406756B CN 106406756 B CN106406756 B CN 106406756B CN 201610802647 A CN201610802647 A CN 201610802647A CN 106406756 B CN106406756 B CN 106406756B
Authority
CN
China
Prior art keywords
data
data block
block
sub
blocks
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.)
Active
Application number
CN201610802647.5A
Other languages
English (en)
Other versions
CN106406756A (zh
Inventor
翁宇佳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610802647.5A priority Critical patent/CN106406756B/zh
Publication of CN106406756A publication Critical patent/CN106406756A/zh
Priority to PCT/CN2017/081343 priority patent/WO2018040590A1/zh
Application granted granted Critical
Publication of CN106406756B publication Critical patent/CN106406756B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)

Abstract

本发明实施例公开了一种文件***的空间分配方法及装置。在一种空间分配方法中,接收写数据请求,写数据请求包括待写入数据以及待写入数据的长度。根据待写入数据的长度,从存储设备包含的多个数据块组中确定一个目标数据块组,目标数据块组包括一个或多个数据块,每个数据块的空闲空间的大小对应同一个大小区间,待写入数据的长度在大小区间以内。从多个数据块中确定一个目标数据块。将待写入数据写入目标数据块的空闲空间中。本发明实施例根据数据块的大小划分数据块组。对数据块分组时,仅需获取数据块大小的信息,减小了确定数据块写入地址时,获取的数据块信息占用缓存空间的大小,提高了设备的性能。

Description

一种文件***的空间分配方法及装置
技术领域
本发明涉及存储设备技术领域,尤其涉及一种文件***的空间分配方法及装置。
背景技术
在存储***实现文件***功能的时候,在采用ROW机制的文件***中,对文件再次写入时,将不会写入到原文件所存储的位置,而是随机的为写入的文件分配空间。
现有的文件***中,通过一个位图来表示一个数据块的使用情况。以数据块大小为4MB为例,位图中的一位表示4KB数据块空间,所以一个数据块的位图需要256byte。对数据块进行分配时,需要优先分配大数据块。为了优先使用大数据块,需要读取所有数据块的位图,对所有的数据块的位图进行容量统计,找到剩余空间最大的数据块,然后将其分配出去。随着文件***的使用,表示空间使用情况的位图会越来越多。如果每个I/O请求,都需要把所有的位图取出来,并找到最大空间,在时延上是无法接受的。
发明内容
本发明实施例提供了一种文件***的空间分配方法及装置。可以实现方便的为需要写入的数据分配数据写入地址。
一方面,本发明具体实施例提供一种空间分配方法,所述方法包括,接收写数据请求,所述写数据请求包括待写入数据以及所述待写入数据的长度。根据所述待写入数据的长度,从所述存储设备包含的多个数据块组中确定一个目标数据块组,所述目标数据块组包括一个或多个数据块,每个数据块的空闲空间的大小对应同一个大小区间,所述待写入数据的长度在所述大小区间以内。从所述多个数据块中确定一个目标数据块。以将所述待写入数据写入所述目标数据块的空闲空间中。由此实现了,根据数据块的大小划分数据块组。对数据块分组时,仅需获取数据块大小的信息,减小了确定数据块写入地址时,获取的数据块信息占用缓存空间的大小,提高了设备的性能。
在一个可能的设计中,所述方法还包括获取所述存储设备包括的多个数据块的信息,所述信息包括每个数据块的空闲空间的大小。根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组,每个数据块组对应一个大小区间。对数据块分组时,仅需获取数据块大小的信息,减小了确定数据块写入地址时,获取的数据块信息占用缓存空间的大小,提高了设备的性能。
在一个可能的设计中,所述根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组包括。根据所述每个数据块空闲空间的大小和每个数据块的总容量,确定每个数据块的空闲容量占每个数据块的总容量的比例,根据所述每个数据块的空闲容量占每个数据块的总容量的比例将所述多个数据块划分为所述多个数据块组。根据每个数据块的空闲空间占每个数据块的总容量的比例的方式来确定数据块数据块的剩余容量,使数据块剩余容量的计算更加方便。
在一个可能的设计中,所述每个数据块中包括多个子数据块。所述根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组包括,根据所述每个数据块中空闲的子数据块与每个数据块中包括的所有的子数据块的个数,确定每个数据块中空闲的子数据块占每个数据块的所有的子数据块的比例,根据所述每个数据块中空闲的子数据块占每个数据块的所有的子数据块的比例将所述多个数据块划分为所述多个数据块组。根据每个数据块中空闲的子数据块占每个数据块的所有的子数据块的比例来确定数据块数据块的剩余容量,使数据块剩余容量的计算更加方便。
在一个可能的设计中,所述方法还包括,对所述目标数据块中存储的数据进行释放。对所述目标数据块生成新的信息,所述新的信息包括当前目标数据块的空闲空间的大小。通过数据释放时产生新的数据块信息,使新的数据在存放时能够获取新的数据块信息。
在一个可能的设计中,所述对所述目标数据块生成新的数据块信息具体包括,所述目标数据块中包括多个子数据块,确定所述目标数据块中的多个子数据块包括一个或多个空闲子数据块和一个或多个非空闲子数据块。根据所述多个子数据块中空闲子数据块和/或非空闲子数据块的数量,确定所述目标数据块生成新的数据块信息。通过统计标记的空闲子数据块和非空闲子数据块的数量,来确定数据块信息,使的数据块信息更新更加的方便。
另一方面,本发明具体实施例提供一种服务器,所述服务器包括用于数据存储,包括:接收单元和处理单元。接收单元,用于接收写数据请求,所述写数据请求包括待写入数据以及所述待写入数据的长度。处理单元,用于根据所述待写入数据的长度,从所述存储设备包含的多个数据块组中确定一个目标数据块组,所述目标数据块组包括一个或多个数据块,每个数据块的空闲空间的大小对应同一个大小区间,所述待写入数据的长度在所述大小区间以内。所述处理单元,还用于从所述多个数据块中确定一个目标数据块;以将所述待写入数据写入所述目标数据块的空闲空间中。由此实现了,根据数据块的大小划分数据块组。对数据块分组时,仅需获取数据块大小的信息,减小了确定数据块写入地址时,获取的数据块信息占用缓存空间的大小,提高了设备的性能。
在一个可能的设计中,接收单元,获取所述存储设备包括的多个数据块的信息,所述信息包括每个数据块的空闲空间的大小。处理单元,根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组,每个数据块组对应一个大小区间。对数据块分组时,仅需获取数据块大小的信息,减小了确定数据块写入地址时,获取的数据块信息占用缓存空间的大小,提高了设备的性能。
在一个可能的设计中,处理单元根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组包括,根据所述每个数据块空闲空间的大小和每个数据块的总容量,确定每个数据块的空闲容量占每个数据块的总容量的比例,根据所述每个数据块的空闲容量占每个数据块的总容量的比例将所述多个数据块划分为所述多个数据块组。根据每个数据块的空闲空间占每个数据块的总容量的比例的方式来确定数据块数据块的剩余容量,使数据块剩余容量的计算更加方便。
在一个可能的设计中,所述每个数据块中包括多个子数据块,处理单元根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组包括,根据所述每个数据块中空闲的子数据块与每个数据块中包括的所有的子数据块的个数,确定每个数据块中空闲的子数据块占每个数据块的所有的子数据块的比例,根据所述每个数据块中空闲的子数据块占每个数据块的所有的子数据块的比例将所述多个数据块划分为所述多个数据块组。根据每个数据块中空闲的子数据块占每个数据块的所有的子数据块的比例来确定数据块数据块的剩余容量,使数据块剩余容量的计算更加方便。
在一个可能的设计中,所述处理器,还对所述目标数据块中存储的数据进行释放。所述处理器,对所述目标数据块生成新的数据块信息,所述新的数据块信息包括当前目标数据块的空闲空间的大小。通过数据释放时产生新的数据块信息,使新的数据在存放时能够获取新的数据块信息。
在一个可能的设计中,所述处理器对所述目标数据块生成新的数据块信息具体包括,所述目标数据块中包括多个子数据块,确定所述目标数据块中的多个子数据块包括一个或多个空闲子数据块和一个或多个非空闲子数据块。根据所述多个子数据块中空闲子数据块和/或非空闲子数据块的数量,确定所述目标数据块生成新的数据块信息。通过统计标记的空闲子数据块和非空闲子数据块的数量,来确定数据块信息,使的数据块信息更新更加的方便。
再一方面,本发明具体实施例提供一种服务器,包括:处理器、存储器、通信接口和总线,其中,所述处理器、所述存储器和所述通信接口通过所述总线通信。所述通信接口用于与所述存储控制设备连接。所述存储器用于存储程序。
本发明实施例提供了一种文件***的空间分配方法及装置。根据待写入数据的长度,从数据块组中确定一个目标数据块,并在目标数据块组中确定一个数据块,将待写入数据写入确定的数据块中。由此实现了,根据数据块的大小划分数据块组。对数据块分组时,仅需获取数据块大小的信息,减小了确定数据块写入地址时,获取的数据块信息占用缓存空间的大小,提高了设备的性能。
附图说明
图1为本发明实施例提供的存储***的组成图;
图2是本发明实施例控制器的结构示意图;
图3为本发明具体实施例提供的一种数据存储方法;
图4为本发明具体实施例中提供的一种存储器中存储的数据块信息;
图5为本发明具体实施例提供的一种按照数据块可用空间比例分组的间接层数据信息;
图6为本发明实施例提供的一种数据块更新的示意图;
图7为本发明具体实施例提供的一种服务器。
具体实施方式
下面通过附图和实施例,对本发明实施例的技术方案做进一步的详细描述。
图1为本发明实施例提供的存储***的组成图。如图1所示,存储***包括至少一个应用服务器10和至少一个存储设备20。所述应用服务器10可以包括当前技术已知的任何计算设备,如主机、服务器、台式计算机等等。应用服务器10中运行有应用程序(application)11,用户可以通过应用程序 11向存储设备20发送各种文件处理请求。
所述存储设备20与所述应用服务器11之间可以通过网络中的NFS(Net FileSystem,网络文件***)/CIFS(Common Internet File System,普通网络文件***)协议进行数据传输,它可以是当前技术已知的任何包含文件***的存储设备,如存储阵列、存储服务器等。
存储设备20包括控制器21和存储介质31。控制器21可以包括当前技术已知的任何计算设备,如服务器、台式计算机等等。在控制器内部,包括有文件***210以及其他应用程序。控制器21用于执行文件处理请求的各种操作,例如创建文件操作、打开文件操作、读文件操作、写文件操作等等。存储设备20包含提供存储空间保存文件的存储介质31。
下面介绍控制器21的硬件组成结构,请参考图2,图2是本发明实施例控制器21的结构示意图。如图2所示,控制器21主要包括处理器 (processor)118、缓存(cache)120、存储器(memory)122、通信总线(简称总线)126以及通信接口(Communication Interface)128。处理器118、缓存120、存储器122以及通信接口128通过通信总线126完成相互间的通信。
通信接口128,用于与应用服务器10或存储介质31通信。
存储器122,用于存放程序124,存储器122可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可以理解的是,存储器122可以为随机存储器(Random-Access Memory, RAM)、磁碟、硬盘、光盘、固态硬盘(Solid State Disk,SSD)或者非易失性存储器等各种可以存储程序代码的非短暂性的(non-transitory)机器可读介质。
程序124可以包括程序代码,所述程序代码包括文件***210以及其他程序代码。
缓存120(Cache)用于缓存从应用服务器10接收的数据或从存储介质 31中读取的数据。缓存120可以是RAM、ROM、闪存(Flash memory)或固态硬盘(Solid State Disk,SSD)等各种可以存储数据的非短暂性的 (non-transitory)机器可读介质,在此不做限定。
另外,存储器122和缓存120可以合设或者分开设置,本发明实施例对此不做限定。
处理器118可能是一个中央处理器CPU,或者是特定集成电路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。在本发明实施例中,处理器118可以用于接收来自应用服务器10的各种文件处理请求,并且通过文件***210执行所述文件处理请求的各种操作,例如文件迁移操作、读文件操作、写文件操作等。
所述存储介质31可以是阵列,所述阵列包括由多个磁盘和/或SSD (solid-statedrive,固态硬盘)等组成。
将文件写入磁盘时,应用服务器通过应用程序向存储设备发送IO请求。所述存储设备的控制器根据IO请求确定数据写入的地址。存储设备根据数据写入的地址将数据进行存储。
所述通信接口128接收的数据写入请求,所述数据写入请求包括需要写入的数据和需要写入的数据的长度。处理器118对所述写入请求进行处理,根据需要写入的数据的长度来确定数据写入地址。
处理器118在确定对一个需要写入的数据分配空间时,还需要从存储器122中获取多个数据块信息。所述处理器118根据获取的数据块信息,确定出一个数据块。将需要写入的数据写入确定的数据块。
其中,存储器122中包括存储了多个数据块信息。所述多个数据块信息中的每个数据块信息用于表示该数据块当前可用于数据存储的信息。所述每个数据块信息包括位图信息和间接层数据信息。所述位图信息用于表示数据块中每个子数据块可否用于数据的存储。所述间接层数据信息包括当前数据块可用于数据存储的空间的大小和数据块的标识。所述处理器118根据间接层数据确定将数据存储至哪个数据块,根据位图信息确定将需要写入的数据写入确定的数据块的哪些子数据块中。
所述处理器118在确定需要写入的数据写入哪个数据块时,获取多个数据块的信息是获取多个数据块中每个数据块的间接层数据。并根据每个间接层数据中数据块的大小确定出一个数据块。其中,处理器118在获取数据块信息时,获取的多个数据块的间接层数据信息。获取的多个数据块的间接层数据进行统计,将多个数据块根据间接层数据分为多个数据块组。所述处理器118将多个数据块分为多个数据块组并存储在缓存120中。从多个数据块组中确定一个可用于存储需要写入的数据的目标数据块组。并且在确定的一个目标数据块组中选择一个数据块,获取该数据块的标识。
在一个数据块分组方法中,处理器118根据多个数据块的间接层数据,将多个数据块分为多个组可以是,将多个间接层数据按照可用空间占数据块总空间的比例、可用子数据块占总子数据块的比例等多种具体的方法进行确定,本发明对此不作任何限定。
在另一种数据块分组方法中,处理器118将多个数据块的间接层数据分为多个数据块组可以是,将多个间接层数据按照可用空间占数据块总空间的比例、可用子数据块占总子数据块的比例等多种具体的方法进行确定,本发明对此不作任何限定。
在本发明的另一种具体实施例中,所述磁盘中存储的间接层数据是对多个数据块按照一定的规则分组后的间接层数据。处理器118在从磁盘中获取数据块信息时,根据需要写入的数据的长度确定一个与写入数据相对应的目标数据块组。处理器118从获取的一个数据块组中确定一个数据块,获取该数据块的标识。在本发明的具体实施例中,所述获取一个与需要写入的数据的长度相对应的数据块组可以是确定一个,数据块组中可能存在的最小容量的数据块的容量大于需要写入的数据所占用的空间。
在确定写入的数据将要写入的数据块后,所述处理器118还根据确定的数据块的标识,从存储器122中获取数据块中的位图信息。通过获取与确定的数据块具有相同标识的位图信息。根据位图信息,确定需要写入的数据写入该数据块的哪些子数据块。将需要写入的数据写入确定的数据块中确定的子数据块。
在将需要写入的数据写入后,还对写入了数据的数据块的数据块信息进行更新。确定数据块中哪些子数据可以用于存储,从而确定新的位图信息和间接层数据信息。将新的位图信息、和数据块信息覆盖原来的信息。
所述存储器122中还包括数据存储信息,所述数据存储信息包括数据块标识和数据写入地址。通过在数据读取、更新和删除的过程中,通过数据存储信息对已存储的数据进行操作。
本发明的具体实施例还包括用于对磁盘中的数据进行删除。处理器118 接收应用服务器10中包括的应用程序11发送的数据删除请求。所述数据删除请求包括需要删除的数据的标识信息。所述控制器21的通信接口128接收所述请求。处理器118根据标识信息获取数据存储信息,通过数据存储信息确定该数据所存储的数据块及子数据块。根据获取的该数据所存储的数据块及子数据块信息,将相应的子数据块所占用的空间进行释放。所述处理器118 在释放空间后,所述处理器118将对该数据块的数据块信息进行更新。根据新的数据块信息中包括的位图信息和间接层数据,覆盖原来的数据块信息。在新写入数据时,通过获取间接层数据,根据间接层数据中每个数据块可用空间的大小和写入文件的大小确定所要存储的数据块,并将数据存储到磁盘的相应数据块中。
图3为本发明具体实施例提供的一种数据存储方法。如图3所述,所述方法包括:
S301接收写数据请求,所述写数据请求包括待写入数据以及所述待写入数据的长度。
接收数据写入请求。所述数据写入请求中包括的需要写入的数据以及所述需要写入数据的长度。其中,可以通过图2所示的应用程序发送数据写入请求,并通过通信接口128来接收所述数据写入请求。
S302根据所述待写入数据的长度,从所述存储设备包含的多个数据块组中确定一个目标数据块组。
接收数据写入请求后,处理器118获取数据块信息中包括的间接层数据,以根据获取的间接层数据确定需要写入的数据写入的数据块。
所述设备中还包括多个数据块信息,所述多个数据块信息中的每个数据块信息用于表示该数据块当前可用于数据存储的信息,所述数据块信息存储在存储器122中。所述多个数据块信息包括间接层数据和位图信息。所述间接层数据信息用于表示可用于数据存储的空间大小,所述位图信息用于表示数据块中哪些子数据块可用于数据存储。
在一个例子中,当一个子数据块可以用于存储数据时,该数据块在位图中用一个数表示(例如1);当一个子数据块不能用于存储数据是,该数据块在位图中用另一个数表示(例如0)。所述间接层数据中包括当前数据块的标识和当前数据块的可用空间的大小。
在一个例子中,图4为本发明具体实施例中提供的一种存储器中存储的数据块信息。如图4所示,数据块信息中包括存储位图信息和间接层数据信息。其中,位图信息包括16个位图信息,每个位图信息对应一个数据块。每个位图信息中包括一个数据块的标识和该数据块中包括的多个子数据块的信息。一个标识为“id1”的数据块的位图信息为“1110110101”。一个标识为“id2”的数据块的位图信息为“0001001010”。一个标识为“id3”的数据块的位图信息为“0111101111”。为了描述的方便,剩余13个数据块的标识和位图信息不一一列出,具体如图4中的位图信息所示。所述数据块信息包括数据块的标识和所述数据块剩余可用空间的比例。其中,标识为“id1”的数据块可用空间比例为“70%”;标识为“id2”的数据块可用空间比例为“30%”;标识为“id3”的数据块可用空间比例为“80%”。为了描述的方便,剩余13个数据块的间接层数据信息不一一列出,具体如图4所示的间接层数据信息所示。
需要说明的是,通过0、1标识子数据块是否可用和通过剩余可用空间比例占数据块总空的比例来标识间接层数据信息仅为举例时的一种具体方法,不能用于对本发明的限定。在本发明中,可以用任意两个不同的标识标记子数据块是否可用。
在本发明的具体实施例中,所述处理器118获取多个数据块的信息是获取多个数据块中每个数据块的间接层数据,根据每个间接层数据中数据块的大小确定出一个数据块。在获取间接层数据后,处理器118还将获取的间接层数据分为多个数据块组。从多个数据块组中确定一个可用于存储需要写入的数据的数据块组。
所述处理器118将多个数据块的间接层数据分为多个数据块组可以是将多个间接层数据按照可用空间占数据块总空间的比例、可用子数据块占总子数据块的比例等多种具体的方法进行确定,本发明对此不作任何限定。
所述处理器118在获取间接层数据时,根据需要存储的数据的长度获取一个与需要写入的数据的长度相对应的数据块组。所述获取的一个数据块组是获取一个与需要写入的数据的长度相对应的组。
图5为本发明具体实施例提供的一种按照数据块可用空间比例分组的间接层数据信息。如图5所示,可用空间为0%-40%、40%-60%、60%-80%、 80%-100%的分组情况。其中,0%-40%分组中包括id2、id4、id6、id10、id13,即id2、id4、id6、id10、id13当前可用空间的容量为0%-40%。40%-60%分组中包括id9、id14、id15,即id9、id14、id15当前可用空间的容量为40%-60%。 60%-80%分组中包括id1、id7、id8,即id1、id7、id8当前可用空间的容量为 60%-80%。8%-100%分组中包括id3、id5、id11、id12、id16,即id3、id5、id11、 id12、id16当前可用空间的容量为8%-100%。
需要说明的是,上述数据块组的划分情况仅为本发明的一种举例,在具体的实施过程中,可以以任意的方式,分为任意数量的组。
在本发明的具体实施例中,所述存储器122中可以是存储了如图4所示的数据块信息,所述数据块信息中包括间接层数据。处理器118获取如图4中所示的数据块信息中包括的间接层数据,并将获取的间接层数据进行分组,分为如图5所示的分组。从如图5所示的间接层数据中确定一个与需要写入的数据相对应的分组
在本发明的另一种具体实施例中,所述存储器122中存储的数据块信息中包括存储间接层数据,所述间接层数据可以如图5所示。所述数据块信息中的间接层数据分为多个数据块组,将多个数据块分为多个数据块组可以是将多个间接层数据按照可用空间占数据块总空间的比例、可用子数据块占总子数据块的比例等多种具体的方法进行确定,本发明对此不作任何限定。所述处理器118根据需要写入的数据的长度,从存储器122中获取一个与需要写入的数据相对应的数据块组。
S303、从所述多个数据块中确定一个目标数据块。
处理器118在确定获取一个数据块组后,所述方法还包括在所述数据块组中包括的多个数据块中确定一个用于写入需要写入数据的数据块。
在本发明的具体实施例中,所述一个与需要写入的数据相对应的数据块组是一组容量大于或等于需要写入的数据的数据块。例如,整个数据块的大小为4Mb,对多个数据块进行分组将数据块分为等于0%-小于40%、等于40%-小于60%、等于60%-小于80%、等于80%-小于100%和等于100%五组。当需要写入的数据的大小为2Mb时,选择等于60%-小于80%的数据块组。从等于60%-小于80%的数据块组中任意选择一个数据块,均能够满足该数据的存储。
因此,在本发明的具体实施例中,可以从确定的数据块组中任意确定一个数据块。所任意选择的数据块能够用于需要写入的数据的存储。
S304、将所述待写入数据写入所述目标数据块的空闲空间中。
所述在确定一个数据块时,获取该数据块的标识信息。并根据所述数据块的标识信息,从所述数据块信息中获取与该标识信息对应的位图信息。
所述位图信息用于表示数据块中每个子数据块可否用于数据的存储。在一个例子中,当一个子数据块可以用于存储数据时,该数据块在位图中用一个数表示(例如1);当一个子数据块不能用于存储数据是,该数据块在位图中用另一个数表示(例如0)。
所述处理器118在获取一个数据块的可用情况信息后,根据所述位图信息中包括的一个数据块中的每个子数据块的可用情况信息,确定将需要写入的数据写入哪些子数据块中。处理器118将处理的结果返回至存储设备,通过存储设备将需要写入的数据写入确定的子数据块中。将确定需要写入数据的子数据块,以及子数据块中写入的数据的标识进行存储。
在本发明的具体实施例中,还包括将磁盘中存储的数据释放并对存储器 122中存储的数据块信息进行更新,以使新写入的数据能够在释放的子数据块中写入新的数据。
将数据释放时,存储设备接收主机或应用服务器中包括的应用程序发送的数据删除请求。所述数据删除请求包括需要删除的数据的标识,获取所述存储器122中存储的关于已存储数据的信息。所述处理器118根据需要删除的数据的标识确定该数据存储在哪个数据块以及数据块中的哪些子数据块。所述处理器118根据需要删除的数据所在的数据块及数据块中的子数据块。所述处理器118从存储器122中获取相应数据块的位图信息,根据数据块中存储需要删除的数据的子数据块对位图进行更新。所述处理器118对位图进行更新是在位图信息中将需要删除的数据的子数据块由不可进行数据存储修改为可进行存储。
在一个例子中,图6为本发明实施例提供的一种数据块更新的示意图。如图6所示,包括更新前部分和更新后部分。数据块的标识为“id13”,数据块中包括10个子数据块。在对数据块更新前,第四个子数据块可以用于数据的存储,其余数据块不能够用于数据的存储。当IO适配层接到一个标识为“001100”的数据的删除请求时,根据所述标识确定该数据存储在标识为“id13”的数据块中,并具体存储在第一个、第三个、第五个、第七个、第八个、第十个子数据块中。块分配器将位图信息进行更新,对数据块更新后,第一个、第三个、第四个、第五个、第七个、第八个、第十个子数据块可以用于新写入数据的存储,其余数据块不能用于对新写入数据的存储
在对位图进行更新后,还对该数据块的间接层数据进行更新,所述对间接层数据进行更新可以是根据更新后的位图的信息进行确定。在对数据块信息更新后,将更新后的数据进行存储。
图7为本发明具体实施例提供的一种服务器。如图7所示,所述方法具体包括:
接收单元701,用于接收写数据请求,所述写数据请求包括待写入数据以及所述待写入数据的长度。
处理单元702,用于根据所述待写入数据的长度,从所述存储设备包含的多个数据块组中确定一个目标数据块组,所述目标数据块组包括一个或多个数据块,每个数据块的空闲空间的大小对应同一个大小区间,所述待写入数据的长度在所述大小区间以内;
所述处理单元702,还用于从所述多个数据块中确定一个目标数据块;以将所述待写入数据写入所述目标数据块的空闲空间中。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程 ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (13)

1.一种空间分配方法,其特征在于,所述方法应用于存储设备中,包括:
接收写数据请求,所述写数据请求包括待写入数据以及所述待写入数据的长度;
根据所述待写入数据的长度,从所述存储设备包含的多个数据块组中确定一个目标数据块组,所述目标数据块组包括一个或多个数据块,每个数据块的空闲空间的大小对应同一个大小区间,所述待写入数据的长度在所述大小区间以内;
从所述多个数据块中确定一个目标数据块;
以将所述待写入数据写入所述目标数据块的空闲空间中。
2.根据权利要求1所述的方法,其特征在于,还包括:
获取所述存储设备包括的多个数据块的信息,所述信息包括每个数据块的空闲空间的大小;
根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组,每个数据块组对应一个大小区间。
3.根据权利要求2所述的方法,其特征在于,所述根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组包括:
根据所述每个数据块空闲空间的大小和每个数据块的总容量,确定每个数据块的空闲容量占每个数据块的总容量的比例,根据所述每个数据块的空闲容量占每个数据块的总容量的比例将所述多个数据块划分为所述多个数据块组。
4.根据权利要求2所述的方法,其特征在于,所述每个数据块中包括多个子数据块;
所述根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组包括:
根据所述每个数据块中空闲的子数据块与每个数据块中包括的所有的子数据块的个数,确定每个数据块中空闲的子数据块占每个数据块的所有的子数据块的比例,根据所述每个数据块中空闲的子数据块占每个数据块的所有的子数据块的比例将所述多个数据块划分为所述多个数据块组。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述目标数据块中存储的数据进行释放;
对所述目标数据块生成新的数据块信息,所述新的数据块信息包括当前目标数据块的空闲空间的大小。
6.根据权利要求5所述的方法,其特征在于,所述对所述目标数据块生成新的数据块信息具体包括:
所述目标数据块中包括多个子数据块,确定所述目标数据块中的多个子数据块包括一个或多个空闲子数据块和一个或多个非空闲子数据块;
根据所述多个子数据块中空闲子数据块和/或非空闲子数据块的数量,确定所述目标数据块生成新的数据块信息。
7.一种服务器,其特征在于,所述服务器包括用于数据存储,包括:
接收单元,用于接收写数据请求,所述写数据请求包括待写入数据以及所述待写入数据的长度;
处理单元,用于根据所述待写入数据的长度,从所述存储设备包含的多个数据块组中确定一个目标数据块组,所述目标数据块组包括一个或多个数据块,每个数据块的空闲空间的大小对应同一个大小区间,所述待写入数据的长度在所述大小区间以内;
所述处理单元,还用于从所述多个数据块中确定一个目标数据块;以将所述待写入数据写入所述目标数据块的空闲空间中。
8.根据权利要求7所述的服务器,其特征在于,还包括:
接收单元,获取所述存储设备包括的多个数据块的信息,所述信息包括每个数据块的空闲空间的大小;
处理单元,根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组,每个数据块组对应一个大小区间。
9.根据权利要求8所述的服务器,其特征在于,处理单元根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组包括:
根据所述每个数据块空闲空间的大小和每个数据块的总容量,确定每个数据块的空闲容量占每个数据块的总容量的比例,根据所述每个数据块的空闲容量占每个数据块的总容量的比例将所述多个数据块划分为所述多个数据块组。
10.根据权利要求8所述的服务器,其特征在于,所述每个数据块中包括多个子数据块;
处理单元根据每个数据块的空闲空间的大小,将所述存储设备包括的多个数据块划分为所述多个数据块组包括:
根据所述每个数据块中空闲的子数据块与每个数据块中包括的所有的子数据块的个数,确定每个数据块中空闲的子数据块占每个数据块的所有的子数据块的比例,根据所述每个数据块中空闲的子数据块占每个数据块的所有的子数据块的比例将所述多个数据块划分为所述多个数据块组。
11.根据权利要求7所述的服务器,其特征在于,所述
处理器,还对所述目标数据块中存储的数据进行释放;
所述处理器,对所述目标数据块生成新的数据块信息,所述新的数据块信息包括当前目标数据块的空闲空间的大小。
12.根据权利要求11所述的服务器,其特征在于,所述处理器对所述目标数据块生成新的数据块信息具体包括:
所述目标数据块中包括多个子数据块,确定所述目标数据块中的多个子数据块包括一个或多个空闲子数据块和一个或多个非空闲子数据块;
根据所述多个子数据块中空闲子数据块和/或非空闲子数据块的数量,确定所述目标数据块生成新的数据块信息。
13.一种服务器,其特征在于,所述包括:
处理器、存储器、通信接口和总线,其中,所述处理器、所述存储器和所述通信接口通过所述总线通信;
所述通信接口用于与所述存储控制设备连接;
所述存储器用于存储程序;
当所述服务器运行时,所述处理器用于执行所述存储器存储的所述程序,以执行权利要求1至6任一项所述的方法。
CN201610802647.5A 2016-09-05 2016-09-05 一种文件***的空间分配方法及装置 Active CN106406756B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201610802647.5A CN106406756B (zh) 2016-09-05 2016-09-05 一种文件***的空间分配方法及装置
PCT/CN2017/081343 WO2018040590A1 (zh) 2016-09-05 2017-04-21 一种文件***的空间分配方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610802647.5A CN106406756B (zh) 2016-09-05 2016-09-05 一种文件***的空间分配方法及装置

Publications (2)

Publication Number Publication Date
CN106406756A CN106406756A (zh) 2017-02-15
CN106406756B true CN106406756B (zh) 2019-07-09

Family

ID=57999768

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610802647.5A Active CN106406756B (zh) 2016-09-05 2016-09-05 一种文件***的空间分配方法及装置

Country Status (2)

Country Link
CN (1) CN106406756B (zh)
WO (1) WO2018040590A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106406756B (zh) * 2016-09-05 2019-07-09 华为技术有限公司 一种文件***的空间分配方法及装置
CN114035749B (zh) * 2018-01-12 2023-02-28 珠海极海半导体有限公司 电子设备和Flash存储器
CN108616583B (zh) * 2018-04-16 2020-12-15 亿享不道张家口信息科技有限公司 一种基于计算机云的存储空间分配方法
CN110427340B (zh) * 2018-04-28 2023-08-04 伊姆西Ip控股有限责任公司 用于文件存储的方法、装置和计算机存储介质
US10852968B2 (en) * 2018-05-07 2020-12-01 Apple Inc. Techniques for managing memory allocation within a storage device to improve operation of a camera application
CN110659250B (zh) * 2018-06-13 2022-02-22 中国电信股份有限公司 文件处理方法和***
CN109164982B (zh) * 2018-08-23 2021-04-02 京东方科技集团股份有限公司 数据处理电路、方法及数据存储设备
CN109977078B (zh) * 2019-03-26 2020-06-02 广州荔支网络技术有限公司 一种数据的处理方法、装置、计算机设备和存储介质
CN111176561B (zh) * 2019-12-20 2024-02-06 北京新忆科技有限公司 存储器的写入方法和装置
CN111309267B (zh) * 2020-02-26 2023-10-03 Oppo广东移动通信有限公司 存储空间的分配方法、装置、存储设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104065906A (zh) * 2014-07-09 2014-09-24 珠海全志科技股份有限公司 数字录像设备的录像方法及装置
CN104133642A (zh) * 2014-07-29 2014-11-05 浙江宇视科技有限公司 SSD Cache填充方法及装置
CN104699416A (zh) * 2013-12-10 2015-06-10 杭州海康威视***技术有限公司 一种数据存储***以及一种数据存储方法
CN104850507A (zh) * 2014-02-18 2015-08-19 腾讯科技(深圳)有限公司 一种数据缓存方法和数据缓存装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8555288B2 (en) * 2006-05-17 2013-10-08 Teradata Us, Inc. Managing database utilities to improve throughput and concurrency
CN101520743B (zh) * 2009-04-17 2010-12-08 杭州华三通信技术有限公司 基于写时拷贝的数据存储方法及设备
US8966209B2 (en) * 2010-08-23 2015-02-24 Apple Inc. Efficient allocation policies for a system having non-volatile memory
CN104298681B (zh) * 2013-07-18 2018-06-19 华为技术有限公司 一种数据存储方法及装置
CN104035729B (zh) * 2014-05-22 2017-02-15 中国科学院计算技术研究所 一种日志映射的块设备精简配置方法
CN104239234B (zh) * 2014-10-13 2016-03-30 合一网络技术(北京)有限公司 一种高效的本地缓存管理及读写方法
CN106406756B (zh) * 2016-09-05 2019-07-09 华为技术有限公司 一种文件***的空间分配方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104699416A (zh) * 2013-12-10 2015-06-10 杭州海康威视***技术有限公司 一种数据存储***以及一种数据存储方法
CN104850507A (zh) * 2014-02-18 2015-08-19 腾讯科技(深圳)有限公司 一种数据缓存方法和数据缓存装置
CN104065906A (zh) * 2014-07-09 2014-09-24 珠海全志科技股份有限公司 数字录像设备的录像方法及装置
CN104133642A (zh) * 2014-07-29 2014-11-05 浙江宇视科技有限公司 SSD Cache填充方法及装置

Also Published As

Publication number Publication date
WO2018040590A1 (zh) 2018-03-08
CN106406756A (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
CN106406756B (zh) 一种文件***的空间分配方法及装置
JP6524039B2 (ja) メモリシステム及び制御方法
CN109144887B (zh) 存储器***及控制非易失性存储器的控制方法
CN104885062B (zh) 使用逻辑到物理映射以与数据存储装置进行直接用户空间通信
KR100951107B1 (ko) 최적의 성능을 위한 파일 관리 방법
CN109542332A (zh) 存储器***及控制非易失性存储器的控制方法
CN109725847A (zh) 存储器***及控制方法
CN109240938A (zh) 存储***以及控制非易失性存储器的控制方法
CN101189584B (zh) 内存页面管理
CN106527963B (zh) 存储器***及主机装置
US20180165014A1 (en) Array controller, solid state disk, and method for controlling solid state disk to write data
CN104423894B (zh) 数据储存装置以及快闪存储器控制方法
CN107239526B (zh) 文件***实现方法、碎片整理方法、操作位置定位方法
CN109726139A (zh) 存储器***及控制方法
JP6783645B2 (ja) メモリシステムおよび制御方法
CN106874217A (zh) 存储器***及控制方法
CN105511806B (zh) 处理写请求的方法和移动终端
CN107122130B (zh) 一种数据重删方法及装置
CN105373487B (zh) 一种存储操作***的碎片整理方法及***
CN108733306A (zh) 一种文件合并方法及装置
CN110096221A (zh) 存储器***及其控制方法
WO2013098463A1 (en) Method for erasing data entity in memory module
CN109117308A (zh) 快照处理的方法和装置
CN108475230A (zh) 一种存储***和***垃圾回收方法
CN109086462A (zh) 一种分布式文件***中元数据的管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant