CN116069685B - 一种存储系统写控制方法、装置、设备及可读存储介质 - Google Patents
一种存储系统写控制方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN116069685B CN116069685B CN202310208795.4A CN202310208795A CN116069685B CN 116069685 B CN116069685 B CN 116069685B CN 202310208795 A CN202310208795 A CN 202310208795A CN 116069685 B CN116069685 B CN 116069685B
- Authority
- CN
- China
- Prior art keywords
- data
- written
- position information
- hard disk
- storage unit
- 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
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to 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/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/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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)
- 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)
Abstract
本申请适用于存储技术领域,具体公开了一种存储系统写控制方法、装置、设备及可读存储介质,相较于原生存储方案为数据块位置信息与硬盘位置信息一一对应,本申请采用一个基本存储单元对应一个数据块位置信息以及一段对应大小的物理地址,在新写时,在该基本存储单元未被写入的物理地址中为新写的第一待写入数据分配第一实际写入地址并直接写入,确定对应的硬盘位置信息,更新至该对象对应的第一映射关系;在覆盖写时,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址并执行对旧数据的覆盖写,一个基本存储单元只需要维护一个位置信息元数据,且在覆盖写时直接写入原地址,不会造成数据碎片化,保证数据的顺序存储,优化了存储性能。
Description
技术领域
本申请涉及存储技术领域,特别是涉及一种存储系统写控制方法、装置、设备及可读存储介质。
背景技术
分布式存储社区原生存储池方案(下文简称原生存储方案)中的写过程按照不同的划分依据可以进行如下分类:
按照最小写入单元对齐方式,分为大写和小写两种写入类型。大写主要操作写入的数据对齐后的整块部分的数据,小写主要操作写入的数据不能按写入单元对齐的部分的数据。写入大写数据又称为对称写,即传输数据的起始地址和总大小是总线大小的倍数。写入小写数据又称为非对称写,即数据传输的一个或多个数据节拍没有使用总线的全部字节通道,传输的起始地址和总大小不是总线大小的倍数。
按照写入位置是否曾经写入过数据,分为新写和覆盖写。顾名思义,当待写入数据要写入的偏移地址及长度位置还未写入数据时,为新写的情况,此时为待写入数据分配相应的物理地址,直接写入磁盘即可。当待写入数据要写入的偏移地址及长度位置曾经写入过数据,为覆盖写的情况。
在对象存储系统中,在执行覆盖写时,需要先对旧数据执行克隆(clone),根据大小写不同又有不同的处理方法。对于大写而言,需要重新分配新的物理地址,将待写入数据直接写入新的物理地址;对于小写而言,则需要将对应位置的旧数据写入预写日志系统(wal)中,然后通过读取数据并跟待写入数据进行合并,再为待写入数据申请新的物理地址进行写入,以此来保证数据的原子性。
图1为原生存储方案的大小写覆盖写示意图;图2为原生存储方案的追加写式覆盖写示意图;图3为对象存储系统原生存储方案的元数据结构示意图。
如图1所示,以最小写入单元为4k为例,即每个数据块大小为4k。假设待写入数据为3k大小,为待写入数据分配偏移地址为9k位置,即需要覆盖地址为8k到12k中的旧数据。在写入时,需要将偏移地址在8k到12k的数据块的旧数据克隆后写入预写日志系统(wal)中,读取前1k数据与待写入数据拼接后,写入偏移地址在8k到12k的数据块,此为小写覆盖写场景。
假设待写入数据为4k大小,为待写入数据分配偏移地址为24k位置,即需要覆盖地址为24k到28k中的旧数据。在写入时,无需做对齐处理,直接将待写入数据覆盖写入偏移地址在24k到28k的数据块,此为大写覆盖写场景。
不论是大写数据还是小写数据,均从事务场景划分后,进行数据对齐处理。而后将对齐部分(大写数据)分为非创建写(即覆盖写)和创建写(即新写)后均分配新空间写入;同样将非对齐部分(小写数据)也划分为非创建写(即覆盖写)和创建写(即新写)后,如上文所述的将非对齐部分(小写数据)的非创建写(即覆盖写)的待写入数据写入预写日志系统(wal)中进行对齐处理后再分配新空间。即采用原生存储方案中的写方案,不论是非创建写(即覆盖写)还是创建写(即新写),均要在硬盘上为待写入数据分配新空间。如图2所示,覆盖写场景需要将A1’数据替换A1数据,也是在硬盘上未被占用的区域中找到一块来写入A1’数据,即原生存储方案中的覆盖写方案本质为追加写。
则分布式存储原生的写方案存在下述问题。
分布式存储在每次写入新数据时,均需要分配新的物理地址,在软件层重定向写入数据的同时在硬盘层也存在重定向问题,如果硬盘是机械硬盘,则会破坏数据的连续性,将原本连续的数据变成不连续。而如果硬盘是固态硬盘(SSD),则会造成双重重定向,降低性能。
同时,采用分布式存储原生的写方案,在每次执行写操作时均需要更新位置信息元数据。以对象存储系统为例,通常一个对象大小为4M。如图3所示,元数据(Onode,分布式存储系统存储引擎BlueStore中的元数据形式)内维护三级内存映射结构,分别为:对象逻辑区域(LE)、数据块位置信息(BL)、硬盘位置信息(PE),每个元数据中包含一个扩展映射(e存储系统写控制tent_map)管理对象的对象逻辑区域,每个对象逻辑区域通过数据块位置信息和磁盘空间的数据片硬盘位置信息建立映射关系。其中,对象逻辑区域(LE)主要包含相对于4M的偏移量(offset)和长度(length);每个数据块位置信息(BL)能够管理的最大范围是由最大数据块位置信息(BL)限定的,默认是64k,也就是一个数据块位置信息(BL)中能够管理的对象逻辑区域(LE)的长度总和小于最大的数据块位置信息(BL);硬盘位置信息(PE)是磁盘上的数据片,即物理地址,当经过大量写入的过程后,会不断重新分配硬盘位置信息(PE),并与对象逻辑区域(LE)和数据块位置信息(BL)重新建立联系。
可以看到,应用原生存储方案中的写方案,每次写入数据均需要申请物理地址,根据该物理地址的硬盘位置信息到数据库中更改元数据维护的三层内存映射关系,即每次写入数据均需要访问数据库新建位置信息元数据或更新位置信息元数据,存在存储性能差的问题。而覆盖写场景本来为对已写入数据的修改,应用原生存储方案中的写方案却需要申请新的物理地址,这会导致原本连续的数据的硬盘位置信息碎片化,同样影响了存储性能。
提供一种优化存储性能的存储写入方案,是本领域技术人员需要解决的技术问题。
发明内容
本申请的目的是提供一种存储系统写控制方法、装置、设备及可读存储介质,能够提高存储系统的写性能,进而提高存储系统的存储性能。
为解决上述技术问题,本申请提供一种存储系统写控制方法,包括:
在创建基本存储单元时,生成所述基本存储单元对应的一个数据块位置信息与对应大小的物理地址的第一映射关系;
对新写入的第一待写入数据,自所述基本存储单元未被写入的物理地址中为所述第一待写入数据划分第一实际写入地址以执行对所述第一待写入数据的写入,确定所述第一实际写入地址对应的硬盘位置信息,在所述第一映射关系中更新所述第一待写入数据的硬盘位置信息与所述基本存储单元的数据块位置信息对应;
对需要进行覆盖写的第二待写入数据,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址以执行所述第二待写入数据对所述旧数据的覆盖写。
可选的,所述对新写入的第一待写入数据,自所述基本存储单元未被写入的物理地址中为所述第一待写入数据划分第一实际写入地址以执行对所述第一待写入数据的写入,确定所述第一实际写入地址对应的硬盘位置信息,在所述第一映射关系中更新所述第一待写入数据的硬盘位置信息与所述基本存储单元的数据块位置信息对应,具体包括:
若所述第一待写入数据为非对齐数据,则对所述第一待写入数据做对齐处理;
根据对齐处理后的所述第一待写入数据的长度分配对应的物理空间,并根据分配的物理空间自所述基本存储单元未被写入的物理地址中顺序划分所述第一实际写入地址,并创建与所述第一实际写入地址对应的硬盘位置信息放入硬盘位置信息数组;
根据所述第一实际写入地址在所述基本存储单元的数据块位置信息中的偏移量在所述硬盘位置信息数组中查找相应位置,得到第一实际偏移地址;
根据所述第一实际偏移地址,将所述第一待写入数据写入操作系统内核;
根据所述第一待写入数据的硬盘位置信息更新所述第一映射关系。
可选的,所述对所述第一待写入数据做对齐处理,具体为:
在所述第一待写入数据之前或所述第一待写入数据之后填充预设字符以满足对齐要求。
可选的,所述根据所述第一待写入数据的硬盘位置信息更新所述第一映射关系,具体包括:
访问数据库获取所述基本存储单元的位置信息元数据;
将所述第一待写入数据的硬盘位置信息添加至所述位置信息元数据中所述第一映射关系中与所述基本存储单元的数据块位置信息对应的硬盘位置信息。
可选的,所述对需要进行覆盖写的第二待写入数据,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址以执行所述第二待写入数据对所述旧数据的覆盖写,具体包括:
若所述第二待写入数据为非对齐数据,则对所述第二待写入数据做对齐处理;
根据所述旧数据在所述基本存储单元的数据块位置信息中的偏移量在硬盘位置信息数组中查找相应位置,确定所述旧数据的第二实际偏移地址;
对所述旧数据进行备份后,根据所述第二实际偏移地址,将所述第二待写入数据写入操作系统内核。
可选的,所述对所述第二待写入数据做对齐处理,具体为:
在所述第二待写入数据之前或所述第二待写入数据之后填充预设字符以满足对齐要求。
可选的,所述对所述第二待写入数据做对齐处理,具体为:
读取所述旧数据的部分数据填充至所述第二待写入数据之前或所述第二待写入数据之后以满足对齐要求。
可选的,所述对所述旧数据进行备份,具体为:
对所述旧数据进行克隆处理后,将克隆的所述旧数据写入预写日志系统。
可选的,所述对所述旧数据进行备份,具体为:
调用对应的硬盘的备份功能,在所述硬盘中对所述旧数据进行备份。
可选的,还包括:
对上层传递的待写入数据根据事务类型进行场景划分,确定所述待写入数据中要进行新写入处理的所述第一待写入数据和要进行覆盖写处理的所述第二待写入数据。
可选的,所述对上层传递的待写入数据根据事务类型进行场景划分,确定所述待写入数据中要进行新写入处理的所述第一待写入数据和要进行覆盖写处理的所述第二待写入数据,具体包括:
以所述待写入数据中在存储系统中无对应的原有数据的部分以及在所述存储系统中有对应的原有数据且要进行覆盖写的数据超出对应的原有数据占用的空间大小的部分为所述第一待写入数据;
以所述待写入数据中在所述存储系统中有对应的原有数据且能够写入对应的原有数据占用的空间的部分为所述第二待写入数据。
可选的,还包括:预先将所述第一待写入数据和所述第二待写入数据均按照固定大小的数据块为单位进行拆分。
可选的,还包括:
对上层传递的待写入数据进行对齐处理后,根据事务类型进行场景划分,确定所述待写入数据中要进行新写入处理的所述第一待写入数据和要进行覆盖写处理的所述第二待写入数据。
可选的,所述对上层传递的待写入数据进行对齐处理,具体为:
对所述待写入数据中所有非对齐数据通过填充预设字符以满足对齐要求。
可选的,所述基本存储单元具体为对象,所述第一映射关系还包括所述对象的对象逻辑区域信息。
可选的,所述对像的对象逻辑区域信息与所述对象的数据块位置信息一一对应。
可选的,所述对象的数据块位置信息对应4M大小的硬盘空间。
为解决上述技术问题,本申请还提供一种存储系统写控制装置,包括:
元数据管理单元,用于在创建基本存储单元时,生成所述基本存储单元对应的一个数据块位置信息与对应大小的物理地址的第一映射关系;
新写控制单元,用于对新写入的第一待写入数据,自所述基本存储单元未被写入的物理地址中为所述第一待写入数据划分第一实际写入地址以执行对所述第一待写入数据的写入,确定所述第一实际写入地址对应的硬盘位置信息,在所述第一映射关系中更新所述第一待写入数据的硬盘位置信息与所述基本存储单元的数据块位置信息对应;
覆盖写控制单元,用于对需要进行覆盖写的第二待写入数据,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址以执行所述第二待写入数据对所述旧数据的覆盖写。
为解决上述技术问题,本申请还提供一种存储系统写控制设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,所述计算机程序被所述处理器执行时实现如上述任意一项所述存储系统写控制方法的步骤。
为解决上述技术问题,本申请还提供一种可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述任意一项所述存储系统写控制方法的步骤。
相较于原生存储方案为数据块位置信息与硬盘位置信息一一对应,导致需要维护较多的位置信息元数据,且在覆盖写时导致连续数据存储碎片化,本申请提供的存储系统写控制方法,一个基本存储单元对应一个数据块位置信息以及一段对应大小的物理地址,在新写时,在该基本存储单元未被写入的物理地址中为新写的第一待写入数据分配第一实际写入地址并直接写入,同时确定对应的硬盘位置信息,更新至该对象对应的第一映射关系;在覆盖写时,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址并执行对旧数据的覆盖写,一个基本存储单元只需要维护一个位置信息元数据,且在覆盖写时直接写入原地址,不会造成数据碎片化,保证数据的顺序存储,优化了存储性能。
本申请还提供一种存储系统写控制装置、设备及可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为原生存储方案的大小写覆盖写示意图;
图2为原生存储方案的追加写式覆盖写示意图;
图3为对象存储系统原生存储方案的元数据结构示意图;
图4为本申请实施例提供的一种存储系统写控制方法的流程图;
图5为本申请实施例提供的一种存储系统写控制方法的模块流程图;
图6为本申请实施例提供的一种数据划分示意图;
图7为本申请实施例提供的一种元数据结构示意图;
图8为本申请实施例提供的一种写数据示意图;
图9为本申请实施例提供的一种图4中步骤S402的具体实施方式的流程图;
图10为本申请实施例提供的一种图4中步骤S403的具体实施方式的流程图;
图11为本申请实施例提供的一种存储系统写控制装置的结构示意图;
图12为本申请实施例提供的一种存储系统写控制设备的结构示意图。
具体实施方式
本申请的核心是提供一种存储系统写控制方法、装置、设备及可读存储介质,能够提高存储系统的写性能,进而提高存储系统的存储性能。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
图4为本申请实施例提供的一种存储系统写控制方法的流程图;图5为本申请实施例提供的一种存储系统写控制方法的模块流程图;图6为本申请实施例提供的一种数据划分示意图;图7为本申请实施例提供的一种元数据结构示意图;图8为本申请实施例提供的一种写数据示意图。
如图4所示,本申请实施例提供的存储系统写控制方法包括:
S401:在创建基本存储单元时,生成基本存储单元对应的一个数据块位置信息与对应大小的物理地址的第一映射关系。
S402:对新写入的第一待写入数据,自基本存储单元未被写入的物理地址中为第一待写入数据划分第一实际写入地址以执行对第一待写入数据的写入,确定第一实际写入地址对应的硬盘位置信息,在第一映射关系中更新第一待写入数据的硬盘位置信息与基本存储单元的数据块位置信息对应。
S403:对需要进行覆盖写的第二待写入数据,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址以执行第二待写入数据对旧数据的覆盖写。
针对原生存储方案写性能差导致存储性能差的问题,本申请实施例提供的存储系统写控制方法通过优化数据存储结构以及覆盖写的方式来优化存储系统写性能,不仅能够显著提升分布式存储系统写入过程中的性能,还能够在执行其他存储任务时提升存储性能。
本申请实施例提供的存储系统写控制方法基于分布式存储系统的存储引擎实现,下面结合功能模块划分的角度对本申请实施例提供的存储系统写控制方法进行说明。如图5所示,在存储引擎中,为数据写入而划分的模块主要包括事务转换模块、数据分布处理模块以及数据提交模块。其中,数据分布模块又进一步分为数据预处理子模块和元数据处理子模块。事务转换模块用于对上层传递的事务进行场景划分,确定要写入的数据的写入办法,根据待写入数据的长度分配相应的实际空间地址等。数据分布处理模块用于进行硬盘映射管理和流程管理,用于对上层传递下来的数据进行处理。数据预处理子模块用于对上层传递下来的数据进行对齐处理、按照块对齐原则计算待写入数据的首位偏移、划分数据分布场景等处理;元数据管理子模块用于管理位置信息元数据。数据提交模块用于对接接口层进行数据提交以将确定实际写入位置的待写入数据写入硬盘中的对应位置。
在本申请实施例中,将覆盖写任务的功能实现由原来的追加写变为修改写,将写数据的位置信息元数据维护的内存映射结构变为基本存储单元固定的数据块位置信息与硬盘位置信息对应,则需要对数据分布模块的相应功能实现进行上述改进,具体需要在数据预处理子模块中更改覆盖写规则以为要进行覆盖写的数据分配旧数据的实际物理地址,同时在元数据管理子模块中根据修改写的特性对元数据的映射结构和硬盘空间管理进行改变。
基于如图5所示的改进后的存储系统写控制方法的模块示意图,本申请实施例提供的存储系统写控制方法还可以包括:对上层传递的待写入数据根据事务类型进行场景划分,确定待写入数据中要进行新写入处理的第一待写入数据和要进行覆盖写处理的第二待写入数据。即是说,可以在接收到一批待写入数据时,先按照事务类型对待写入数据进行分类,以确定要进行新写入处理的第一待写入数据和要进行覆盖写处理的第二待写入数据,此时,第一待写入数据中和第二待写入数据中可能均包括大写数据和小写数据。
需要说明的是,第一待写入数据包括原本就要进行新写入的数据以及原本需要覆盖写处理但要写入的位置的物理空间不足以进行全部写入而需要分配新的物理空间的数据。
则对上层传递的待写入数据根据事务类型进行场景划分,确定待写入数据中要进行新写入处理的第一待写入数据和要进行覆盖写处理的第二待写入数据,具体包括:
以待写入数据中在存储系统中无对应的原有数据的部分以及在存储系统中有对应的原有数据且要进行覆盖写的数据超出对应的原有数据占用的空间大小的部分为第一待写入数据;
以待写入数据中在存储系统中有对应的原有数据且能够写入对应的原有数据占用的空间的部分为第二待写入数据。
基于上述方式,对事务划分后的待写入数据可以进一步确定要进行新写的数据、要进行覆盖写的数据以及要进行覆盖写但由于原有数据占用的物理空间不足而要进行新写的数据。
由于对于大写数据和小写数据需要采用不同的写入方式,为便于后续处理,本申请实施例提供的存储系统写控制方法还可以包括:预先将第一待写入数据和第二待写入数据均按照固定大小的数据块为单位进行拆分。具体地,用于划分的数据块单位采用所在存储系统中全部字节通道的大小或倍数,即划分出对对齐的数据块。通过才能够待写入数据中拆出对齐的数据块,以便对这些数据块进行大写数据的写入处理,而对拆出的非对齐的数据块(如果有的话)进行小写数据的写入处理。
例如,数据预处理子模块可以按照图6的方式对待写入数据(可以指上文划分前的待写入数据,或划分后的第一待写入数据或划分后的第二待写入数据)进行划分。以数据块为4k大小为例进行说明(在实际应用中不限于4k大小),假设待写入数据的长度length小于12k,上层传递的待写入数据的偏移(offset)在0k~12k之间,根据待写入数据的长度确定待写入数据的结尾偏移(end),则以4k为单位将0k~12k的空间划分为三个数据块。则待写入数据在第一个数据块中的长度为数据块头部长度(head_length),即待写入数据按照偏移(offset)对最小分配单元(min_alloc_size,在本例中为4k)做对齐处理后距离数据块头部的长度。待写入数据在第二个数据块中的长度为完整对齐的中间块(middle_length),即待写入数据按照偏移(offset)对最小分配单元(min_alloc_size,在本例中为4k)做对齐处理后完全对齐的中间块。待写入数据在第三个数据块中的长度为数据块尾部长度(tail_length),即待写入数据按照偏移(offset)对最小分配单元(min_alloc_size,在本例中为4k)做对齐处理后距离对齐数据块尾部的长度。
同时,在元数据管理子模块中根据修改写的特性对元数据的映射结构和硬盘空间管理进行改变,区分于原生存储方案的写方案中为每个待写入数据均分配三级映射结构(如对象存储系统中的对象逻辑区域(LE)、数据块位置信息(BL)、硬盘位置信息(PE))并在每次写入数据时均需要更新这三级结构,本申请实施例提供的存储系统写控制方法采用一个基本存储单元对应一个数据块位置信息与对应大小的物理地址的内存映射方案,即一个基本存储单元对应一个位置信息元数据,该位置信息元数据包含该基本存储单元对应的一个数据块位置信息以及随着新写入数据而确定的硬盘位置信息,从而减少写入数据时对数据块位置信息的更新操作。在同一个基本存储单元内写入数据时,该基本存储单元的数据块位置信息无需变动,只需在新写入数据时更新位置信息元数据中的硬盘位置信息即可。由此,需要为每个基本存储单元维护的位置信息元数据也由原本的多个变为了一个。如本申请背景技术部分介绍的对象存储系统中对每个对象最多需要维护64个位置信息元数据,即可以将原本每个对象需要维护最多64个位置信息元数据优化为只需维护一个位置信息元数据,从而有效减少操作数据库的次数,优化了存储性能。
则对于S401来说,在创建基本存储单元时,生成基本存储单元对应的一个数据块位置信息与对应大小的物理地址的第一映射关系。基本存储单元为所在存储系统的基本存储结构,如对象存储系统中的对象,文件存储系统中的文件。在原生存储方案中,在基本存储单元中预先划分多个数据块,并设定该数据块对应的数据块位置信息以及硬盘位置信息,当写入数据时,则根据数据大小选择合适的数据块,如果没有合适的数据块,则需要对已有数据块进行扩张,增加对应的硬盘存储空间,并更新位置信息元数据。而在本申请实施例提供的存储系统写控制方法中,在生成基本存储单元时,以整个基本存储单元对应一个数据块位置信息,并分配与该基本存储单元的硬盘存储空间大小的硬盘位置信息,生成该基本存储单元的位置信息元数据。
对于S402来说,定义新写入的数据为第一待写入数据,要为第一待写入数据分配此前未被写入过数据的物理地址,即第一实际写入地址。对应第一实际写入地址,此时要写入的基本存储单元的硬盘位置信息发生更新,数据块位置信息不发生变动,在更新位置信息元数据时只需更新第一代写入数据的硬盘位置信息与基本存储单元的数据块位置信息对应。
对于S403来说,定义需要进行覆盖写的数据为第二待写入数据,第二待写入数据需要直接覆盖于旧数据的物理地址,即该分布式存储社区原生存储方案中覆盖写(本质为追加写)为修改写,故根据要覆盖的旧数据的硬盘位置信息确定第二待写入数据的第二实际写入地址。由于第二实际写入地址的硬盘位置信息与旧数据的硬盘位置信息一致,同时基本存储单元的数据块位置信息也未发生变动,故无需更新基本存储单元的位置信息元数。本申请实施例通过将覆盖写方案改为修改写方案,即在原有空间地址上写入的方式,在执行覆盖写时无需更新基本存储单元的位置信息元数据,减少了操作数据库的次数。
在确定好第一待写入数据的实际写入地址和/或第二待写入数据的实际写入地址,并确定要更新的基本存储单元的位置信息元数据后,通过数据提交模块调用数据库(对象存储系统中采用RockDB),具体通过数据库文件接口(如RockDB的文件接口BlueRocksEnv)调用到数据库(如实现了 RocksDB::Env 接口的小型的 Append 文件系统BlueFS),通过接口层将第一待写入数据和/或第二待写入数据写入硬盘。
在上文介绍了,基本存储单元可以为对象存储系统中的对象,也可以为文件存储系统中的文件。以基本存储单元为对象为例,则第一映射关系还包括对象的对象逻辑区域信息。如图3所示,分布式存储系统原生存储方案需要维护三层内存映射关系,每次写入数据时均需要在位置信息元数据中更新对象逻辑区域(LE)、数据块位置信息(BL)、硬盘位置信息(PE)这三个信息。为进一步优化对象存储的性能,可以设置对象的对象逻辑区域信息与对象的数据块位置信息一一对应。而通常一个对象对应的硬盘空间大小为4M,故可以设置对象的数据块位置信息对应4M大小的硬盘空间。
如图8所示,应用本申请实施例提供的存储系统写控制方法,覆盖写场景需要将A1’数据替换A1数据,则直接将A1’数据写入A1数据的物理地址;新写场景需要写入B2数据,则在基本存储单元对应的物理地址中确定一个未写入过数据的位置写入B2数据。
相较于原生存储方案为数据块位置信息与硬盘位置信息一一对应,导致需要维护较多的位置信息元数据,且在覆盖写时导致连续数据存储碎片化,本申请实施例提供的存储系统写控制方法,一个基本存储单元对应一个数据块位置信息以及一段对应大小的物理地址,在新写时,在该基本存储单元未被写入的物理地址中为新写的第一待写入数据分配第一实际写入地址并直接写入,同时确定对应的硬盘位置信息,更新至该对象对应的第一映射关系;在覆盖写时,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址并执行对旧数据的覆盖写,一个基本存储单元只需要维护一个位置信息元数据,且在覆盖写时直接写入原地址,不会造成数据碎片化,保证数据的顺序存储,优化了存储性能。
实施例二
图9为本申请实施例提供的一种图4中步骤S402的具体实施方式的流程图。
在上述实施例的基础上,本申请实施例进一步对新写入的第一待写入数据的写入过程进行介绍。在本申请实施例提供的存储系统写控制方法中,S402:对新写入的第一待写入数据,自基本存储单元未被写入的物理地址中为第一待写入数据划分第一实际写入地址以执行对第一待写入数据的写入,确定第一实际写入地址对应的硬盘位置信息,在第一映射关系中更新第一待写入数据的硬盘位置信息与基本存储单元的数据块位置信息对应,具体包括:
S901:若第一待写入数据为非对齐数据,则对第一待写入数据做对齐处理。
S902:根据对齐处理后的第一待写入数据的长度分配对应的物理空间,并根据分配的物理空间自基本存储单元未被写入的物理地址中顺序划分第一实际写入地址,并创建与第一实际写入地址对应的硬盘位置信息放入硬盘位置信息数组。
S903:根据第一实际写入地址在基本存储单元的数据块位置信息中的偏移量在硬盘位置信息数组中查找相应位置,得到第一实际偏移地址。
S904:根据第一实际偏移地址,将第一待写入数据写入操作系统内核。
S905:根据第一待写入数据的硬盘位置信息更新第一映射关系。
在本申请实施例中,在S401中在创建基本存储单元并划分与基本存储单元对应的数据块位置信息以及与其对应的物理地址的第一映射关系时,创建与基本存储单元对应的硬盘位置信息数组,以便在新写入数据后将新写入数据被分配的物理地址的硬盘位置信息填入硬盘位置信息数组进行管理。对第一待写入数据做对齐处理,具体可以为:在第一待写入数据之前或第一待写入数据之后填充预设字符以满足对齐要求。
对于S901来说,对上层传入的第一待写入数据进行对齐与否的判断,即判断第一待写入数据为大写数据还是小写数据,如果是大写数据,则直接进入下一步骤;如果是小写数据,先进行对齐处理后再进入下一步骤。
对于S902来说,根据第一待写入数据的长度分配相应的实际空间地址,及第一实际写入地址(可以参考图6的介绍),而后将第一实际写入地址对应的硬盘位置信息写入硬盘位置数组中。
对于S903来说,根据第一实际写入地址在基本存储单元的数据块位置信息中的偏移量,在硬盘位置信息数组中查找相应的位置,即得到第一实际偏移地址。
对于S904来说,将第一实际偏移地址写入操作系统内核,即由操作系统内核执行将第一待写入数据写入第一实际偏移地址的操作。
对于S905来说,由于第一待写入数据是新写入数据,引起了基本存储单元的位置信息元数据的变化,故将第一待写入数据的硬盘位置信息更新到数据库中相应的位置信息元数据中,完成新写流程。
S905:根据第一待写入数据的硬盘位置信息更新第一映射关系,具体可以包括:
访问数据库获取基本存储单元的位置信息元数据;
将第一待写入数据的硬盘位置信息添加至位置信息元数据中第一映射关系中与基本存储单元的数据块位置信息对应的硬盘位置信息。
实施例三
图10为本申请实施例提供的一种图4中步骤S403的具体实施方式的流程图。
在上述实施例的基础上,本申请实施例进一步对需要进行覆盖写的第二待写入数据的写入过程进行介绍。在本申请实施例提供的存储系统写控制方法中,S403:对需要进行覆盖写的第二待写入数据,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址以执行第二待写入数据对旧数据的覆盖写,具体包括:
S1001:若第二待写入数据为非对齐数据,则对第二待写入数据做对齐处理。
S1002:根据旧数据在基本存储单元的数据块位置信息中的偏移量在硬盘位置信息数组中查找相应位置,确定旧数据的第二实际偏移地址。
S1003:对旧数据进行备份后,根据第二实际偏移地址,将第二待写入数据写入操作系统内核。
在具体实施中,对于S1001来说,对上层传入的第二待写入数据进行对齐与否的判断,即判断第二待写入数据为大写数据还是小写数据,如果是大写数据,则直接进入下一步骤;如果是小写数据,先进行对齐处理后再进入下一步骤。
对于S1002来说,覆盖写即第二待写入数据要写入的地址具有此前写入的旧数据。根据上层传递的第二待写入数据要覆盖的旧数据在基本存储单元的数据块位置信息中的偏移量,在硬盘位置信息数组中查找到相应位置,得到实际偏移地址,即为第二实际写入地址。
对于S1003来说,为了避免在进行第二待写入数据的覆盖写的过程中发生意外导致写入失败,而被覆盖的旧数据无法追回,需要在执行覆盖写之前先对旧数据进行备份。对旧数据进行备份的方法具体可以为:对旧数据进行克隆处理后,将克隆的旧数据写入预写日志系统。具体可以参考原生存储方案的写方案中覆盖写时的数据备份方法,对旧数据进行克隆(clone)后写入预写日志系统(wal)中。
对旧数据进行备份的方法也可以为:调用对应的硬盘的备份功能,在硬盘中对旧数据进行备份。即若采用具有数据回溯功能的硬盘,可以基于硬盘的数据回溯功能,将旧数据在硬盘中完成备份,并在覆盖写失败时触发数据回溯恢复旧数据。
在完成对旧数据的备份后,即可执行将第二待写入数据的第二实际偏移地址写入操作系统内核,即由操作系统内核执行将第二待写入数据写入第二实际偏移地址的操作后,完成覆盖写流程。
采用本申请实施例提供的存储系统写控制方法,由于是将覆盖写的数据直接写在旧数据的物理地址,在覆盖写时未引起基本存储单元的位置信息元数据的变化,故不需要更新位置信息元数据。
其中,在S1001中若第二待写入数据为小写数据时,对第二待写入数据做对齐处理的方法具体可以为:在第二待写入数据之前或第二待写入数据之后填充预设字符以满足对齐要求。而除此以外,由于覆盖写的位置原本有旧数据,也可以对第二待写入数据填充旧数据以满足对齐要求。则对第二待写入数据做对齐处理的方法也可以为:读取旧数据的部分数据填充至第二待写入数据之前或第二待写入数据之后以满足对齐要求。如采用将旧数据备份至预写日志系统(wal)的方式,则是从预写日志系统(wal)读取部分旧数据与第二待写入数据拼接以对第二待写入数据进行对齐处理。如采用硬盘的数据回溯功能实现对旧数据的备份,则可以从硬盘中读取部分旧数据与第二待写入数据拼接以对第二待写入数据进行对齐处理。
实施例四
除了本申请实施例一介绍的先根据事务类型进行场景划分,确定第一待写入数据和第二待写入数据后再分别对小写数据进行对齐处理的方案外,可以先对待写入数据进行对齐处理后再划分写入类型。则在上述实施例的基础上,本申请实施例提供的存储系统写控制方法还可以包括:
对上层传递的待写入数据进行对齐处理后,根据事务类型进行场景划分,确定待写入数据中要进行新写入处理的第一待写入数据和要进行覆盖写处理的第二待写入数据。
在具体实施中,对上层传递的待写入数据进行对齐处理,具体可以为:对待写入数据中所有非对齐数据通过填充预设字符以满足对齐要求。或者,如待写入数据要写入的位置具有旧数据,则也可以读取旧数据与待写入数据拼接后使待写入数据满足对齐要求,拼接方法可以参考上述实施例的说明。
上文详述了存储系统写控制方法对应的各个实施例,在此基础上,本申请还公开了与上述方法对应的存储系统写控制装置、设备及可读存储介质。
实施例五
图11为本申请实施例提供的一种存储系统写控制装置的结构示意图。
如图11所示,本申请实施例提供的存储系统写控制装置包括:
元数据管理单元1101,用于在创建基本存储单元时,生成基本存储单元对应的一个数据块位置信息与对应大小的物理地址的第一映射关系;
新写控制单元1102,用于对新写入的第一待写入数据,自基本存储单元未被写入的物理地址中为第一待写入数据划分第一实际写入地址以执行对第一待写入数据的写入,确定第一实际写入地址对应的硬盘位置信息,在第一映射关系中更新第一待写入数据的硬盘位置信息与基本存储单元的数据块位置信息对应;
覆盖写控制单元1103,用于对需要进行覆盖写的第二待写入数据,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址以执行第二待写入数据对旧数据的覆盖写。
在具体实施中,上述各单元的实现方式可以参考本申请实施例一所介绍的功能模块实现方法。
进一步的,新写控制单元1102具体可以包括:
第一对齐子单元,用于若第一待写入数据为非对齐数据,则对第一待写入数据做对齐处理;
第一分配子单元,用于根据对齐处理后的第一待写入数据的长度分配对应的物理空间,并根据分配的物理空间自基本存储单元未被写入的物理地址中顺序划分第一实际写入地址,并创建与第一实际写入地址对应的硬盘位置信息放入硬盘位置信息数组;
第一查找子单元,用于根据第一实际写入地址在基本存储单元的数据块位置信息中的偏移量在硬盘位置信息数组中查找相应位置,得到第一实际偏移地址;
第一写入子单元,用于根据第一实际偏移地址,将第一待写入数据写入操作系统内核;
第一更新子单元,用于根据第一待写入数据的硬盘位置信息更新第一映射关系。
其中,第一对齐子单元对第一待写入数据做对齐处理,具体可以为:
在第一待写入数据之前或第一待写入数据之后填充预设字符以满足对齐要求。
第一更新子单元根据第一待写入数据的硬盘位置信息更新第一映射关系,具体可以包括:
访问数据库获取基本存储单元的位置信息元数据;
将第一待写入数据的硬盘位置信息添加至位置信息元数据中第一映射关系中与基本存储单元的数据块位置信息对应的硬盘位置信息。
进一步的,覆盖写控制单元1103具体可以包括:
第二对齐子单元,用于若第二待写入数据为非对齐数据,则对第二待写入数据做对齐处理;
第二查找子单元,用于根据旧数据在基本存储单元的数据块位置信息中的偏移量在硬盘位置信息数组中查找相应位置,确定旧数据的第二实际偏移地址;
第二写入子单元,用于对旧数据进行备份后,根据第二实际偏移地址,将第二待写入数据写入操作系统内核。
其中,第二对齐子单元对第二待写入数据做对齐处理,具体可以为:在第二待写入数据之前或第二待写入数据之后填充预设字符以满足对齐要求。
或者,第二对齐子单元对第二待写入数据做对齐处理,具体可以为:读取旧数据的部分数据填充至第二待写入数据之前或第二待写入数据之后以满足对齐要求。
第二写入子单元对旧数据进行备份,具体可以为:对旧数据进行克隆处理后,将克隆的旧数据写入预写日志系统。
或者,第二写入子单元对旧数据进行备份,具体可以为:调用对应的硬盘的备份功能,在硬盘中对旧数据进行备份。
进一步的,本申请实施例提供的存储系统写控制装置还可以包括:
第一划分单元,用于对上层传递的待写入数据根据事务类型进行场景划分,确定待写入数据中要进行新写入处理的第一待写入数据和要进行覆盖写处理的第二待写入数据。
第一划分单元对上层传递的待写入数据根据事务类型进行场景划分,确定待写入数据中要进行新写入处理的第一待写入数据和要进行覆盖写处理的第二待写入数据,具体可以包括:
以待写入数据中在存储系统中无对应的原有数据的部分以及在存储系统中有对应的原有数据且要进行覆盖写的数据超出对应的原有数据占用的空间大小的部分为第一待写入数据;
以待写入数据中在存储系统中有对应的原有数据且能够写入对应的原有数据占用的空间的部分为第二待写入数据。
或者,本申请实施例提供的存储系统写控制装置还可以包括:
第二划分单元,用于对上层传递的待写入数据进行对齐处理后,根据事务类型进行场景划分,确定待写入数据中要进行新写入处理的第一待写入数据和要进行覆盖写处理的第二待写入数据。
第二划分单元对上层传递的待写入数据进行对齐处理,具体可以为:对待写入数据中所有非对齐数据通过填充预设字符以满足对齐要求。
进一步的,本申请实施例提供的存储系统写控制装置还可以包括:
拆分单元,用于预先将第一待写入数据和第二待写入数据均按照固定大小的数据块为单位进行拆分。
进一步的,基本存储单元具体可以为对象,第一映射关系还包括对象的对象逻辑区域信息。
可选的,对像的对象逻辑区域信息与对象的数据块位置信息一一对应。
可选的,对象的数据块位置信息对应4M大小的硬盘空间。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
实施例六
图12为本申请实施例提供的一种存储系统写控制设备的结构示意图。
如图12所示,本申请实施例提供的存储系统写控制设备包括:
存储器1210,用于存储计算机程序1211;
处理器1220,用于执行计算机程序1211,该计算机程序1211被处理器1220执行时实现如上述任意一项实施例所述存储系统写控制方法的步骤。
其中,处理器1220可以包括一个或多个处理核心,比如3核心处理器、8核心处理器等。处理器1220可以采用数字信号处理DSP(Digital Signal Processing)、现场可编程门阵列FPGA(Field-Programmable Gate Array)、可编程逻辑阵列PLA(Programmable LogicArray)中的至少一种硬件形式来实现。处理器1220也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器CPU(CentralProcessing Unit);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1220可以集成有图像处理器GPU(Graphics Processing Unit),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1220还可以包括人工智能AI(Artificial Intelligence)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1210可以包括一个或多个可读存储介质,该可读存储介质可以是非暂态的。存储器1210还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器1210至少用于存储以下计算机程序1211,其中,该计算机程序1211被处理器1220加载并执行之后,能够实现前述任一实施例公开的存储系统写控制方法中的相关步骤。另外,存储器1210所存储的资源还可以包括操作系统1212和数据1213等,存储方式可以是短暂存储或者永久存储。其中,操作系统1212可以为Windows。数据1213可以包括但不限于上述方法所涉及到的数据。
在一些实施例中,存储系统写控制设备还可包括有显示屏1230、电源1240、通信接口1250、输入输出接口1260、传感器1270以及通信总线1280。
本领域技术人员可以理解,图12中示出的结构并不构成对存储系统写控制设备的限定,可以包括比图示更多或更少的组件。
本申请实施例提供的存储系统写控制设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如上所述的存储系统写控制方法,效果同上。
实施例七
需要说明的是,以上所描述的装置、设备实施例仅仅是示意性的,例如,模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个可读存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例所述方法的全部或部分步骤。
为此,本申请实施例还提供一种可读存储介质,该可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如存储系统写控制方法的步骤。
该可读存储介质可以包括:U盘、移动硬盘、只读存储器ROM(Read-Only Memory)、随机存取存储器RAM(Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例中提供的可读存储介质所包含的计算机程序能够在被处理器执行时实现如上所述的存储系统写控制方法的步骤,效果同上。
以上对本申请所提供的一种存储系统写控制方法、装置、设备及可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
Claims (19)
1.一种存储系统写控制方法,其特征在于,包括:
在创建基本存储单元时,生成所述基本存储单元对应的一个数据块位置信息与对应大小的物理地址的第一映射关系;
对新写入的第一待写入数据,自所述基本存储单元未被写入的物理地址中为所述第一待写入数据划分第一实际写入地址以执行对所述第一待写入数据的写入,确定所述第一实际写入地址对应的硬盘位置信息,根据所述第一待写入数据的硬盘位置信息更新所述第一映射关系;
对需要进行覆盖写的第二待写入数据,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址以执行所述第二待写入数据对所述旧数据的覆盖写;
其中,所述在创建基本存储单元时,生成所述基本存储单元对应的一个数据块位置信息与对应大小的物理地址的第一映射关系,具体为:在创建所述基本存储单元时,以整个所述基本存储单元对应一个数据块位置信息,并分配与所述基本存储单元的硬盘存储空间大小的硬盘位置信息,得到所述基本存储单元的位置信息元数据;
所述根据所述第一待写入数据的硬盘位置信息更新所述第一映射关系,包括:
访问数据库获取所述基本存储单元的位置信息元数据;
将所述第一待写入数据的硬盘位置信息添加至所述位置信息元数据中所述第一映射关系中与所述基本存储单元的数据块位置信息对应的硬盘位置信息。
2.根据权利要求1所述的存储系统写控制方法,其特征在于,所述对新写入的第一待写入数据,自所述基本存储单元未被写入的物理地址中为所述第一待写入数据划分第一实际写入地址以执行对所述第一待写入数据的写入,确定所述第一实际写入地址对应的硬盘位置信息,根据所述第一待写入数据的硬盘位置信息更新所述第一映射关系,具体包括:
若所述第一待写入数据为非对齐数据,则对所述第一待写入数据做对齐处理;
根据对齐处理后的所述第一待写入数据的长度分配对应的物理空间,并根据分配的物理空间自所述基本存储单元未被写入的物理地址中顺序划分所述第一实际写入地址,并创建与所述第一实际写入地址对应的硬盘位置信息放入硬盘位置信息数组;
根据所述第一实际写入地址在所述基本存储单元的数据块位置信息中的偏移量在所述硬盘位置信息数组中查找相应位置,得到第一实际偏移地址;
根据所述第一实际偏移地址,将所述第一待写入数据写入操作系统内核;
根据所述第一待写入数据的硬盘位置信息更新所述第一映射关系。
3.根据权利要求2所述的存储系统写控制方法,其特征在于,所述对所述第一待写入数据做对齐处理,具体为:
在所述第一待写入数据之前或所述第一待写入数据之后填充预设字符以满足对齐要求。
4.根据权利要求1所述的存储系统写控制方法,其特征在于,所述对需要进行覆盖写的第二待写入数据,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址以执行所述第二待写入数据对所述旧数据的覆盖写,具体包括:
若所述第二待写入数据为非对齐数据,则对所述第二待写入数据做对齐处理;
根据所述旧数据在所述基本存储单元的数据块位置信息中的偏移量在硬盘位置信息数组中查找相应位置,确定所述旧数据的第二实际偏移地址;
对所述旧数据进行备份后,根据所述第二实际偏移地址,将所述第二待写入数据写入操作系统内核。
5.根据权利要求4所述的存储系统写控制方法,其特征在于,所述对所述第二待写入数据做对齐处理,具体为:
在所述第二待写入数据之前或所述第二待写入数据之后填充预设字符以满足对齐要求。
6.根据权利要求4所述的存储系统写控制方法,其特征在于,所述对所述第二待写入数据做对齐处理,具体为:
读取所述旧数据的部分数据填充至所述第二待写入数据之前或所述第二待写入数据之后以满足对齐要求。
7.根据权利要求4所述的存储系统写控制方法,其特征在于,所述对所述旧数据进行备份,具体为:
对所述旧数据进行克隆处理后,将克隆的所述旧数据写入预写日志系统。
8.根据权利要求4所述的存储系统写控制方法,其特征在于,所述对所述旧数据进行备份,具体为:
调用对应的硬盘的备份功能,在所述硬盘中对所述旧数据进行备份。
9.根据权利要求1所述的存储系统写控制方法,其特征在于,还包括:
对上层传递的待写入数据根据事务类型进行场景划分,确定所述待写入数据中要进行新写入处理的所述第一待写入数据和要进行覆盖写处理的所述第二待写入数据。
10.根据权利要求9所述的存储系统写控制方法,其特征在于,所述对上层传递的待写入数据根据事务类型进行场景划分,确定所述待写入数据中要进行新写入处理的所述第一待写入数据和要进行覆盖写处理的所述第二待写入数据,具体包括:
以所述待写入数据中在存储系统中无对应的原有数据的部分以及在所述存储系统中有对应的原有数据且要进行覆盖写的数据超出对应的原有数据占用的空间大小的部分为所述第一待写入数据;
以所述待写入数据中在所述存储系统中有对应的原有数据且能够写入对应的原有数据占用的空间的部分为所述第二待写入数据。
11.根据权利要求1所述的存储系统写控制方法,其特征在于,还包括:预先将所述第一待写入数据和所述第二待写入数据均按照固定大小的数据块为单位进行拆分。
12.根据权利要求1所述的存储系统写控制方法,其特征在于,还包括:
对上层传递的待写入数据进行对齐处理后,根据事务类型进行场景划分,确定所述待写入数据中要进行新写入处理的所述第一待写入数据和要进行覆盖写处理的所述第二待写入数据。
13.根据权利要求12所述的存储系统写控制方法,其特征在于,所述对上层传递的待写入数据进行对齐处理,具体为:
对所述待写入数据中所有非对齐数据通过填充预设字符以满足对齐要求。
14.根据权利要求1所述的存储系统写控制方法,其特征在于,所述基本存储单元具体为对象,所述第一映射关系还包括所述对象的对象逻辑区域信息。
15.根据权利要求14所述的存储系统写控制方法,其特征在于,所述对象的对象逻辑区域信息与所述对象的数据块位置信息一一对应。
16.根据权利要求14所述的存储系统写控制方法,其特征在于,所述对象的数据块位置信息对应4M大小的硬盘空间。
17.一种存储系统写控制装置,其特征在于,包括:
元数据管理单元,用于在创建基本存储单元时,生成所述基本存储单元对应的一个数据块位置信息与对应大小的物理地址的第一映射关系;
新写控制单元,用于对新写入的第一待写入数据,自所述基本存储单元未被写入的物理地址中为所述第一待写入数据划分第一实际写入地址以执行对所述第一待写入数据的写入,确定所述第一实际写入地址对应的硬盘位置信息,根据所述第一待写入数据的硬盘位置信息更新所述第一映射关系;
覆盖写控制单元,用于对需要进行覆盖写的第二待写入数据,根据要覆盖的旧数据的硬盘位置信息确定第二实际写入地址以执行所述第二待写入数据对所述旧数据的覆盖写;
其中,所述在创建基本存储单元时,生成所述基本存储单元对应的一个数据块位置信息与对应大小的物理地址的第一映射关系,具体为:在创建所述基本存储单元时,以整个所述基本存储单元对应一个数据块位置信息,并分配与所述基本存储单元的硬盘存储空间大小的硬盘位置信息,得到所述基本存储单元的位置信息元数据;
所述根据所述第一待写入数据的硬盘位置信息更新所述第一映射关系,包括:
访问数据库获取所述基本存储单元的位置信息元数据;
将所述第一待写入数据的硬盘位置信息添加至所述位置信息元数据中所述第一映射关系中与所述基本存储单元的数据块位置信息对应的硬盘位置信息。
18.一种存储系统写控制设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至16任意一项所述存储系统写控制方法的步骤。
19.一种可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至16任意一项所述存储系统写控制方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310208795.4A CN116069685B (zh) | 2023-03-07 | 2023-03-07 | 一种存储系统写控制方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310208795.4A CN116069685B (zh) | 2023-03-07 | 2023-03-07 | 一种存储系统写控制方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116069685A CN116069685A (zh) | 2023-05-05 |
CN116069685B true CN116069685B (zh) | 2023-07-14 |
Family
ID=86183813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310208795.4A Active CN116069685B (zh) | 2023-03-07 | 2023-03-07 | 一种存储系统写控制方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116069685B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117270789B (zh) * | 2023-10-25 | 2024-02-06 | 苏州元脑智能科技有限公司 | 一种基于分布式存储的数据控制方法、系统及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704140A (zh) * | 2021-08-27 | 2021-11-26 | 锐掣(杭州)科技有限公司 | 一种固态硬盘地址映射方法及装置 |
CN114756178A (zh) * | 2022-04-29 | 2022-07-15 | 浪潮电子信息产业股份有限公司 | 一种数据存储方法、系统及计算机可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9026717B2 (en) * | 2011-09-30 | 2015-05-05 | SanDisk Technologies, Inc. | Apparatus, system, and method for a persistent object store |
CN104994135B (zh) * | 2015-05-25 | 2018-09-21 | 华为技术有限公司 | 存储系统中融合san及nas存储架构的方法及装置 |
CN114968963A (zh) * | 2021-02-19 | 2022-08-30 | 北京金山云网络技术有限公司 | 文件覆盖写方法、装置和电子设备 |
CN113282249B (zh) * | 2021-07-19 | 2021-10-29 | 苏州浪潮智能科技有限公司 | 一种数据处理方法、系统、设备以及介质 |
CN113568582B (zh) * | 2021-07-30 | 2023-05-26 | 重庆紫光华山智安科技有限公司 | 数据管理方法、装置和存储设备 |
CN115167786B (zh) * | 2022-09-06 | 2023-01-24 | 浪潮电子信息产业股份有限公司 | 一种数据存储方法、装置、系统、设备和介质 |
-
2023
- 2023-03-07 CN CN202310208795.4A patent/CN116069685B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704140A (zh) * | 2021-08-27 | 2021-11-26 | 锐掣(杭州)科技有限公司 | 一种固态硬盘地址映射方法及装置 |
CN114756178A (zh) * | 2022-04-29 | 2022-07-15 | 浪潮电子信息产业股份有限公司 | 一种数据存储方法、系统及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116069685A (zh) | 2023-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107798130B (zh) | 一种分布式存储快照的方法 | |
US6880102B1 (en) | Method and system for managing storage systems containing multiple data storage devices | |
KR100404555B1 (ko) | 데이터 프로세서 제어형 데이터 저장 시스템, 동적 재동기화 방법, 및 컴퓨터 프로그램을 포함하는 컴퓨터 판독 가능한 기록 매체 | |
CN112130768B (zh) | 磁盘阵列在线扩容方法、装置及计算机可读存储介质 | |
CN103761053B (zh) | 一种数据处理方法和装置 | |
US20170177224A1 (en) | Dynamic storage transitions employing tiered range volumes | |
US20060047926A1 (en) | Managing multiple snapshot copies of data | |
US20160011811A1 (en) | Managing Capacity of a Thinly Provisioned Storage System | |
US11061788B2 (en) | Storage management method, electronic device, and computer program product | |
CN103502926A (zh) | 基于扩展区的存储架构 | |
US11320988B2 (en) | Method, apparatus and computer program product for managing disk array | |
CN110737394B (zh) | 管理缓存的方法、装置和计算机程序产品 | |
CN116069685B (zh) | 一种存储系统写控制方法、装置、设备及可读存储介质 | |
US11449402B2 (en) | Handling of offline storage disk | |
CN110196818A (zh) | 缓存数据的方法、缓存设备和存储系统 | |
CN110377529A (zh) | 一种全闪存储系统数据管理的方法、装置以及设备 | |
US11340819B2 (en) | Method, device and computer program product for locking at least two address references pointing to storage block in raid type conversion | |
CN115712500A (zh) | 内存释放、内存恢复方法、装置、计算机设备及存储介质 | |
CN112764662B (zh) | 用于存储管理的方法、设备和计算机程序产品 | |
US11144243B2 (en) | Method and device for managing redundant array of independent disks and computer program product | |
US20230142948A1 (en) | Techniques for managing context information for a storage device | |
CN110832473A (zh) | 日志结构管理系统及方法 | |
US11188258B2 (en) | Distributed storage system | |
CN112368686A (zh) | 一种异构计算系统及内存管理方法 | |
CN114780043A (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 |