CN107656697B - 一种在存储介质上操作数据的方法和装置 - Google Patents
一种在存储介质上操作数据的方法和装置 Download PDFInfo
- Publication number
- CN107656697B CN107656697B CN201610594741.6A CN201610594741A CN107656697B CN 107656697 B CN107656697 B CN 107656697B CN 201610594741 A CN201610594741 A CN 201610594741A CN 107656697 B CN107656697 B CN 107656697B
- Authority
- CN
- China
- Prior art keywords
- storage block
- block file
- storage
- data
- values
- 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
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/0614—Improving the reliability of storage systems
-
- 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/0662—Virtualisation aspects
- G06F3/0667—Virtualisation aspects at data level, e.g. file, record or object virtualisation
Abstract
本申请提供一种在存储介质上操作数据的方法和装置,所述方法包括以下步骤:获取在存储介质上指定的存储区块文件操作指定的数据的请求;根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位;根据所述相应标志位的值,执行相应的操作。所述方法能够有效地减少存储介质上磁盘碎片的产生,提高存储空间利用率。减少存储介质上磁盘碎片的数量,能够显著提高输入输出操作的效率。从而起到提升系统整体性能的作用。
Description
技术领域
本申请涉及一种操作数据的方法,具体涉及一种在存储介质上操作数据的方法和装置。
背景技术
虚拟机业务作为一个重要的云存储业务,底层通常是用一个分布式文件系统来提供存储资源池,虚拟机的硬盘则以底层的分布式文件系统上的文件形式存在。虚拟机的硬盘格式组织方式有两种,一种是VHD(虚拟磁盘)方式组织的,另一种则是raw(原始的,未加工处理)格式。
与vhd格式方式相比raw格式管理开销更小、读写速度更快、性能更优,但是却存在着使用空间较大的问题。如果使用了raw格式,虚拟机硬盘在底层表现为一个稀疏文件。稀疏文件占用了很大的空间,但是并没有写入真正的数据而是以全0填充,这些用0填充的存储空间称为file hole(文件空洞)。
大量文件空洞的存在带来了三个问题,一是降低了输入输出操作的效率,大量落到空洞处的系统调用影响了性能;二是会使大量的硬盘空间被分配但未使用,且不能被分配给别的文件,降低了利用率;三是零碎的数据分布在硬盘上导致了大量磁盘碎片。通常来讲,这是影响性能的最大因素。
为了解决性能问题,现有技术方案通常采取chunk(存储区块文件)按需分配和chunk(存储区块文件)所占物理空间预分配的技术。
Chunk(存储区块文件)是分布式文件系统中业务应用文件按照固定大小被划分成的多个部分,Chunk(存储区块文件)被分配到不同的数据服务器(通常称之为chunkserver)上,以文件的方式存到所述数据服务器的本地文件系统上,是分布式文件系统管理其上的业务应用文件的最小管理单位。。
Chunk(存储区块文件)按需分配是指如果切分后chunk(存储区块文件)所代表的空间全是空洞的话则不进行数据空间的分配。Chunk(存储区块文件)所占物理空间预分配则是指通过提前申请一大片连续的chunk(存储区块文件)空间来减少磁盘碎片,申请的空间大小则通常比文件长度略长。
分布式系统将业务应用系统的文件切分成chunk(存储区块文件)后,如果chunk(存储区块文件)本身又是一个稀疏的文件的话,仍然会导致磁盘碎片的存在,当存在较多磁盘碎片时,现有方案仍然存在输入输出操作的效率较低和空间利用率较低的问题。
发明内容
本申请提供一种在存储介质上操作数据的方法。本申请同时提供一种在存储介质上操作数据的装置。
本申请提供的一种在存储介质上操作数据的方法,包括以下步骤:
获取在存储介质上指定的存储区块文件操作指定的数据的请求;
根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位;
根据所述相应标志位的值,执行相应的操作。
优选地,所述存储区块文件的标志位集合包括:所述存储区块文件的各个子存储区块的属性的标志位的集合。
优选地,所述子存储区块的属性包括未分配和已分配。
优选地,所述标志位集合包括位图。
优选地,所述操作参数包括:所述指定的存储区块文件的标识,所述操作所对应的所述存储区块文件中的偏移量和所述数据的长度。
优选地,所述在存储介质上指定的存储区块文件操作指定的数据的请求包括:
读取存储介质上指定的存储区块文件内指定的位置的数据的请求,所述位置包括所述请求所包含的操作参数所指定的位置。
优选地,所述根据所述相应标志位的值,执行相应的操作包括:
若所述标志位的值全为表示未分配的值,则将数据0返回给所述请求的请求者。
优选地,所述根据所述相应标志位的值,执行相应的操作包括:
若所述标志位的值不全为表示未分配的值,则读取所述不表示未分配的标志位所对应的所述存储介质上所述存储区块文件的子存储区块的数据;
将读取到的所述数据以及所述表示未分配的标志位所对应的子存储区块存储的数据0返回给所述请求的请求者。
优选地,所述在存储介质上指定的存储区块文件操作指定的数据的请求包括:
将待写入数据写入存储介质上指定存储区块文件的指定位置的请求,所述位置包括所述请求所包含的操作参数所指定的位置。
优选地,所述根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作操作所对应的所述存储区块文件的标志位集合的相应标志位包括:
若所述指定的存储区块文件不存在,则建立所述存储区块文件;
将所述存储区块文件划分为多于一个的子存储区块;
建立所述存储区块文件的标志位集合,使得所述存储区块文件的各个子存储区块与所述标志位集合中的各个标志位一一对应;
将所述标志位集合的所有标志位的值全置为表示未分配的值;
根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位。
优选地,所述根据所述相应标志位的值,执行相应的操作包括:
若所述相应标志位的值全为表示已分配的值,则将所述待写入数据写入所述存储介质上所述存储区块文件的所述标志位所对应的子存储区块。
优选地,所述根据所述相应标志位的值,执行相应的操作包括:
若所述相应标志位的值不全为表示已分配的值,则将所述不表示已分配的标志位的值全置为表示已分配的值;
将所述待写入数据写入所述存储介质上所述存储区块文件的所述标志位所对应的子存储区块。
本申请提供的一种在存储介质上操作数据的装置,包括:
获取单元,用于获取在存储介质上指定的存储区块文件操作指定的数据的请求;
确定单元,用于根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位;
执行单元,用于根据所述相应标志位的值,执行相应的操作。
优选地,所述获取单元具体用于:
获取读取存储介质上指定的存储区块文件内指定的位置的数据的请求,所述位置包括所述请求所包含的操作参数所指定的位置。
优选地,所述执行单元具体用于:
若所述标志位的值全为表示未分配的值,则将数据0返回给所述请求的请求者。
优选地,所述执行单元包括:
读取子单元,用于若所述标志位的值不全为表示未分配的值,则读取所述不表示未分配的标志位所对应的所述存储介质上所述存储区块文件的子存储区块的数据;
返回子单元,用于将读取到的所述数据返回给所述请求者。
优选地,所述获取单元具体用于:
获取将待写入数据写入存储介质上指定存储区块文件的指定位置的请求,所述位置包括所述请求所包含的操作参数所指定的位置。
优选地,所述确定单元包括:
存储区块文件建立子单元,用于若所述指定的存储区块文件不存在,则建立所述存储区块文件;
划分子单元,用于将所述存储区块文件划分为多于一个的子存储区块;
标志位集合建立子单元,用于建立所述存储区块文件的标志位集合,使得所述存储区块文件的各个子存储区块与所述标志位集合中的各个标志位一一对应标志位集合标志位集合;
标志位集合赋值子单元,用于将所述标志位集合的所有标志位的值全置为表示未分配的值;
标志位确定子单元,用于根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位。
优选地,所述执行单元具体用于:
若所述相应标志位的值全为表示已分配的值,则将所述待写入数据写入所述存储介质上所述存储区块文件的所述标志位所对应的子存储区块。
优选地,所述执行单元包括:
标志位设置子单元,用于若所述相应标志位的值不全为表示已分配的值,则将所述不表示已分配的标志位的值全置为表示已分配的值;
写入子单元,用于将所述待写入数据写入所述存储介质上所述存储区块文件的所述标志位所对应的子存储区块。
与现有技术相比,本申请提供的在存储介质上操作数据的方法具有以下优点:根据操作所对应的存储区块文件的标志位集合的相应标志位的值的不同,执行相对应地操作。使得现有对存储区块文件的操作更为灵活,能够有效地减少存储介质上磁盘碎片的产生,提高存储空间利用率。减少存储介质上磁盘碎片的数量,能够显著提高输入输出操作的效率。从而起到提升系统整体性能的作用。
附图说明
图1为本申请第一实施例一种在存储介质上操作数据的方法的流程示意图;
图2为本申请第二实施例一种在存储介质上操作数据的装置的结构框图;
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
本申请第一实施例提供一种在存储介质上操作数据的方法,其流程示意图如图1所示,该实施例包括以下步骤:
步骤S101,获取在存储介质上指定的存储区块文件操作指定的数据的请求。
分布式文件系统将业务应用系统的文件或整个存储映射为一个大文件,所述大文件被划分为大小相同的多个存储区块文件,所述存储区块文件分布于所述分布式文件系统的不同的数据服务器的存储介质上。
所述存储介质既包括利用磁存储技术存储数据的硬盘、光盘或磁盘阵列等,也包括利用电存储技术存储数据的固态硬盘。
当业务应用需要对某个文件的某些数据进行存储相关的操作时,会向分布式文件系统发送相应的操作请求,所述分布式文件系统在收到所述请求后,将所述请求转化为针对该分布式文件系统的存储介质上相应的存储区块文件,相应位置的数据操作请求。
本步骤获取所述分布式文件系统针对其存储介质上相应的存储区块文件,相应位置的数据操作请求,所述操作既可以是从所述分布式文件系统的存储介质上的指定的存储区块文件的指定位置,读取指定的文件的数据的操作,也可以是将待写入数据写入指定的文件的所述分布式文件系统的存储介质上的指定的存储区块文件的指定位置的操作。
无论是对于读取数据的操作还是写入数据的操作,所述请求包括所述数据操作所必要的操作参数,如:所述存储区块文件的标识,所述数据的长度以及所述操作所对应的所述存储区块文件的偏移量(即在所述存储区块文件中,所述操作的开始的位置)等。其中所述操作所对应的所述存储区块文件的偏移量指定了所述操作在所述指定的存储区块文件中的位置。
例如,对于业务应用系统读取数据的请求,可以获取到分布式文件系统读取数据的请求,所述请求的操作参数包括欲读取数据保存在分布式文件系统的存储介质上的相应存储区块文件的标识“cs2chunk100”,所述读取操作所对应的所述存储区块文件的偏移量62M以及被读取数据的长度2100KB等。
对于业务应用系统写入数据的请求,可以获取到分布式文件系统将待写入数据写入存储介质的请求,所述请求的操作参数包括在分布式文件系统的存储介质上的相应存储区块文件的标识“cs2chunk100”,所述待写入操作所对应的所述存储区块文件的偏移量62M以及所述代写入数据的长度2100KB等。
步骤S102,根据所述请求中包含的操作参数,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位。
对于分布式文件系统的存储区块文件,将其在划分为多个大小相等的多个更小的子存储区块,为每一个子存储区块设置一个标志位,所述标志位用于标识所述存储区块文件的各个子存储区块是否已经分配用于数据存储或尚未分配用于数据存储。
以标志位标识存储区块文件的各个子存储区块能够使得对存储区域的控制更加细致和灵活。
对于已经分配用于数据存储的子存储区块,可以设置其所对应的标志位的值为表示其所对应的子存储区块已经分配用于数据存储,例如为1,即标志位的值为1表示其所对应的子存储区块已经分配用于数据存储;对于尚未分配用于数据存储的子存储区块,可以设置其所对应的标志位的值为表示其所对应的子存储区块尚未分配用于数据存储,例如为0,即标志位的值为0标识其所对应的子存储区块尚未分配用于数据存储。
将所述存储区块文件的所有子存储区块的标志位集合在一起,形成所述存储区块文件的标志位集合,所述存储区块文件的标志位集合中的每一个标志位与所述存储区块文件中的每一个子存储区块一一对应。
所述标志位集合可以采用位图(bitmap)的形式,即每一位(bit)表示一个子存储区块的分配情况,如位图的某一位(bit)为1,表示其所对应的子存储区块已经分配用于数据存储,为0表示其所对应的子存储区块尚未分配用于数据存储。
存储区块文件的标志位集合采用位图的形式来表示其子存储区块的分配与否能够最大限度地节省存储空间,例如,对于包含64个1MB子存储区块的存储区块文件,其标志位集合的位图仅为64位(bit),即字节(8Byte)。
本步骤根据前一步骤中获取的操作请求所包含的操作参数以及所述存储区块文件和其子存储区块的大小,确定所述操作请求所对应的所述存储区块的标志位集合中的相应标志位。
对于前一步骤中获得的分布式文件系统读取数据的请求,可以根据所述请求中包含的所述读取操作所对应的所述存储区块文件中的偏移量和欲读取数据的长度,以及所述存储区块文件和其子存储区块的大小确定所述操作请求所对应的所述存储区块的标志位集合中的相应标志位。
具体算法可以为:首先根据所述存储区块文件的大小和其标志位集合中标志位的数量确定所述存储区块文件的子存储区块的大小:将所述存储区块文件的大小与其标志位集合中标志位的数量的比值作为所述存储区块文件的子存储区块的大小。
再根据所述操作所对应的所述存储区块文件的子存储区块的大小和所述读取操作所对应的所述存储区块文件的偏移量,确定所述读取操作所对应的第一个子存储区块的位置:将所述读取操作所对应的所述存储区块文件的偏移量与所述存储区块文件的子存储区块的大小的比值作为所述读取操作所对应的第一个子存储区块的位置。进而确定第一个相对应的标志位。
最后根据欲读取数据的长度和所述存储区块文件的子存储区块的大小,确定标志位的数量:将欲读取数据的长度与所述存储区块文件的子存储区块的大小的比值向上取整后得到的值作为标志位的数量。
至此能够得到所述读取操作所对应的所述存储区块文件的标志位集合的相应标志位。
对于前一步骤中获得的分布式文件系统写入数据的请求,需要根据所述请求中包含的所述存储区块的标识,所述写操作所对应的所述存储区块文件中的偏移量以及待写入数据的长度,以及所述存储区块文件和其子存储区块的大小确定所述存储区块的标志位集合中的相应标志位。
当所述存储区块文件不存在时,首先建立所述的存储区块文件,再将所述存储区块文件按照实际需要划分为大小相等的多个子存储区块,建立所述存储区块文件的标志位集合,所述标志位集合中的各个标志位分别与所述存储区块文件中的各个子存储区块一一对应。将所述存储区块文件的标志位集合中的所有标志位的值都置为表示尚未分配用于数据存储的值。
当获取到写入数据的请求时进行将所述存储区块文件划分为多个大小相同的更小的子存储区块,并建立所述存储区块文件的标志位集合,标识所述存储区块文件的子存储区块文件的分配情况,能够按照业务应用系统的实际需要分配存储空间,节约存储容量,减少磁盘碎片。
确定了所述存储区块文件的标志位集合后,无论是对于新建立的存储区块文件,还是已经存在的存储区块文件,都可以与读取操作类似地,首先根据所述存储区块文件的大小和其标志位集合中标志位的数量确定所述存储区块文件的子存储区块的大小。
再根据所述操作所对应的所述存储区块文件的子存储区块的大小和所述读取操作所对应的所述存储区块文件的偏移量,确定所述写入数据操作所对应的第一个子存储区块的位置,进而确定写入数据操作所对应所述存储区块文件的第一个标志位。
最后根据待写入数据的长度和所述存储区块文件的子存储区块的大小,确定标志位的数量。
例如,对于前一步骤中获取到的分布式文件系统读取数据的请求,其操作参数包括欲读取数据保存在分布式文件系统的存储介质上的相应存储区块文件的标识为:“cs2chunk100”;所述读取操作所对应的所述存储区块文件的偏移量为62M;欲读取数据的长度2100KB的。所述存储区块文件的大小为64MB,其标志位集合包含64个标志位。
根据所述存储区块文件“cs2chunk100”的大小64M,所述存储区块文件“cs2chunk100”的标志位集合包含64个标志位,可以得到所述存储区块文件“cs2chunk100”包含64个子存储区块,没个子存储区块的大小为1MB。
根据所述读取操作所对应的所述存储区块文件“cs2chunk100”偏移量62M和所述存储区块文件“cs2chunk100”的子存储区块的大小1MB,得到所述读取操作所对应的第一个子存储区块为所述存储区块文件“cs2chunk100”的第62个子存储区块,与其对应的标志位为所述存储区块文件“cs2chunk100”的标志位集合中的第62个标志位。
根据欲读取数据的长度2100KB和所述存储区块文件“cs2chunk100”的子存储区块的大小1MB,确定所述读取操作所对应的所述存储区块文件“cs2chunk100”的标志位集合中的3个标志位。
综上,最终确定所述存储区块文件“cs2chunk100”的标志位集合的相应标志位为所述存储区块文件“cs2chunk100”的标志位集合中的第62到第64连续3个标志位。
再如,对于前一步骤中获取到的将待写入数据写入存储介质上指定存储区块文件的指定位置的请求,所述请求所包含的操作参数包括在分布式文件系统的存储介质上的相应存储区块文件的标识“cs2chunk100”,所述待写入操作所对应的所述存储区块文件的偏移量62M以及所述代写入数据的长度2100KB。
首先检查所述请求指定的存储区块文件是否存在,对于所述存储区块文件的标识为“cs2chunk100”的情况,即检查标识为“cs2chunk100”的存储区块文件是否存在,若标识为“cs2chunk100”的存储区块文件不存在,则需要建立所述存储区块文件,即根据分布式文件系统存储区块文件的分配规则,在相应的存储区块文件服务器上的存储介质上划分出预先设定的大小的一块区域用于数据存储,命名其标识为“cs2chunk100”。
建立并正确命名所述存储区块文件有效后,根据实际需要,将所述存储区块文件划分为大小相等的多于一个的子存储区块,例如对于大小为64MB的存储区块文件,可以将其划分为64个大小为1MB的子存储区块或者128个大小为512KB的字存储区块等等,具体子存储区块的大小可以根据实际的情况设置,如根据存储利用率与读写操作的次数平衡等进行相应的设置。
为所述的存储区块文件建立一个标志位集合,该集合内包含所述存储区块文件“cs2chunk100”内所有子存储区块的标志位,所述标志位与所述存储区块文件“cs2chunk100”内所有子存储区块一一对应,标识其所对应的子存储区块是否已经分配或未分配。
对于新建立的大小为64MB的存储区块文件“cs2chunk100”,其子存储区块为1MB的情况下,所述存储区块文件“cs2chunk100”包含64个子存储区块,建立所述存储区块文件“cs2chunk100”的标志位集合,该集合包含64个标志位,分别与所述存储区块文件“cs2chunk100”的各个子存储区块一一对应。
将所述标志位集合的所有64个标志位的值全置为表示未分配的值,例如对于采用位图形式的标志位集合,0表示其所对应的子存储区块尚未分配用于数据存储,1表示已经分配用于数据存储的话,可以设置所述位图的值为0,用16进制可以表示为:H’0000,0000,0000,0000。至此所述存储区块文件“cs2chunk100”的标志位集合建立并初始化完成。
结合所述存储区块文件“cs2chunk100”的大小和其标志位集合,根据所述请求中的包含的偏移量参数和待写入数据长度参数确定所述写入数据操作所对应的所述存储区块文件“cs2chunk100”的标志位集合的相应标志位。
仍以新建立的存储区块文件“cs2chunk100”为例,根据所述存储区块文件“cs2chunk100”的大小64M和所述存储区块文件“cs2chunk100”的标志位集合包含的64个标志位,可以得到所述存储区块文件“cs2chunk100”包含64个子存储区块,每一子存储区块的大小为1MB。
根据所述写入数据操作所对应的所述存储区块文件“cs2chunk100”偏移量62M和所述存储区块文件“cs2chunk100”的子存储区块的大小1MB,得到所述写入数据操作所对应的第一个子存储区块为所述存储区块文件“cs2chunk100”的第62个存储区块,与其对应的标志位为所述存储区块文件“cs2chunk100”的标志位集合中的第62个标志位。
根据待写入数据的长度2100KB和所述存储区块文件“cs2chunk100”的子存储区块的大小1MB,确定所述写操作所对应的所述存储区块文件“cs2chunk100”的标志位集合中的3个标志位。
综上,最终确定所述写入数据操作所对应的所述存储区块文件“cs2chunk100”的标志位集合的相应标志位为所述存储区块文件“cs2chunk100”的标志位集合中的第62到第64连续3个标志位。
步骤S103,根据所述相应标志位的值,执行相应的操作。
获取到相应的标志位后,根据获取到的标志位的值所表示的含义的不同,针对不同的操作,执行不同的操作内容。
仍旧以前面步骤中获得的读取存储介质上指定的存储区块文件内指定的位置的数据的请求和将待写入数据写入存储介质上指定存储区块文件的指定位置的请求为例。
对于读取存储介质上指定的存储区块文件内指定的位置的数据的请求,当前一步骤中所确定的标志位的值全为表示未分配的值时,说明前一步骤中所确定的标志位所对应的所述存储区块文件的相应子存储区块都还没有被分配用于数据存储,对于没有被分配用于数据存储的子存储区块,其值为0。直接将数据0返回给所述读取数据操作请求的请求者,而不必读取所述存储区块文件的相应的子存储区块中的具体数据。
当在前一步骤中所确定的标志位的值不全为表示未分配的值时,说明前一步骤中所确定的标志位所对应的所述存储区块文件的相应子存储区块中包含已经被分配用于数据存储的子存储区块。此时,需要读取其中已经被分配用于存储数据的子存储区块的数据,对于尚未被分配用于存储数据的子存储区块,无需读取其内容即可知道其数据为0,将所述读取到的数据与尚未被分配用于存储数据的子存储区块的数据0返回给所述请求的请求者。
例如前面步骤中确定了所述读取数据操作所对应的所述存储区块文件“cs2chunk100”的标志位集合的相应标志位为所述存储区块文件“cs2chunk100”的标志位集合中的第62到第64连续3个标志位。
当所述标志位的值全为表示未分配的值时,说明这3个标志位所对应的所述存储区块文件“cs2chunk100”的第62到64个子存储区块还没有被分配用于数据存储,其值为0,因此,直接将数据0返回给所述读取数据操作请求的请求者,而不必读取所述存储区块文件“cs2chunk100”的相应的子存储区块中的具体数据。
当所述标志位的值不全为表示未分配的值时,说明这3个标志位所对应的所述存储区块文件“cs2chunk100”的第62到64个子存储区块中含有已经被分配用于数据存储的子存储区块。
例如,所述存储区块文件“cs2chunk100”的标志位集合的第62和63个标志位的值为表示已经分配用于数据存储的值,第64个标志位的值为表示尚未分配用于数据存储的值,可以知道相应的所述存储区块文件“cs2chunk100”的第62和63个子存储区块已经被分配用于数据存储,其中的数据需要被读取;第64个子存储区块尚未被分配用于数据存储,其中的数据为0,无需调用系统程序进程进行读取操作。
因此,调用系统的相应程序进程,读取所述存储区块文件“cs2chunk100”的第62和63个子存储区块存储的数据,将所述读取到的数据与存储区块文件“cs2chunk100”的第64个子存储区块所存储的0一起返回给所述读取数据操作请求的请求者。
对于标志位的值表示为未分配的相应的子存储区块,不调用系统的程序进程进行读操作能够减少整体读取数据操作的时间,提高读取数据的效率。
对于将待写入数据写入存储介质上指定存储区块文件的指定位置的请求,无论对于新建立的存储区块文件还是已经存在的存储区块文件,前面步骤中已经确定了所述写入数据操作所对应的所述存储区块文件的标志位集合的相应标志位。
当前一步骤中所确定的标志位的值全为表示已分配的值时,说明前一步骤中所确定的标志位所对应的所述存储区块文件的相应子存储区块都已经被分配用于数据存储,可以直接将待写入数据写入所述存储区块文件的相应子存储区块。
当前一步骤中所确定的标志位的值不全为表示已分配的值时,说明前一步骤中所确定的标志位所对应的所述存储区块文件的相应子存储区块中含有尚未被分配用于数据存储的子存储区块,为了避免系统的其他进程占用所述没有被分配用于数据存储的子存储区块,此时将所述不表示为已分配(即表示为未分配)的所述存储区块文件的标志位集合中的相应标志位置为表示已分配的值。再将待写入数据写入前一步骤所确定的写入数据操作所对应的所述存储区块文件的标志位集合中相应的标志位所对应的相应子存储区块。
例如前面步骤中确定了写入数据操作所对应的所述存储区块文件“cs2chunk100”的标志位集合中相应的标志位为所述存储区块文件“cs2chunk100”的标志位集合中的第62到第64连续3个标志位。
与读取数据的操作请求类似地,根据所述3个标志位的值,进行相应的操作:
当所述3个标志位的值全为表示已经分配的值时,说明所述存储区块文件“cs2chunk100”相应的第62到64个子存储区块都已经被分配用于数据存储,对于已经被分配用于数据存储的子存储区块,可以写入数据,此时调用系统相应的程序进程,将待写入数据直接写入所述存储区块文件“cs2chunk100”的第62到64,连续3个子存储区块。
当所述3个标志位的值不全为表示已经分配的值时,表明所述3个标志位所对应的所述存储区块文件的3个子存储区块中存在还没有被分配用于数据存储的子存储区块。
例如,所述存储区块文件“cs2chunk100”的标志位集合的第62和63个标志位的值为表示已经分配用于数据存储的值,第64个标志位的值为表示尚未分配用于数据存储的值,可以知道相应的所述存储区块文件“cs2chunk100”的第62和63个子存储区块已经被分配用于数据存储,所述存储区块文件“cs2chunk100”的第64个子存储区块尚未被分配用于数据存储。
此时将所述存储区块文件“cs2chunk100”的标志位集合中的第64个标志位置为表示已分配的值。对于采用位图形式的标志位集合,将其第64位置为表示已分配的值。
然后调用系统相应的程序进程,将带写入数据,写入前一步骤中确定的所述存储区块文件“cs2chunk100”的标志位集合的第62到64个标志位所对应的所述存储区块文件“cs2chunk100”的第62到64个子存储区块。
向存储区块文件的字存储区块写入数据前,先将其所对应的标志位置为表示已分配的值,能够有效避免不同业务应用对相同存储区域的操作冲突。
以上为本申请的一种在存储介质上操作数据的方法的实施例,该方法根据操作所对应的存储区块文件的标志位集合的相应标志位的值的不同,执行相对应地操作。使得现有对存储区块文件的操作更为灵活,能够有效地减少存储介质上磁盘碎片的产生,提高存储空间利用率。减少存储介质上磁盘碎片的数量,能够显著提高输入输出操作的效率。从而起到提升系统整体性能的作用。
相应的,本申请的第二实施例提供一种在存储介质上操作数据装置,其结构框图如图2所示,该装置包括以下单元:获取单元U201,确定单元U202和执行单元U203。
所述获取单元U201,用于获取在存储介质上指定的存储区块文件操作指定的数据的请求。
该单元既可以具体用于获取读取存储介质上指定的存储区块文件内指定的位置的数据的请求,也可以具体用于获取将待写入数据写入存储介质上指定存储区块文件的指定位置的请求,所述位置包括所述请求所包含的操作参数所指定的位置。
所述确定单元U202,用于根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位;
对于获取单元U201具体用于获取将待写入数据写入存储介质上指定存储区块文件的指定位置的请求的情况,所述确定单元U202可以包括存储区块文件建立子单元,划分子单元,标志位集合建立子单元,标志位集合赋值子单元和标志位确定子单元。
所述存储区块文件建立子单元,用于若所述指定的存储区块文件不存在,则建立所述存储区块文件。所述划分子单元,用于将所述存储区块文件划分为多于一个的子存储区块。所述标志位集合建立子单元,用于建立所述存储区块文件的标志位集合,使得所述存储区块文件的各个子存储区块与所述标志位集合中的各个标志位一一对应标志位集合标志位集合。所述标志位集合赋值子单元,用于将所述标志位集合的所有标志位的值全置为表示未分配的值。所述标志位确定子单元,用于根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位。
所述执行单元U203,用于根据所述相应标志位的值,执行相应的操作。
对于获取单元U201具体用于获取读取存储介质上指定的存储区块文件内指定的位置的数据的请求的情况,所述执行单元U203,可以具体用于若所述标志位的值全为表示未分配的值,则将数据0返回给所述请求的请求者。
所述执行单元U203也可以包括读取子单元和返回子单元,所述读取子单元用于若所述标志位的值不全为表示未分配的值,则读取所述不表示未分配的标志位所对应的所述存储介质上所述存储区块文件的子存储区块的数据。所述返回子单元,用于将读取到的所述数据返回给所述请求者。
对于获取单元U201具体用于获取将待写入数据写入存储介质上指定存储区块文件的指定位置的请求的情况,所述执行单元U203具体用于若所述相应标志位的值全为表示已分配的值,则将所述待写入数据写入所述存储介质上所述存储区块文件的所述标志位所对应的子存储区块。
所述执行单元U203也可以包括标志位设置子单元和写入子单元。
所述标志位设置子单元,用于若所述相应标志位的值不全为表示已分配的值,则将所述不表示已分配的标志位的值全置为表示已分配的值;
所述写入子单元,用于将所述待写入数据写入所述存储介质上所述存储区块文件的所述标志位所对应的子存储区块。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备操作的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
Claims (16)
1.一种在存储介质上操作数据的方法,特征在于,包括以下步骤:
获取在存储介质上指定的存储区块文件操作指定的数据的请求;
根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位;
根据所述相应标志位的值,执行相应的操作;
其中,所述在存储介质上指定的存储区块文件操作指定的数据的请求包括:
将待写入数据写入存储介质上指定存储区块文件的指定位置的请求,所述位置包括所述请求所包含的操作参数所指定的位置;
所述根据所述相应标志位的值,执行相应的操作包括:
若所述相应标志位的值全为表示已分配的值,则将所述待写入数据写入所述存储介质上所述存储区块文件的所述标志位所对应的子存储区块。
2.根据权利要求1所述的在存储介质上操作数据的方法,其特征在于,所述存储区块文件的标志位集合包括:所述存储区块文件的各个子存储区块的属性的标志位的集合。
3.根据权利要求2所述的在存储介质上操作数据的方法,其特征在于,所述子存储区块的属性包括未分配和已分配。
4.根据权利要求1所述的在存储介质上操作数据的方法,其特征在于,所述标志位集合包括位图。
5.根据权利要求1所述的在存储介质上操作数据的方法,其特征在于,所述操作参数包括:所述指定的存储区块文件的标识,所述操作所对应的所述存储区块文件中的偏移量和所述数据的长度。
6.根据权利要求1所述的在存储介质上操作数据的方法,其特征在于,所述在存储介质上指定的存储区块文件操作指定的数据的请求还包括:
读取存储介质上指定的存储区块文件内指定的位置的数据的请求,所述位置包括所述请求所包含的操作参数所指定的位置。
7.根据权利要求6所述的在存储介质上操作数据的方法,其特征在于,所述根据所述相应标志位的值,执行相应的操作包括:
若所述标志位的值全为表示未分配的值,则将数据0返回给所述请求的请求者。
8.根据权利要求6所述的在存储介质上操作数据的方法,其特征在于,所述根据所述相应标志位的值,执行相应的操作包括:
若所述标志位的值不全为表示未分配的值,则读取其中不表示未分配的标志位所对应的所述存储介质上所述存储区块文件的子存储区块的数据;
将读取到的所述数据以及所述表示未分配的标志位所对应的子存储区块存储的数据0返回给所述请求的请求者。
9.根据权利要求1所述的在存储介质上操作数据的方法,其特征在于,所述根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作操作所对应的所述存储区块文件的标志位集合的相应标志位包括:
若所述指定的存储区块文件不存在,则建立所述存储区块文件;
将所述存储区块文件划分为多于一个的子存储区块;
建立所述存储区块文件的标志位集合,使得所述存储区块文件的各个子存储区块与所述标志位集合中的各个标志位一一对应;
将所述标志位集合的所有标志位的值全置为表示未分配的值;
根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位。
10.根据权利要求1所述的在存储介质上操作数据的方法,其特征在于,所述根据所述相应标志位的值,执行相应的操作还包括:
若所述相应标志位的值不全为表示已分配的值,则将其中不表示已分配的标志位的值全置为表示已分配的值;
将所述待写入数据写入所述存储介质上所述存储区块文件的所述标志位所对应的子存储区块。
11.一种在存储介质上操作数据的装置,特征在于,包括:
获取单元,用于获取在存储介质上指定的存储区块文件操作指定的数据的请求;
确定单元,用于根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位;
执行单元,用于根据所述相应标志位的值,执行相应的操作;
其中,所述获取单元具体用于:
获取将待写入数据写入存储介质上指定存储区块文件的指定位置的请求,所述位置包括所述请求所包含的操作参数所指定的位置;
所述执行单元具体用于:
若所述相应标志位的值全为表示已分配的值,则将所述待写入数据写入所述存储介质上所述存储区块文件的所述标志位所对应的子存储区块。
12.根据权利要求11所述的在存储介质上操作数据的装置,其特征在于,所述获取单元还具体用于:
获取读取存储介质上指定的存储区块文件内指定的位置的数据的请求,所述位置包括所述请求所包含的操作参数所指定的位置。
13.根据权利要求12所述的在存储介质上操作数据的装置,其特征在于,所述执行单元具体用于:
若所述标志位的值全为表示未分配的值,则将数据0返回给所述请求的请求者。
14.根据权利要求12所述的在存储介质上操作数据的装置,其特征在于,所述执行单元包括:
读取子单元,用于若所述标志位的值不全为表示未分配的值,则读取其中不表示未分配的标志位所对应的所述存储介质上所述存储区块文件的子存储区块的数据;
返回子单元,用于将读取到的所述数据返回给所述请求者。
15.根据权利要求11所述的在存储介质上操作数据的装置,其特征在于,所述确定单元包括:
存储区块文件建立子单元,用于若所述指定的存储区块文件不存在,则建立所述存储区块文件;
划分子单元,用于将所述存储区块文件划分为多于一个的子存储区块;
标志位集合建立子单元,用于建立所述存储区块文件的标志位集合,使得所述存储区块文件的各个子存储区块与所述标志位集合中的各个标志位一一对应标志位集合标志位集合;
标志位集合赋值子单元,用于将所述标志位集合的所有标志位的值全置为表示未分配的值;
标志位确定子单元,用于根据所述请求中包含的操作参数以及所述存储区块文件的大小,确定所述操作所对应的所述存储区块文件的标志位集合的相应标志位。
16.根据权利要求11所述的在存储介质上操作数据的装置,其特征在于,所述执行单元包括:
标志位设置子单元,用于若所述相应标志位的值不全为表示已分配的值,则将其中不表示已分配的标志位的值全置为表示已分配的值;
写入子单元,用于将所述待写入数据写入所述存储介质上所述存储区块文件的所述标志位所对应的子存储区块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610594741.6A CN107656697B (zh) | 2016-07-26 | 2016-07-26 | 一种在存储介质上操作数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610594741.6A CN107656697B (zh) | 2016-07-26 | 2016-07-26 | 一种在存储介质上操作数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107656697A CN107656697A (zh) | 2018-02-02 |
CN107656697B true CN107656697B (zh) | 2021-03-02 |
Family
ID=61127330
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610594741.6A Active CN107656697B (zh) | 2016-07-26 | 2016-07-26 | 一种在存储介质上操作数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107656697B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111880734A (zh) * | 2020-07-24 | 2020-11-03 | 北京浪潮数据技术有限公司 | 一种数据处理方法、系统、电子设备及存储介质 |
CN113157600A (zh) * | 2021-03-08 | 2021-07-23 | 网宿科技股份有限公司 | 一种叠瓦式硬盘的空间分配方法、文件存储系统及服务器 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004013276A (ja) * | 2002-06-04 | 2004-01-15 | Victor Co Of Japan Ltd | ファイルシステム及び記録媒体 |
CN102244665A (zh) * | 2010-05-13 | 2011-11-16 | 中国移动通信集团公司 | 位图管理和节点集合查询的方法以及节点和索引服务器 |
CN102713826A (zh) * | 2009-12-22 | 2012-10-03 | 苹果公司 | 经由位图的树表示分配文件存储的方法和设备 |
CN104408091A (zh) * | 2014-11-11 | 2015-03-11 | 清华大学 | 分布式文件系统的数据存储方法及系统 |
CN105159601A (zh) * | 2015-08-07 | 2015-12-16 | 杭州海兴电力科技股份有限公司 | 一种提高Flash擦写寿命的方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102541461B (zh) * | 2010-12-31 | 2014-11-19 | 阿里巴巴集团控股有限公司 | 远程数据存储的数据读写方法、装置及其系统 |
CN103856567B (zh) * | 2014-03-26 | 2017-05-17 | 西安电子科技大学 | 基于Hadoop分布式文件系统的小文件存储方法 |
CN103929500A (zh) * | 2014-05-06 | 2014-07-16 | 刘跃 | 一种分布式存储系统的数据分片方法 |
-
2016
- 2016-07-26 CN CN201610594741.6A patent/CN107656697B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004013276A (ja) * | 2002-06-04 | 2004-01-15 | Victor Co Of Japan Ltd | ファイルシステム及び記録媒体 |
CN102713826A (zh) * | 2009-12-22 | 2012-10-03 | 苹果公司 | 经由位图的树表示分配文件存储的方法和设备 |
CN102244665A (zh) * | 2010-05-13 | 2011-11-16 | 中国移动通信集团公司 | 位图管理和节点集合查询的方法以及节点和索引服务器 |
CN104408091A (zh) * | 2014-11-11 | 2015-03-11 | 清华大学 | 分布式文件系统的数据存储方法及系统 |
CN105159601A (zh) * | 2015-08-07 | 2015-12-16 | 杭州海兴电力科技股份有限公司 | 一种提高Flash擦写寿命的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107656697A (zh) | 2018-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111344683B (zh) | 非易失性存储器装置中的命名空间分配 | |
US10067684B2 (en) | File access method and apparatus, and storage device | |
US10642488B2 (en) | Namespace size adjustment in non-volatile memory devices | |
US10133666B2 (en) | File storage method and apparatus | |
JP2019020788A (ja) | メモリシステムおよび制御方法 | |
CN111679795B (zh) | 无锁并发io处理方法及其装置 | |
US10976946B2 (en) | Method and computer system for managing blocks | |
US9355121B1 (en) | Segregating data and metadata in a file system | |
CN114185818B (zh) | 基于扩展页表的gpu访存自适应优化方法及装置 | |
CN106201652B (zh) | 一种数据处理方法及虚拟机 | |
CN104503703A (zh) | 缓存的处理方法和装置 | |
CN107656697B (zh) | 一种在存储介质上操作数据的方法和装置 | |
CN115599544A (zh) | 内存管理方法、装置、计算机设备及存储介质 | |
CN110674051A (zh) | 一种数据存储方法及装置 | |
CN109766179B (zh) | 一种显存分配方法以及装置 | |
CN116340198B (zh) | 固态硬盘的数据写入方法、其装置及固态硬盘 | |
CN116795735A (zh) | 固态硬盘空间分配方法、装置、介质及系统 | |
CN109727629B (zh) | 使用利用多间隙进度字段的磨损均衡的方法和系统 | |
US20160335198A1 (en) | Methods and system for maintaining an indirection system for a mass storage device | |
US11847052B2 (en) | Memory allocation apparatus and method | |
US10140038B2 (en) | Utilization of a thin provision grid storage array | |
CN112115065A (zh) | 存储设备的统一地址空间 | |
CN111444113A (zh) | 非易失性存储介质共享方法、装置、电子设备及存储设备 | |
CN115562595B (zh) | 一种卷创建方法及装置、卷读写方法及装置、电子设备 | |
CN115454357B (zh) | 一种qcow2文件存储方法以及格式转换方法 |
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 |