CN106294193B - 存储设备及基于该存储设备的分块存储方法 - Google Patents
存储设备及基于该存储设备的分块存储方法 Download PDFInfo
- Publication number
- CN106294193B CN106294193B CN201510299026.5A CN201510299026A CN106294193B CN 106294193 B CN106294193 B CN 106294193B CN 201510299026 A CN201510299026 A CN 201510299026A CN 106294193 B CN106294193 B CN 106294193B
- Authority
- CN
- China
- Prior art keywords
- data
- block
- data block
- unit
- storage
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
-
- 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/061—Improving I/O performance
-
- 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
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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/064—Management of blocks
-
- 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/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/805—Real-time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/82—Solving problems relating to consistency
Abstract
本发明公开了一种存储设备及基于该存储设备的分块存储方法,存储设备的磁盘空间包括具有多个首尾相邻的数据块单元的数据区,数据块单元包括彼此相邻的元数据块和数据块;容量为第一容量的数据块设置为存储目标数据,容量为第二容量的元数据块设置为存储目标数据的数据信息。应用本发明,采用元数据分散存储,每一个元数据块和数据块作为整体来存放,减少写数据后更新元数据地址偏移,从而提高了元数据的更新效率,从整体上提高了存储设备的存储性能。另外,采用元数据分散存储,大大降低由于多个元数据块连续损坏而导致的数据不可用的概率,克服了现有技术中由于多个元数据的连续损坏导致的完好的数据块无法进行正常的数据存储的缺陷。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种存储设备,还涉及基于该存储设备的分块存储方法。
背景技术
针对监控存储的数据特点,使用底层的数据块作为基本的存储单元,实现对监控存储的结构化管理成为业界发展的方向。分块存储将存储设备空间分成块,其中,一些块用来存放数据信息,称为元数据块;另一些块用来存放数据本身,称为数据块。
目前一般情况是在存储设备上划分一片区域集中存放所有元数据,另一片区域集中存放所有数据。这种方式方便管理。然而,这种方式的缺点包括:元数据块和数据块的偏移较大,在对数据块写完数据后,更新元数据会增加寻道时间;另外,元数据的集中存储容易导致元数据的连续损坏,这样,完好的数据块也会由于元数据的损坏而无法进行正常的数据存储。为了增强可靠性,不得不增加额外资源进行保护。
发明内容
本发明所要解决的技术问题是:采用现有技术中存储设备的分块存储方式,元数据块和数据块的偏移较大,在对数据块写完数据后,更新元数据会增加寻道时间;另外,元数据的集中存储容易导致元数据的连续损坏,这样,完好的数据块也会由于元数据的损坏而无法进行正常的数据存储。
为了解决上述技术问题,本发明提供了一种存储设备及基于该存储设备的分块存储方法,提高了存储性能的同时,大大降低了由于多个元数据区连续损坏而导致的数据不可用的概率。
根据本发明的一个方面,提供了一种存储设备,所述存储设备的磁盘空间包括具有多个首尾相邻的数据块单元的数据区,所述数据块单元包括彼此相邻的元数据块和数据块;其中,容量为预设的第一容量的所述数据块设置为存储目标数据,容量为预设的第二容量的所述元数据块设置为存储所述目标数据的数据信息。
优选的是,所述存储设备的磁盘空间还包括具有控制块头部和块位图的控制块;其中,所述控制块头部设置为存储所述数据块单元的个数、所述第一容量和所述第二容量;所述块位图设置为存储各个数据块单元的使用状态的状态信息。
优选的是,所述控制块的首地址为所述磁盘空间的首地址,且所述控制块与所述数据区中的第一个数据块单元相邻。
优选的是,所述存储设备的磁盘空间还包括作为所述控制块的冗余备份的冗余控制块。
优选的是,所述冗余控制块的尾地址为所述磁盘空间的尾地址。
根据本发明的另一个方面,提供了一种基于上述存储设备的分块存储方法,该方法包括:
格式化存储设备,并使所述存储设备的磁盘空间包括具有多个首尾相邻的数据块单元的数据区,所述数据块单元包括彼此相邻的元数据块和数据块;其中,容量为预设的第一容量的所述数据块设置为存储目标数据,容量为预设的第二容量的所述元数据块设置为存储所述目标数据的数据信息;
在所述数据区中确定目标数据块单元;
将待存储数据存储到所述目标数据块单元中。
优选的是,所述格式化存储设备,还使得所述存储设备的磁盘空间还包括具有控制块头部和块位图的控制块、以及作为所述控制块的冗余备份的冗余控制块;其中,所述控制块头部设置为存储所述数据块单元的个数、所述第一容量和所述第二容量;所述块位图设置为存储各个数据块单元的使用状态的状态信息。
优选的是,所述在数据区中确定目标数据块单元的方法包括:
判断内存中的未满块链表是否非空;
判断出所述未满块链表非空时,根据所述未满块链表确定最小数据块单元,并将所述最小数据块单元确定为所述目标数据块单元。
优选的是,所述在数据区中确定目标数据块单元的方法还包括:
判断出所述未满块链表为空时,根据所述块位图判断所述数据区中是否存在空闲数据块单元;
判断出所述数据区中存在空闲数据块单元时,将所述数据区中地址最靠前的空闲数据块单元确定为最小空闲数据块单元,并将所述最小空闲数据块单元确定为所述目标数据块单元;
判断出所述数据区中不存在空闲数据块单元时,确定不存在目标数据块单元并退出,或者对回收指令涉及的指定数据块单元进行回收,并将经回收的指定数据块单元确定为所述目标数据块单元。
优选的是,所述对回收指令涉及的指定数据块单元进行回收包括:
将所述指定数据块单元的元数据块清零,更新块位图中存储的对应所述指定数据块单元的状态信息;
判断未满块链表中是否存储有所述指定数据块单元的数据块存储的数据信息;
判断出未满块链表中存储有所述指定数据块单元的数据块存储的数据信息时,将所述数据信息从未满块链表中删除。
优选的是,所述将待存储数据存储到目标数据块单元中包括:
根据所述待存储数据的大小和所述目标数据块单元的数据块存储的目标数据的大小,判断所述目标数据块单元的数据块的剩余容量是否充足;
如果是,则将所述待存储数据划分为多个数据段,依次对每个数据段,将所述数据段写入所述目标数据块单元的数据块中,并将所述数据段的数据信息写入所述目标数据块单元的元数据块中。
与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:
应用所述的存储设备,采用元数据分散存储,每一个元数据块和数据块作为整体来存放,减少写数据后更新元数据地址偏移,从而提高了元数据的更新效率,从整体上提高了存储设备的存储性能。另外,采用元数据分散存储,大大降低由于多个元数据块连续损坏而导致的数据不可用的概率,克服了现有技术中由于元数据的连续损坏导致的完好的数据块无法进行正常的数据存储的缺陷。
本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
图1示出了存储设备的磁盘空间划分示意图;
图2示出了基于上述存储设备的分块存储方法的流程图;
图3示出了在数据区中确定目标数据块单元的方法的流程图;
图4示出了对回收指令涉及的指定数据块单元进行回收的方法的流程图;以及
图5示出了将待存储数据存储到目标数据块单元中的方法的流程图。
具体实施方式
以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
本发明所要解决的技术问题是:采用现有技术中存储设备的分块存储方式,元数据块和数据块的偏移较大,在对数据块写完数据后,更新元数据会增加寻道时间;另外,元数据的集中存储容易导致元数据的连续损坏,这样,完好的数据块也会由于元数据的损坏而无法进行正常的数据存储。为解决上述技术问题,本发明实施例提供了一种存储设备。
在详细阐述以下各个实施例之前,先对术语“块数据存储”、“块位图”、“元数据”和“未满块链表”进行解释。
块数据存储:针对监控存储的数据特点,采用底层的数据块作为基本的存储单元,采用一种专用于监控存储的专用数据结构,通过数据块+专用数据结构两部分结合,来实现对监控存储的结构化管理。
块位图:管理磁盘上的存储块已保证给定的磁盘块在一个时刻仅用于一种目的。使用块位图来管理空闲存储块,易于存储,并可以节省空间。为了建立一个空闲块位图,需要在磁盘上保留足够大的连续空间,为每个存储块设置一个位。
元数据:描述数据的结构和意义,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
未满块链表:存储数据区中所有未满数据块单元的元数据块存储的数据信息。在写入数据时,优先考虑将数据写入未满块数据块单元,从而能够避免未满数据块单元过多造成的存储空间的浪费。
图1示出了存储设备的磁盘空间划分示意图。如图1所示,从存储设备的整个磁盘空间中划分出数据区,用于集中存储成对的元数据块21和数据块22,元数据块21和数据块22相邻存放,作为一个整体单元,在本文中将这个整体单元称为数据块单元2。
具体地,数据区包括多个首尾相邻的数据块单元2,数据块单元2包括彼此相邻的元数据块21和数据块22,元数据块21的首地址通常位于数据块22的首地址之前。数据块22设置为存储目标数据,在视频监控领域,本实施例涉及的目标数据指的是视频数据。元数据块21设置为存储其所属数据块单元2的数据块22存储的目标数据的数据信息(这里数据信息也称为元数据)。在本实施例中,数据块22设置为存储顺次排列的多个数据段,这里所有数据段构成了上述目标数据,其中,每个数据段分别为一段视频数据。相应地,在元数据块21中,按照数据段在数据块22中的排列顺序,依次存储有对应各个数据段的段信息,所有段信息的总和构成了上述数据信息。一般地,对应一个数据段的段信息包括但不限于:块号(即所属数据块单元2的编号)、前端设备号(即该数据段对应的视频输出设备的编号)、段号(即该数据段排在元数据块21存储的所有数据段中的次序)、块内偏移、段长度、i帧数量和i帧信息。
为了方便推算各个元数据块21和各个数据块22的首地址,将所有数据块22的总容量设置为预设的第一容量,同时将所有元数据块21的总容量设置为预设的第二容量。
应用本实施例所述的存储设备,采用元数据分散存储,每一个元数据块21和数据块22作为整体来存放,减少写数据后更新元数据地址偏移,从而提高了元数据的更新效率,从整体上提高了存储设备的存储性能。另外,采用元数据分散存储,大大降低由于多个元数据块21连续损坏而导致的数据不可用的概率,克服了现有技术中由于元数据的连续损坏导致的完好的数据块22无法进行正常的数据存储的缺陷。
在一优选的实施例中,存储设备的磁盘空间还包括控制块1,存储存储设备的整个磁盘的相关信息。为了方便推算数据区中各个元数据块21和数据块22的首地址,将控制块1的总容量固定设置为1M,同时特别地,将控制块1的首地址设置为整个存储设备的磁盘空间的首地址,另外,控制块1与数据区中的第一个数据块单元2相邻。
具体地,控制块1包括控制块头部和块位图,控制块头部的首地址位于块位图的首地址之前。控制块头部设置为存储数据区中数据块单元2的个数、第一容量、第二容量、标签、crc校验(Cyclic Redundancy Check,循环冗余校验码)值等信息。控制块头部占用的空间很小,控制块1的绝大部分空间用于存放块位图。块位图设置为存储数据区中各个数据块单元2的使用状态的状态信息,块位图的每一位对应数据区的一个数据块单元2,用于表示该数据块单元2是否已被使用。通常采用二进制数表示数据块单元2的使用状态,如果块位图记载的数据块单元2对应的状态信息为0,则表示该数据块单元2未被使用,即该数据块单元2的元数据块21和数据块22中均存储有数据;反过来,如果块位图记载的数据块单元2对应的状态信息为1,则表示该数据块单元2已被使用,即该数据块单元2的元数据块21中未存储任何数据。
在本实施例中,采用块位图进行数据块22的管理,克服了由于元数据的分散存储带来的搜索耗时、不方便管理的缺陷。另外,元数据的完整性不完全依赖于位于存储设备的上一层的管理节点,在管理节点管理的元数据(存储在管理节点中的元数据)失效(例如丢失)时,能根据块位图从存储设备恢复。
进一步地,存储设备的磁盘空间还包括作为控制块1的冗余备份的冗余控制块3。换言之,冗余控制块3为上述控制块1的拷贝,冗余控制块3的总容量与控制块1的总容量相同,均优选为1M。类似地,冗余控制块3也包括控制块头部和块位图。控制块头部设置为存储数据区中数据块单元2的个数、第一容量、第二容量、标签、crc校验(Cyclic RedundancyCheck,循环冗余校验码)值等信息。块位图设置为存储数据区中各个数据块单元2的使用状态的状态信息,块位图的每一位对应数据区的一个数据块单元2,用于表示该数据块单元2是否已被使用。
为了避免由于控制块1失效导致的无法确定冗余控制块3的起始地址,更无法读取磁盘关键信息,冗余控制块3无法发挥其冗余效果的技术缺陷,在本明一优选的实施例中,将冗余控制块3的尾地址设置为磁盘空间的尾地址,冗余控制块3的首地址与数据区的尾地址之间为预留空间。
下面结合图1,具体阐述存储设备的磁盘空间的各个数据存储区的首地址的确定过程:控制块1的总容量、元数据块21的总容量、数据块22的总容量设定后,如果各区域地址顺次首尾相邻,则所有区域的起止地址是固定的。假设存储设备的磁盘容量设定为常数DEV_CAPACITY,控制块1的总容量设定为1M,冗余控制块3的总容量也设定为1M,第二容量(即元数据块21的总容量)设定为常数INFO_BLK_SIZE,第一容量(即数据块22的总容量)设定为DATA_BLK_SIZE,则数据区中数据块单元2的个数可通过下式确定:(DEV_CAPACITY-1M*2)/(INFO_BLK_SIZE+DATA_BLK_SIZE)。控制块1的起始地址为0。第n个元数据块21的起始地址为1M+(n-1)*(INFO_BLK_SIZE+DATA_BLK_SIZE)。特别地,冗余控制块3存放在磁盘空间的最尾端,即冗余控制块3的尾地址设定为存储设备的磁盘空间的尾地址,冗余控制块3的起始地址为DEV_CAPACITY-1M。如果数据区的总容量不是元数据块21的总容量与数据块22的总容量的总和的整数倍,则设置在数据区最末尾的数据块22与冗余控制块3之间预留一段空间。这里,需要说明的是,将冗余控制块3存放在磁盘空间的最尾端相比于紧邻数据区的尾端存放的优势在于:如果冗余控制块3与数据区中最后一个数据块22相邻,则该冗余控制块3的起始地址需要根据设定的第一容量和第二容量计算得到,这些关键信息记录在控制块1中。然而,一旦控制块1失效,则会导致无法确定冗余控制块3起始地址,更无法读取磁盘空间的关键信息,从而冗余控制块3没有发挥其冗余效果。在上述优选地实施例中,将冗余控制块3固定在存放在磁盘空间的最尾端,其起始地址是恒定的,从而当控制块1失效时,系统仍可依照冗余控制块3中备份的关键信息维持存储设备的正常工作,充分发挥了冗余控制块3的冗余备份作用。
本发明实施例还提供了基于上述存储设备的分块存储方法。如图2所示,是基于上述存储设备的分块存储方法的流程图,该分块存储方法包括以下步骤:
步骤101:格式化存储设备,并使存储设备的磁盘空间包括具有多个首尾相邻的数据块单元2的数据区,数据块单元2包括彼此相邻的元数据块21和数据块22;其中,容量为预设的第一容量的数据块22设置为存储目标数据,容量为预设的第二容量的元数据块21设置为存储目标数据的数据信息。
具体地,存储设备必须经过格式化后才能被存储系统使用。存储设备的格式化过程为:按照预设的第一容量和第二容量,对存储设备的磁盘空间进行划分,然后,填充控制块头部信息,并将块位图清零;最后将控制块1拷贝到冗余控制块3。
步骤102:在数据区中确定目标数据块单元。
具体地,此步骤涉及数据块单元2的申请与回收,以在数据区中确定合适的用于承载待存储数据的目标数据块单元。下文将结合图3和图4分别详细地阐述目标数据块单元的申请方法和指定数据块单元的回收方法。
步骤103:将待存储数据存储到目标数据块单元中。
具体地,在确定目标数据块单元后,如果目标数据块单元的数据块22的剩余容量足以存储待存储数据,则将待存储数据存储到目标数据块单元中。数据块22的剩余容量可以根据数据块22的总容量和存储在该数据块22的所有数据段的数据段长度得到。下文将结合图5详细地阐述待存储数据的存储过程。
应用本实施例所述的存储设备的分块存储方法,采用元数据分散存储,每一个元数据块21和数据块22作为整体来存放,减少写数据后更新元数据地址偏移,从而提高了元数据的更新效率,从整体上提高了存储设备的存储性能。另外,采用元数据分散存储,大大降低由于多个元数据块21连续损坏而导致的数据不可用的概率,克服了现有技术中由于元数据的连续损坏导致的完好的数据块22无法进行正常的数据存储的缺陷。
在一优选的实施例中,通过格式化存储设备,还使得存储设备的磁盘空间还包括具有控制块头部和块位图的控制块1、以及作为控制块1的冗余备份的冗余控制块3;其中,控制块头部设置为存储数据区中数据块单元2的个数、第一容量和第二容量;块位图设置为存储数据区中各个数据块单元2的使用状态的状态信息。
在本实施例中,采用块位图进行数据块22的管理,克服了由于元数据的分散存储带来的搜索耗时、不方便管理的缺陷。另外,元数据的完整性不完全依赖于位于存储设备的上一层的管理节点,在管理节点管理的元数据(存储在管理节点中的元数据)失效(例如丢失)时,能根据块位图从存储设备恢复。
图3示出了在数据区中确定目标数据块单元的方法的流程图。如图3所示,在数据区中确定目标数据块单元的方法包括:
步骤201:判断内存中的未满块链表是否非空,未满块链表设置为存储数据区中所有未满数据块单元的元数据块21存储的数据信息;其中,未满数据块单元的数据块22中存储的目标数据的大小小于第一容量,并且未满数据块单元的元数据块21中存储的数据信息的大小小于第二容量。
具体地,当视频监控前端设备有数据进入存储系统时,首先为该设备申请合适的块,即申请目标数据块单元。本文采用的数据块单元2的申请策略为,优先将待存储数据写入数据区位置靠前的未满数据块单元中,如果数据区中不存在未满数据块单元,则将待存储数据写入数据区位置靠前的空闲数据块单元中,如果数据区中也不存在空闲数据块单元,则认为申请失败并退出,或者根据存储系统发送的回收指令,回收指定数据块单元,并将等存储数据写入指定数据块单元中。
此步骤中涉及的未满块链表存储在存储系统的内存中,该链表随着数据的不断写入实时更新。该未满块链表设置为存储数据区中所有未满数据块单元的元数据块21存储的数据信息。一般地,对于某个数据块单元2来说,如果其元数据块21的剩余容量为零或不足(即小于设定的最小容量),或者其数据块22的剩余容量为零或不足(即小于设定的最小容量)的情况,都认为该数据块单元2写满。反过来,如果其元数据块21的剩余容量充足,并且其数据块22的剩余容量充足的情况,都认为该数据块单元2未满。
步骤202:如果未满块链表非空,则根据未满块链表确定最小数据块单元,并将最小数据块单元确定为目标数据块单元。
具体地,当未满块链表非空时,即表示数据区内存在未满数据块单元时,根据未满块链表的数据信息,确定最小数据块单元并将该最小数据块单元确定为目标数据块单元。这里最小数据块单元指的是数据区中所有未满数据块单元中存储位置最靠前(地址最小)的那个未满数据块单元。
步骤203:如果未满块链表为空,根据块位图判断数据区中是否存在空闲数据块单元;其中,空闲数据块单元的数据块22的剩余容量等于第一容量,空闲数据块单元的元数据块21的剩余容量等于第二容量。
步骤204:如果数据区中存在空闲数据块单元,则将数据区中地址最靠前的空闲数据块单元确定为最小空闲数据块单元,并将最小空闲数据块单元确定为目标数据块单元。
具体地,当未满块链表为空时,即表示数据区内不存在未满数据块单元时,计划把待存储数据写入数据区的最小空闲数据块单元中。随着数据的不断写入,最小空闲数据块单元也随之改变。最小空闲数据块单元的获取方法为:系统初始化读取存储设备控制块1的块位图到内存块位图中。从块位图的第一位开始查询是否有未使用的数据块单元2,直到最后一个数据块单元2。一旦找到未使用的数据块单元2,即将该数据块单元2记录为最小空闲数据块单元。否则,将最小空闲数据块单元设置为无效值。该最小空闲数据块单元记录在存储系统的内存中。一旦最小空闲数据块单元被确定为目标数据块单元,即将块位图中该数据块单元2对应的状态信息标记为已使用,更新内存块位图并将更新后的内存块位图重新写入到控制块1的块位图,并将该最小数据块单元对应的数据信息(包括前端设备号)记录到未满块链表中。在该最小数据块单元写满后,将其对应的数据信息从未满块链表中删除。另外,一旦最小空闲数据块单元被确定为目标数据块单元,即重新向下搜索,以确定新的最小空闲数据块单元。如果从当前数据块单元2往后一直查找到最后一个数据块单元2,也没有找到未使用的数据块单元2,则从头开始查找,如果找到未使用的数据块单元2,则将该数据块单元2记录为最小空闲数据块单元,如果没有找到未使用的数据块单元2,则将最小空闲数据块单元设置为无效值。这样做,一方面避免过多的未满数据块单元浪费存储空间,另一方面,保证数据尽量顺序写入,提高写性能。
步骤205:如果数据区中不存在空闲数据块单元,则确定不存在目标数据块单元并退出,或者对回收指令涉及的指定数据块单元进行回收,并将经回收的指定数据块单元确定为目标数据块单元。
具体地,如果数据区中即不存在未满数据块单元,也不存在空闲数据块单元,则确定不存在目标数据块单元并退出,需要换其他存储设备继续写入数据。或者,根据存储系统的回收指令对存储有过时数据的数据块单元2进行回收,以保证待存储数据的存储能持续进行,避免了过时数据占用存储空间的情况,提高了存储设备的实用性。这里值得说明的是,存储系统可以在存储设备没有多余的存储空间时发出回收指令,以进行一个或多个指定数据块单元的回收,也可以随时发出回收指令,对数据区的一个或多个指定数据块单元进行回收。这里,对指定数据块单元的回收涉及,使该指定数据块单元的元数据块21清零,使块位图中记载的对应该指定数据块单元的状态信息置零,如果该指定数据块单元之前为未满数据块单元,则将指定数据块单元对应的数据信息从未满块链表中删除。应注意,回收过程可以不涉及对指定数据块单元的数据块22进行清零的动作,这是因为一旦该指定数据块单元的元数据块21清零后,其数据块22中存储的数据都会被后续写入的数据覆盖掉。
图4示出了对回收指令涉及的指定数据块单元进行回收的方法的流程图。如图4所示,对回收指令涉及的指定数据块单元进行回收包括以下步骤:
步骤301:将指定数据块单元的元数据块21清零,更新块位图中存储的对应指定数据块单元的状态信息。
步骤302:判断未满块链表中是否存储有指定数据块单元的数据块22存储的数据信息。
步骤303:如果未满块链表中存储有指定数据块单元的数据块22存储的数据信息,则将数据信息从未满块链表中删除。
具体地,首先根据指定数据块单元的块号计算其元数据的首地址,并将元数据块21清零。然后将内存块位图对应的状态信息设置为未使用,将内存块位图更新到控制块1。最后在判断出指定数据块单元为未满数据块单元时,将该指定数据块单元对应的数据信息从未满块链表中删除。
找到合适的目标数据块单元后,视频数据按段写入块。每个数据段生成一条段信息,并写入到该数据块单元2对应的元数据块21中。由于每个数据段包含的i帧数量不一样,所以每条数据段的信息长度也不一致。
图5示出了将待存储数据存储到目标数据块单元中的方法的流程图。如图5所示,将待存储数据存储到目标数据块单元中的方法包括以下步骤:
步骤401:根据待存储数据的大小和目标数据块单元的数据块22存储的目标数据的大小,判断目标数据块单元的数据块22的剩余容量是否充足。
步骤402:如果目标数据块单元的数据块22的剩余容量充足,则将待存储数据划分为多个数据段,依次对每个数据段,将数据段写入目标数据块单元的数据块22中,并将数据段的数据信息写入目标数据块单元的元数据块21中。
具体地,当目标数据块单元的数据块22的剩余容量充足时,根据数据块单元2的块号确定其元数据块21的起始偏移,读取元数据块21到内存,得到数据块单元2的数据块22的已使用容量,计算得到待存储数据的起始地址,并写入数据。在内存记录的元数据块21中增加一条段信息并进行填充,将内存中的元数据块21重新写回到存储设备该块对应的元数据块21上,释放内存中的元数据块21。
步骤403:如果目标数据块单元的数据块22的剩余容量不充足,则将目标数据块22从未满块链表中删除,然后重新确定目标数据块单元,并执行步骤401判断确定的目标数据块单元的数据块22的剩余容量是否充足,当剩余容量充足时执行步骤402写入数据;如果没有找到合适的目标数据块单元,则确定写入失败。
虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属技术领域内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的保护范围,仍须以所附的权利要求书所界定的范围为准。
Claims (9)
1.一种存储设备,其特征在于,所述存储设备的磁盘空间包括具有多个首尾相邻的数据块单元的数据区,所述数据块单元包括彼此相邻的元数据块和数据块;其中,容量为预设的第一容量的所述数据块设置为存储目标数据,容量为预设的第二容量的所述元数据块设置为存储所述目标数据的数据信息,
所述存储设备的磁盘空间还包括具有控制块头部和块位图的控制块;其中,所述控制块头部设置为存储所述数据块单元的个数、所述第一容量和所述第二容量;所述块位图设置为存储各个数据块单元的使用状态的状态信息。
2.根据权利要求1所述的存储设备,其特征在于,所述控制块的首地址为所述磁盘空间的首地址,且所述控制块与所述数据区中的第一个数据块单元相邻。
3.根据权利要求1或2所述的存储设备,其特征在于,所述存储设备的磁盘空间还包括作为所述控制块的冗余备份的冗余控制块。
4.根据权利要求3所述的存储设备,其特征在于,所述冗余控制块的尾地址为所述磁盘空间的尾地址。
5.一种基于存储设备的分块存储方法,其特征在于,包括:
格式化存储设备,并使所述存储设备的磁盘空间包括具有多个首尾相邻的数据块单元的数据区,所述数据块单元包括彼此相邻的元数据块和数据块;其中,容量为预设的第一容量的所述数据块设置为存储目标数据,容量为预设的第二容量的所述元数据块设置为存储所述目标数据的数据信息;
在所述数据区中确定目标数据块单元;
将待存储数据存储到所述目标数据块单元中,
所述格式化存储设备,还使得所述存储设备的磁盘空间还包括具有控制块头部和块位图的控制块、以及作为所述控制块的冗余备份的冗余控制块;其中,所述控制块头部设置为存储所述数据块单元的个数、所述第一容量和所述第二容量;所述块位图设置为存储各个数据块单元的使用状态的状态信息。
6.根据权利要求5所述的方法,其特征在于,所述在数据区中确定目标数据块单元的方法包括:
判断内存中的未满块链表是否非空;
判断出所述未满块链表非空时,根据所述未满块链表确定最小数据块单元,并将所述最小数据块单元确定为所述目标数据块单元。
7.根据权利要求6所述的方法,其特征在于,所述在数据区中确定目标数据块单元的方法还包括:
判断出所述未满块链表为空时,根据所述块位图判断所述数据区中是否存在空闲数据块单元;
判断出所述数据区中存在空闲数据块单元时,将所述数据区中地址最靠前的空闲数据块单元确定为最小空闲数据块单元,并将所述最小空闲数据块单元确定为所述目标数据块单元;
判断出所述数据区中不存在空闲数据块单元时,确定不存在目标数据块单元并退出,或者对回收指令涉及的指定数据块单元进行回收,并将经回收的指定数据块单元确定为所述目标数据块单元。
8.根据权利要求7所述的方法,其特征在于,所述对回收指令涉及的指定数据块单元进行回收包括:
将所述指定数据块单元的元数据块清零,更新块位图中存储的对应所述指定数据块单元的状态信息;
判断未满块链表中是否存储有所述指定数据块单元的数据块存储的数据信息;
判断出未满块链表中存储有所述指定数据块单元的数据块存储的数据信息时,将所述数据信息从未满块链表中删除。
9.根据权利要求5所述的方法,其特征在于,所述将待存储数据存储到目标数据块单元中包括:
根据所述待存储数据的大小和所述目标数据块单元的数据块存储的目标数据的大小,判断所述目标数据块单元的数据块的剩余容量是否充足;
如果是,则将所述待存储数据划分为多个数据段,依次对每个数据段,将所述数据段写入所述目标数据块单元的数据块中,并将所述数据段的数据信息写入所述目标数据块单元的元数据块中。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510299026.5A CN106294193B (zh) | 2015-06-03 | 2015-06-03 | 存储设备及基于该存储设备的分块存储方法 |
HUE15894018A HUE061322T2 (hu) | 2015-06-03 | 2015-12-16 | Tárolóeszköz és a tárolóeszközön alapuló blokkos tárolási eljárás |
EP15894018.9A EP3306477B1 (en) | 2015-06-03 | 2015-12-16 | Storage device and block storage method based on the storage device |
US15/578,474 US10565075B2 (en) | 2015-06-03 | 2015-12-16 | Storage device and block storage method based on the storage device |
PCT/CN2015/097582 WO2016192375A1 (zh) | 2015-06-03 | 2015-12-16 | 存储设备及基于该存储设备的分块存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510299026.5A CN106294193B (zh) | 2015-06-03 | 2015-06-03 | 存储设备及基于该存储设备的分块存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106294193A CN106294193A (zh) | 2017-01-04 |
CN106294193B true CN106294193B (zh) | 2019-10-15 |
Family
ID=57440110
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510299026.5A Active CN106294193B (zh) | 2015-06-03 | 2015-06-03 | 存储设备及基于该存储设备的分块存储方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10565075B2 (zh) |
EP (1) | EP3306477B1 (zh) |
CN (1) | CN106294193B (zh) |
HU (1) | HUE061322T2 (zh) |
WO (1) | WO2016192375A1 (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6239078B1 (ja) * | 2016-11-04 | 2017-11-29 | ウィンボンド エレクトロニクス コーポレーション | 半導体記憶装置および読出し方法 |
WO2019030883A1 (ja) * | 2017-08-10 | 2019-02-14 | 株式会社日立製作所 | 計算機システムおよびデータ処理方法 |
CN109426587B (zh) * | 2017-08-25 | 2020-08-28 | 杭州海康威视数字技术股份有限公司 | 一种数据恢复方法及装置 |
CN109669621B (zh) * | 2017-10-13 | 2021-05-25 | 杭州海康威视系统技术有限公司 | 一种文件管理方法、文件管理系统、电子设备及存储介质 |
CN110214305B (zh) * | 2017-12-29 | 2020-09-08 | 华为技术有限公司 | 一种数据访问方法及存储阵列 |
CN110018897B (zh) * | 2018-01-09 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及计算设备 |
US11243692B2 (en) | 2018-12-07 | 2022-02-08 | Netapp, Inc. | Object tiering in a distributed storage system |
CN109634523A (zh) * | 2018-12-10 | 2019-04-16 | 深圳市网心科技有限公司 | 一种磁盘管理方法、系统及电子设备和存储介质 |
CN112988609B (zh) * | 2019-12-02 | 2023-05-02 | 杭州海康机器人股份有限公司 | 数据处理方法、装置、存储介质和客户端 |
CN111274219B (zh) * | 2020-01-21 | 2023-12-08 | 浙江大华技术股份有限公司 | 数据存储方法及装置、存储介质、电子装置 |
CN113608687A (zh) * | 2021-06-30 | 2021-11-05 | 苏州浪潮智能科技有限公司 | 一种空间回收方法、装置、设备及可读存储介质 |
TWI769111B (zh) * | 2021-11-17 | 2022-06-21 | 瑞昱半導體股份有限公司 | 基本儲存單元管理電路以及基本儲存單元管理方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101324898A (zh) * | 2008-08-05 | 2008-12-17 | 北京蓝色星际软件技术发展有限公司 | 一种基于文件属性的快速检索、恢复方法 |
CN101814044A (zh) * | 2010-04-19 | 2010-08-25 | 中兴通讯股份有限公司 | 元数据处理方法及装置 |
Family Cites Families (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544347A (en) * | 1990-09-24 | 1996-08-06 | Emc Corporation | Data storage system controlled remote data mirroring with respectively maintained data indices |
US5235601A (en) * | 1990-12-21 | 1993-08-10 | Array Technology Corporation | On-line restoration of redundancy information in a redundant array system |
US6778558B2 (en) * | 1998-02-23 | 2004-08-17 | Lucent Technologies Inc. | System and method for incremental redundancy transmission in a communication system |
JP3763992B2 (ja) * | 1999-03-30 | 2006-04-05 | 富士通株式会社 | データ処理装置及び記録媒体 |
US6742137B1 (en) * | 1999-08-17 | 2004-05-25 | Adaptec, Inc. | Object oriented fault tolerance |
US6928521B1 (en) * | 2000-08-01 | 2005-08-09 | International Business Machines Corporation | Method, system, and data structures for using metadata in updating data in a storage device |
US7032125B2 (en) * | 2002-04-25 | 2006-04-18 | Lsi Logic Corporation | Method for loosely coupling metadata and data in a storage array |
US6675503B2 (en) * | 2002-05-02 | 2004-01-13 | Kun-Chung Liu | Easy-to-wear footwear |
US7809693B2 (en) * | 2003-02-10 | 2010-10-05 | Netapp, Inc. | System and method for restoring data on demand for instant volume restoration |
US8321439B2 (en) * | 2004-12-17 | 2012-11-27 | Microsoft Corporation | Quick filename lookup using name hash |
US8495010B2 (en) * | 2005-11-04 | 2013-07-23 | Oracle America, Inc. | Method and system for adaptive metadata replication |
US9432433B2 (en) * | 2006-06-09 | 2016-08-30 | Qualcomm Incorporated | Enhanced block-request streaming system using signaling or block creation |
CA2669816C (en) * | 2006-12-05 | 2017-03-07 | D-Wave Systems, Inc. | Systems, methods and apparatus for local programming of quantum processor elements |
WO2008106686A1 (en) * | 2007-03-01 | 2008-09-04 | Douglas Dumitru | Fast block device and methodology |
US7694191B1 (en) * | 2007-06-30 | 2010-04-06 | Emc Corporation | Self healing file system |
US8285758B1 (en) * | 2007-06-30 | 2012-10-09 | Emc Corporation | Tiering storage between multiple classes of storage on the same container file system |
US7873619B1 (en) * | 2008-03-31 | 2011-01-18 | Emc Corporation | Managing metadata |
US8762661B2 (en) * | 2008-09-18 | 2014-06-24 | Seagate Technology Llc | System and method of managing metadata |
US8037345B1 (en) * | 2010-03-31 | 2011-10-11 | Emc Corporation | Deterministic recovery of a file system built on a thinly provisioned logical volume having redundant metadata |
US20120005450A1 (en) * | 2010-07-02 | 2012-01-05 | International Business Machines Corporation | User control of file data and metadata blocks |
KR101638436B1 (ko) * | 2010-12-10 | 2016-07-12 | 한국전자통신연구원 | 클라우드 스토리지 및 그의 관리 방법 |
US8918559B2 (en) * | 2011-06-06 | 2014-12-23 | International Business Machines Corporation | Partitioning of a variable length scatter gather list |
US8313036B1 (en) * | 2011-09-16 | 2012-11-20 | Google Inc. | Secure application directory |
KR20140142035A (ko) * | 2013-06-03 | 2014-12-11 | 삼성전자주식회사 | 메모리 컨트롤러 및 상기 메모리 컨트롤러의 동작방법 |
US9990156B1 (en) * | 2014-06-13 | 2018-06-05 | EMC IP Holding Company LLC | Deduplicating snapshots associated with a backup operation |
WO2016054212A1 (en) * | 2014-10-01 | 2016-04-07 | Cacheio Llc | Efficient metadata in a storage system |
FR3055992A1 (fr) * | 2016-09-09 | 2018-03-16 | Proton World International N.V. | Gestion d'index dans une memoire flash |
US10802910B2 (en) * | 2018-09-17 | 2020-10-13 | Intel Corporation | System for identifying and correcting data errors |
-
2015
- 2015-06-03 CN CN201510299026.5A patent/CN106294193B/zh active Active
- 2015-12-16 HU HUE15894018A patent/HUE061322T2/hu unknown
- 2015-12-16 WO PCT/CN2015/097582 patent/WO2016192375A1/zh active Application Filing
- 2015-12-16 US US15/578,474 patent/US10565075B2/en active Active
- 2015-12-16 EP EP15894018.9A patent/EP3306477B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101324898A (zh) * | 2008-08-05 | 2008-12-17 | 北京蓝色星际软件技术发展有限公司 | 一种基于文件属性的快速检索、恢复方法 |
CN101814044A (zh) * | 2010-04-19 | 2010-08-25 | 中兴通讯股份有限公司 | 元数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2016192375A1 (zh) | 2016-12-08 |
US20180173598A1 (en) | 2018-06-21 |
HUE061322T2 (hu) | 2023-06-28 |
EP3306477B1 (en) | 2022-12-07 |
EP3306477A4 (en) | 2018-12-19 |
EP3306477A1 (en) | 2018-04-11 |
CN106294193A (zh) | 2017-01-04 |
US10565075B2 (en) | 2020-02-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106294193B (zh) | 存储设备及基于该存储设备的分块存储方法 | |
US9817588B2 (en) | Memory device and operating method of same | |
US8862818B1 (en) | Handling partial stripe writes in log-structured storage | |
CN106407040B (zh) | 一种远程数据复制方法及系统 | |
CN102779180B (zh) | 数据存储系统的操作处理方法,数据存储系统 | |
US9921955B1 (en) | Flash write amplification reduction | |
CN103049349B (zh) | 基于分层存储的快照方法及系统 | |
CN112307263B (zh) | 一种文件存储方法、装置、设备及介质 | |
CN104462563A (zh) | 一种文件存储方法和系统 | |
CN103226965B (zh) | 基于时间位图的音视频数据存取方法 | |
CN106155915A (zh) | 数据存储的处理方法及装置 | |
CN112015517A (zh) | 一种基于k8s集群的区块链节点动态迁移方法和系统 | |
CN105630413B (zh) | 一种磁盘数据的同步回写方法 | |
CN103092849A (zh) | 文件系统簇管理方法 | |
CN104410897B (zh) | 一种数据存储的方法和装置 | |
CN105446652B (zh) | 进行摄像数据存储的方法及装置 | |
CN105260139A (zh) | 一种磁盘管理方法以及系统 | |
US20090083503A1 (en) | System of creating logical volume and method thereof | |
CN106371950B (zh) | 一种实现raid级别转换的方法及装置 | |
US7702864B2 (en) | Apparatus, system, and method for writing stripes in parallel to unique persistent storage devices | |
CN103729301B (zh) | 数据处理方法和装置 | |
US10339020B2 (en) | Object storage system, controller and storage medium | |
CN105068896B (zh) | 基于raid备份的数据处理方法及装置 | |
CN109271100A (zh) | 一种Flash存储器数据存储方法和读取方法 | |
CN111949212B (zh) | 基于自定义开放通道ssd的文件系统及文件管理方法 |
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 |