CN113703673A - 一种单机数据存储方法及相关装置 - Google Patents
一种单机数据存储方法及相关装置 Download PDFInfo
- Publication number
- CN113703673A CN113703673A CN202110873245.5A CN202110873245A CN113703673A CN 113703673 A CN113703673 A CN 113703673A CN 202110873245 A CN202110873245 A CN 202110873245A CN 113703673 A CN113703673 A CN 113703673A
- Authority
- CN
- China
- Prior art keywords
- data
- storage area
- user data
- metadata
- written
- 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.)
- Granted
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/062—Securing storage systems
- G06F3/0622—Securing storage systems in relation to access
-
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
-
- 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
Abstract
本申请公开了一种单机数据存储方法,包括:获取写入请求;根据存储设备的元数据判断所述写入请求对应的用户数据是否与数据块的大小对齐;若是,则确定所述用户数据的待写入存储区,将所述用户数据写入所述待写入存储区;其中,所述存储设备包括元数据区、主存储区以及从存储区;若否,则根据补全数据将所述用户数据进行补全得到待写入用户数据;确定所述待写入用户数据的待写入存储区,将所述待写入用户数据写入所述待写入存储区;根据所述用户数据对原始元数据进行更新,得到新的元数据,以提高单机存储的性能,提高存储的效率。本申请还公开了一种单机数据存储装置、服务器以及计算机可读存储介质,具有以上有益效果。
Description
技术领域
本申请涉及数据存储技术领域,特别涉及一种单机数据存储方法、单机数据存储装置、服务器以及计算机可读存储介质。
背景技术
随着信息技术的不断发展,出现了分布式存储技术。在分布式存储系统中,所有的数据位置都是基于当前集群状态实时计算的,任意给定的特定数据,在集群中的所有节点中算出来的位置都是确定且唯一的。其中,单机存储引擎负责将经过计算后要的数据,安全稳定的存储下去,所有业务层的数据操作,最终都要落到单机存储设备中。
相关技术中,ceph(分布式文件系统)使用的单机存储引擎有两种,filestore(文件存储器)和bluestore(文件存储器)。其中,filestore依靠文件系统自身的元数据管理和日志文件来保证数据一致性和安全性,但由于数据会经过文件系统之后才会落盘,导致效率低下。其中,bluestore直接与盘交互,将日志文件经过单机数据库存储在性能更好的SSD和NVME设备上,以提高性能。但是,无论采用什么样的单机存储引擎,该单机数据存储方式较为复杂,为了保持数据的安全性需要执行较多的步骤。导致数据存储性能受到了限制,无法提供更高的数据存储效率。
因此,如何提高单机存储引擎的数据存储效率是本领域技术人员关注的重点问题。
发明内容
本申请的目的是提供一种单机数据存储方法、单机数据存储装置、服务器以及计算机可读存储介质,以提高单机存储的性能,提高存储的效率。
为解决上述技术问题,本申请提供一种单机数据存储方法,包括:
获取写入请求;
根据存储设备的元数据判断所述写入请求对应的用户数据是否与数据块的大小对齐;
若是,则确定所述用户数据的待写入存储区,将所述用户数据写入所述待写入存储区;其中,所述存储设备包括元数据区、主存储区以及从存储区;
若否,则根据补全数据将所述用户数据进行补全得到待写入用户数据;确定所述待写入用户数据的待写入存储区,将所述待写入用户数据写入所述待写入存储区;
根据所述用户数据对原始元数据进行更新,得到新的元数据。
可选的,根据存储设备的元数据判断所述写入请求对应的用户数据是否与数据块的大小对齐,包括:
从所述写入请求中解析出所述用户数据;
从内存中获取所述存储设备的元数据;
根据所述存储设备的元数据对所述用户数据进行存储信息计算,得到临时元数据;其中,所述临时元数据包括写入位置和数据长度;
根据所述存储设备的元数据判断所述用户数据是否与数据块的大小对齐。
可选的,根据所述用户数据对原始元数据进行更新,得到新的元数据,包括:
根据所述临时元数据对所述原始元数据进行更新,得到所述新的元数据。
可选的,还包括:
当出现数据写入错误的情况时,根据所述原始元数据对对应的对象数据进行操作。
可选的,还包括:
确定所述存储设备的对象数据大小、存储单元大小以及对象数据存储量;
根据所述对象数据存储量和预设字节数确定所述元数据区的大小;
根据所述对象数据大小和所述对象数据存储量确定所述主存储区的大小;
根据所述对象数据大小、所述对象数据存储量以及预设比例确定所述从存储区的大小。
可选的,确定所述用户数据的待写入存储区,将所述用户数据写入所述待写入存储区,包括:
判断所述用户数据对应的写入位置是否为第一次写入数据;
若是,则将所述用户数据写入所述主存储区或所述从存储区;
若否,则获取所述写入位置的元数据;当所述元数据的存储区为主存储区时,将所述用户数据写入所述从存储区;当所述元数据的存储区为从存储区时,将所述用户数据写入所述主存储区。
可选的,根据补全数据将所述用户数据进行补全得到待写入用户数据;确定所述待写入用户数据的待写入存储区,将所述待写入用户数据写入所述待写入存储区,包括:
判断所述用户数据对应的写入位置是否为第一次写入数据;
若是,则用0将所述用户数据进行补全,得到所述待写入用户数据;将所述待写入用户数据所述主存储区或所述从存储区;
若否,则从所述写入位置读出原始数据,将所述原始数据与所述用户数据进行合并,得到所述待写入用户数据;获取所述原始数据的元数据;当所述元数据的存储区为主存储区时,将所述用户数据写入所述从存储区;当所述元数据的存储区为从存储区时,将所述用户数据写入所述主存储区。
本申请还提供一种单机数据存储装置,包括:
写入请求获取模块,用于获取写入请求;
数据对齐判断模块,用于根据存储设备的元数据判断所述写入请求对应的用户数据是否与数据块的大小对齐;
大写写入模块,用于当所述用户数据与数据块的大小对齐时,确定所述用户数据的待写入存储区,将所述用户数据写入所述待写入存储区;其中,所述存储设备包括元数据区、主存储区以及从存储区;
小写写入模块,用于当所述用户数据与数据块的大小不对齐时,根据补全数据将所述用户数据进行补全得到待写入用户数据;确定所述待写入用户数据的待写入存储区,将所述待写入用户数据写入所述待写入存储区;
元数据更新模块,用于根据所述用户数据对原始元数据进行更新,得到新的元数据。
本申请还提供一种服务器,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如上所述的单机数据存储方法的步骤。
本申请还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的单机数据存储方法的步骤。
本申请所提供的一种单机数据存储方法,包括:获取写入请求;根据存储设备的元数据判断所述写入请求对应的用户数据是否与数据块的大小对齐;若是,则确定所述用户数据的待写入存储区,将所述用户数据写入所述待写入存储区;其中,所述存储设备包括元数据区、主存储区以及从存储区;若否,则根据补全数据将所述用户数据进行补全得到待写入用户数据;确定所述待写入用户数据的待写入存储区,将所述待写入用户数据写入所述待写入存储区;根据所述用户数据对原始元数据进行更新,得到新的元数据。
通过将数据存储在设置有主存储区和从存储区的存储设备中,无论数据是否与数据块的大小对齐,当获取对应的写入请求时,都确定该数据存储的待写入存储区,也就是选择写入主存储区或从存储区中,实现直接对存储盘进行操作,当写入主存储区时并不会对从存储区的数据进行影响,写入从存储区时不会对主存储区进行影响,保持了原始数据的稳定性,出现数据写入错误也不会影响原始的数据,保持数据安全性的同时提高了数据的存储效率。
本申请还提供一种单机数据存储装置、服务器以及计算机可读存储介质,具有以上有益效果,在此不做赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例所提供的一种单机数据存储方法的流程图;
图2为本申请实施例所提供的一种磁盘分区示意图;
图3为本申请实施例所提供的第一种数据写入的示意图;
图4为本申请实施例所提供的第二种数据写入的第一种情况示意图;
图5为本申请实施例所提供的第二种数据写入的第二种情况示意图;
图6为本申请实施例所提供的第三种数据写入的示意图;
图7为本申请实施例所提供的第四种数据写入的第一种情况示意图;
图8为本申请实施例所提供的第四种数据写入的第二种情况示意图;
图9为本申请实施例所提供的一种单机数据存储装置的结构示意图。
具体实施方式
本申请的核心是提供一种单机数据存储方法、单机数据存储装置、服务器以及计算机可读存储介质,以提高单机存储的性能,提高存储的效率。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
相关技术中,ceph使用的单机存储引擎有两种,filestore和bluestore。其中,filestore依靠文件系统自身的元数据管理和日志文件来保证数据一致性和安全性,但由于数据会经过文件系统之后才会落盘,导致效率低下。其中,bluestore直接与盘交互,将日志文件经过单机数据库存储在性能更好的SSD和NVME设备上,以提高性能。但是,无论采用什么样的单机存储引擎,该单机数据存储方式较为复杂,为了保持数据的安全性需要执行较多的步骤。导致数据存储性能受到了限制,无法提供更高的数据存储效率。
因此,本申请提供一种单机数据存储方法,通过将数据存储在设置有主存储区和从存储区的存储设备中,无论数据是否与数据块的大小对齐,当获取对应的写入请求时,都确定该数据存储的待写入存储区,也就是选择写入主存储区或从存储区中,实现直接对存储盘进行操作,当写入主存储区时并不会对从存储区的数据进行影响,写入从存储区时不会对主存储区进行影响,保持了原始数据的稳定性,出现数据写入错误也不会影响原始的数据,保持数据安全性的同时提高了数据的存储效率。
以下通过一个实施例,对本申请提供的一种单机数据存储方法进行说明。
请参考图1,图1为本申请实施例所提供的一种单机数据存储方法的流程图。
本实施例中,该方法可以包括:
S101,获取写入请求;
可见,本步骤旨在获取对应的写入请求。也就是,此时需要对本地的数据盘写入数据。
S102,根据存储设备的元数据判断写入请求对应的用户数据是否与数据块的大小对齐;
在S101的基础上,本步骤旨在根据存储设备的元数据判断写入请求对应的用户数据是否与数据块的大小对齐。也就是,判断写入的用户数据是小写还是大写。
其中,大写为数据与块大小对齐的写入。假设块大小为4K,则写入0-4K,8K-12K等都是大写。小写为数据与块大小不对齐的写入。假设块大小为4K,则写入0-2K,3K-4K,1K-3K等都是小写。另外,对于像2K-8K,0-6K,2K-10K的数据,可以拆分成不同个数的大小写进行写入。
进一步的,本步骤可以包括:
步骤1,从写入请求中解析出用户数据;
步骤2,从内存中获取存储设备的元数据;
步骤3,根据存储设备的元数据对用户数据进行存储信息计算,得到临时元数据;其中,临时元数据包括写入位置和数据长度;
步骤4,根据存储设备的元数据判断用户数据是否与数据块的大小对齐。
可见,本可选方案中主要是说明如何判断用户数据。本可选方案中从写入请求中解析出用户数据,从内存中获取存储设备的元数据,根据存储设备的元数据对用户数据进行存储信息计算,得到临时元数据;其中,临时元数据包括写入位置和数据长度;根据存储设备的元数据判断用户数据是否与数据块的大小对齐。
可见,本可选方案中主要是从内存中读取出对应的存储设备元数据进行对应的判断操作。也就是说,本可选方案中将存储设备的元数据存储于内存中,以便提高读取元数据的速度。其中,还可以将每个对象数据的元数据也存储在内存中,提高读取元数据的速度。其中,存储于内存中的元数据与元数据区的元数据相对应。
S103,若是,则确定用户数据的待写入存储区,将用户数据写入待写入存储区;其中,存储设备包括元数据区、主存储区以及从存储区;
在S102的基础上,本步骤旨在当用户数据为大写的写入时,也就是与数据块的大小对齐,确定用户数据的待写入存储区,将用户数据写入待写入存储区;其中,存储设备包括元数据区、主存储区以及从存储区。
可见,本实施例中的存储介质分区为元数据区、主存储区以及从存储区。其中,元数据区用于存储元数据,主存储区主要是用于存储对象数据。从存储区用于主存储区形成互为备份的存储区,也是用于存储对象数据。
进一步的,本步骤可以包括:
步骤1,判断用户数据对应的写入位置是否为第一次写入数据;
步骤2,若是,则将用户数据写入主存储区或从存储区;
步骤3,若否,则获取写入位置的元数据;当元数据的存储区为主存储区时,将用户数据写入从存储区;当元数据的存储区为从存储区时,将用户数据写入主存储区。
可见,本可选方案中主要是对如何进行大写数据存储进行说明。本可选方案中判断用户数据对应的写入位置是否为第一次写入数据;若是,则将用户数据写入主存储区或从存储区;若否,则获取写入位置的元数据;当元数据的存储区为主存储区时,将用户数据写入从存储区;当元数据的存储区为从存储区时,将用户数据写入主存储区。
也就是,首先需要确该用户数据要写入位置是否有数据,也就是判断该数据单元是否为第一次写入数据。当为第一次写入数据时,说明该写入位置对应的主存储区和从存储区的位置,均不存在数据,可以任意写入,不做具体限定。当该数据单元不是第一次写入数据时,获取该数据单元对应的元数据。其中,元数据记录有每个对象数据实际存储在主存储区还是从存储区中。进一步的,为了避免对该写入位置的原始数据进行影响,本可选方案中将用户数据写入相反的存储区中。例如,该元数据中标识的原始数据存储于主存储区时,则将用户数据写入从存储区。当元数据中标识的原始数据存储于从存储区时,则将用户数据写入主存储区中。避免了对原始数据进行影响,同时当在写入过程中,出现写入错误时,由于原始数据并没有出现问题,保持了原始数据的安全性。
S104,若否,则根据补全数据将用户数据进行补全得到待写入用户数据;确定待写入用户数据的待写入存储区,将待写入用户数据写入待写入存储区;
在S102的基础上,本步骤旨在当用户数据为小写的写入时,也就是与数据块的大小不对齐时,根据补全数据将用户数据进行补全得到待写入用户数据;确定待写入用户数据的待写入存储区,将待写入用户数据写入待写入存储区。
进一步的,本步骤可以包括:
步骤1,判断用户数据对应的写入位置是否为第一次写入数据;
步骤2,若是,则用0将用户数据进行补全,得到待写入用户数据;将待写入用户数据主存储区或从存储区;
步骤3,若否,则从写入位置读出原始数据,将原始数据与用户数据进行合并,得到待写入用户数据;获取原始数据的元数据;当元数据的存储区为主存储区时,将用户数据写入从存储区;当元数据的存储区为从存储区时,将用户数据写入主存储区。
可见,本可选方案中主要是对如何进行小写数据存储进行说明。本可选方案中判断用户数据对应的写入位置是否为第一次写入数据;若是,则用0将用户数据进行补全,得到待写入用户数据;将待写入用户数据主存储区或从存储区;若否,则从写入位置读出原始数据,将原始数据与用户数据进行合并,得到待写入用户数据;获取原始数据的元数据;当元数据的存储区为主存储区时,将用户数据写入从存储区;当元数据的存储区为从存储区时,将用户数据写入主存储区。
也就是,首先需要确该用户数据要写入位置是否有数据,也就是判断该数据单元是否为第一次写入数据。当为第一次写入数据时,说明该写入位置对应的主存储区和从存储区的位置,均不存在数据。可以对该用户数据进行补0然后任意写入,不做具体限定。当该数据单元不是第一次写入数据时,获取该数据单元对应的元数据,读取原始数据,并根据原始数据对该用户数据进行补全,得到待写入用户数据。其中,元数据记录有每个对象数据实际存储在主存储区还是从存储区中。进一步的,为了避免对该写入位置的原始数据进行影响,本可选方案中将用户数据写入相反的存储区中。例如,该元数据中标识的原始数据存储于主存储区时,则将用户数据写入从存储区。当元数据中标识的原始数据存储于从存储区时,则将用户数据写入主存储区中。避免了对原始数据进行影响,同时当在写入过程中,出现写入错误时,由于原始数据并没有出现问题,保持了原始数据的安全性。
S105,根据用户数据对原始元数据进行更新,得到新的元数据。
在S103或S104的基础上,当用户数据写入至存储设备后,根据用户数据对原始元数据进行更新,得到新的元数据。最后,当数据存储于对应的存储区后,就可以将该数据对应的元数据进行更新,以便实现将对象数据进行落盘。
进一步的,本步骤可以包括:
根据临时元数据对原始元数据进行更新,得到新的元数据。
本可选方案中,主要是采用上一可选方案中的临时元数据对原始元数据进行替换,得到新的元数据。也就是,可以将可选方案中已经生成好的临时元数据对原始元数据进行更新,得到新的元数据。
此外,本实施例还可以包括:
当出现数据写入错误的情况时,根据原始元数据对对应的对象数据进行操作。
也就是,在数据写入过程均对原始数据造成影响。可以根据该原始数据对应的原始元数据进行对应的操作,不造成安全性问题,提高数据的安全性。
此外,本实施例还可以包括:
确定存储设备的对象数据大小、存储单元大小以及对象数据存储量;
根据对象数据存储量和预设字节数确定元数据区的大小;
根据对象数据大小和对象数据存储量确定主存储区的大小;
根据对象数据大小、对象数据存储量以及预设比例确定从存储区的大小。
其中,对象数据大小、存储单元大小以及对象数据存储量均可以根据实际的需求情况进行设定,在此不做具体限定。
综上,本实施例通过将数据存储在设置有主存储区和从存储区的存储设备中,无论数据是否与数据块的大小对齐,当获取对应的写入请求时,都确定该数据存储的待写入存储区,也就是选择写入主存储区或从存储区中,实现直接对存储盘进行操作,当写入主存储区时并不会对从存储区的数据进行影响,写入从存储区时不会对主存储区进行影响,保持了原始数据的稳定性,出现数据写入错误也不会影响原始的数据,保持数据安全性的同时提高了数据的存储效率。
以下通过一个具体的实施例,对本申请提供的一种单机数据存储方法做进一步说明。
请参考图2,图2为本申请实施例所提供的一种磁盘分区示意图。
本实施例中,可以对存储设备的盘进行分区,规定以及各个分区的容量配比。可以采用OBJECT_SIZE表示一个存储对象的大小,BLOCK_SIZE表示一个最小的存储单元的大小。对于给定的一块盘,将其划分为三个区。meta区(元数据区),存储meta数据(元数据),为了保证磁盘IO的完整性,以磁盘最小block_size定义一个对象数据的元数据的大小,通常为512个字节,足以存下一个数据对象。
此外,进一步的为了提高数据存储的安全性,设置可以进行回退的功能,一个对象数据要占用两个block_size大小的空间,对于每个对象数据,多保留一份历史元数据,配合data区(主存储区)与journal区(从存储区)互为备份的机制可以将数据回退一个版本。
可以假设这块盘能存下的对象数据个数为X,则meta区(元数据区)大小为2*512*X个字节。data区(主存储区)用于存储真正的对象数据,data区大小为OBJECT_SIZE*X个字节。journal区(从存储区)是对象数据的备份区,与data区互为备份,由于journal区数据可以合并刷新到data区,所以不必与data区维持一样的大小,可以设定为data大小的一定比例,假设该比例为RATIO(如1/100),则journal区大小为OBJECT_SIZE*RATIO*X个字节。通过以上各分区大小与盘的实际大小可得到X的值,该值即为这块儿盘最多能存储的对象数据个数。
其中,每个对象数据的元数据主要记录以下数据:
extent:为bitmap(位图)格式,每个bit代表一个block,1代表有数据,0代表没有数据。
location:为bitmap(位图)格式,每个bit代表一个block,1代表数据位于journal区,0代表数据位于data区。
data_idx:数据在data区的编号,用于计算数据在磁盘上的物理偏移地址,在该对象数据第一次写入data区时分配。
journal_idx:数据在journal区的编号,用于计算数据在磁盘上的物理偏移地址,在该对象第一次写入journal区时分配。
进一步的,根据实际应用场景,对于一个特定对象数据的特定block块,可以包括以下的数据写入场景:
请参考图3,图3为本申请实施例所提供的第一种数据写入的示意图。
第一种,大写且第一次写数据。也就是,数据直接落到data区或journal区,通过data_idx算出磁盘上的物理偏移将数据直接落盘,落盘成功后在内存中更新extent map与location map,然后将元数据落盘,元数据落盘成功之后向上层返回成功;
请参考图4,图4为本申请实施例所提供的第二种数据写入的第一种情况示意图。
请参考图5,图5为本申请实施例所提供的第二种数据写入的第二种情况示意图。
第二种,大写覆盖写。
首先,需要先从内存中读取元数据获取location bit,若为0,代表当前数据在data区,为了不影响原始数据,直接将数据落盘到journal区,成功后更新内存信息同时将meta数据落盘,然后向上返回成功;
请参考图6,图6为本申请实施例所提供的第三种数据写入的示意图。
第三种,小写且第一次写数据。首先将不对齐的部分数据用0补齐,补足到一个完整的BLOCK_SIZE大小,然后执行第一种的操作;
请参考图7,图7为本申请实施例所提供的第四种数据写入的第一种情况示意图。
请参考图8,图8为本申请实施例所提供的第四种数据写入的第二种情况示意图。
第四种,小写覆盖写。首先,从内存中读取元数据获取location bit,从而得到数据所在位置,根据对应的idx(所在存储区的编号)算出偏移量,读出数据。将用户数据与读出的数据合并(使用用户数据覆盖到读出数据的相应位置),将用户数据写入到locationbit相反的区域,成功之后将更改元数据并将元数据落盘,之后向上返回成功。
最后,通过以下的步骤对如何保持数据的安全性进行说明。对于一次用户的写入操作,单机存储引擎的过程,可以包括:
步骤1,单机引擎接收到写入请求;
此阶段发生任何故障,都不影响数据的一致性,因为数据还未开始处理。
步骤2,解析写入请求,从内存中获取存储设备的盘的元数据;
此阶段发生任何故障,都不影响数据的一致性,原因同上。
步骤3,根据元数据计算是否有小写需要补零或者先从盘上读取数据并合并;要写入的位置与数据长度,并将这些信息存储起来,同时更新生成一个临时的元数据;
此阶段发生任何故障,都不影响数据的一致性,原因同上。
步骤4,按照步骤3中得到信息进行数据读取,合并,和写入操作;
此阶段若发生故障,数据可能在盘上只写入了一半,若故障未导致服务挂掉,此时因为并没有更新内存中的元数据,所以落盘的数据都是无效的,下一次写入拿到依然是之前的元数据信息,所以不会对数据有任何影响;若故障导致服务挂掉,服务再次拉起的时候,会从meta区把元数据加载到内存中,此时的元数据也是没有被更改过的,因此也不会导致数据不一致。
步骤5,将内存中的临时元数据落盘;
由于元数据的大小设定为磁盘的最小写入单元(512字节),所以只有两种情况,要么写入512字节全部写入成功,要么写入全部失败,不会发生512字节有一半写入成功另一半写入失败的情况。所以元数据要么落盘成功,要么落盘失败,不会发生不一致。
步骤6,将临时元数据更新到内存中的元数据中;
此阶段若发生故障,data区,journal区与meta区的数据都已经落盘,但内存元数据未更新,若故障未导致服务挂掉,则本次写入到盘上的数据全部无效,不会产生不一致;若故障导致服务挂掉,将meta区的数据加载到盘上时会加载到最后一次写入的完整数据,此时元数据与数据区的数据也都是完全一致的。
可见,本实施例通过将数据存储在设置有主存储区和从存储区的存储设备中,无论数据是否与数据块的大小对齐,当获取对应的写入请求时,都确定该数据存储的待写入存储区,也就是选择写入主存储区或从存储区中,实现直接对存储盘进行操作,当写入主存储区时并不会对从存储区的数据进行影响,写入从存储区时不会对主存储区进行影响,保持了原始数据的稳定性,出现数据写入错误也不会影响原始的数据,保持数据安全性的同时提高了数据的存储效率。
下面对本申请实施例提供的单机数据存储装置进行介绍,下文描述的单机数据存储装置与上文描述的单机数据存储方法可相互对应参照。
请参考图9,图9为本申请实施例所提供的一种单机数据存储装置的结构示意图。
本实施例中,该装置可以包括:
写入请求获取模块100,用于获取写入请求;
数据对齐判断模块200,用于根据存储设备的元数据判断写入请求对应的用户数据是否与数据块的大小对齐;
大写写入模块300,用于当用户数据与数据块的大小对齐时,确定用户数据的待写入存储区,将用户数据写入待写入存储区;其中,存储设备包括元数据区、主存储区以及从存储区;
小写写入模块400,用于当用户数据与数据块的大小不对齐时,根据补全数据将用户数据进行补全得到待写入用户数据;确定待写入用户数据的待写入存储区,将待写入用户数据写入待写入存储区;
元数据更新模块500,用于根据用户数据对原始元数据进行更新,得到新的元数据。
本申请实施例还提供一种服务器,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如以上实施例所述的单机数据存储方法的步骤。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如以上实施例所述的单机数据存储方法的步骤。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的一种单机数据存储方法、单机数据存储装置、服务器以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (10)
1.一种单机数据存储方法,其特征在于,包括:
获取写入请求;
根据存储设备的元数据判断所述写入请求对应的用户数据是否与数据块的大小对齐;
若是,则确定所述用户数据的待写入存储区,将所述用户数据写入所述待写入存储区;其中,所述存储设备包括元数据区、主存储区以及从存储区;
若否,则根据补全数据将所述用户数据进行补全得到待写入用户数据;确定所述待写入用户数据的待写入存储区,将所述待写入用户数据写入所述待写入存储区;
根据所述用户数据对原始元数据进行更新,得到新的元数据。
2.根据权利要求1所述的单机数据存储方法,其特征在于,根据存储设备的元数据判断所述写入请求对应的用户数据是否与数据块的大小对齐,包括:
从所述写入请求中解析出所述用户数据;
从内存中获取所述存储设备的元数据;
根据所述存储设备的元数据对所述用户数据进行存储信息计算,得到临时元数据;其中,所述临时元数据包括写入位置和数据长度;
根据所述存储设备的元数据判断所述用户数据是否与数据块的大小对齐。
3.根据权利要求2所述的单机数据存储方法,其特征在于,根据所述用户数据对原始元数据进行更新,得到新的元数据,包括:
根据所述临时元数据对所述原始元数据进行更新,得到所述新的元数据。
4.根据权利要求1所述的单机数据存储方法,其特征在于,还包括:
当出现数据写入错误的情况时,根据所述原始元数据对对应的对象数据进行操作。
5.根据权利要求1所述的单机数据存储方法,其特征在于,还包括:
确定所述存储设备的对象数据大小、存储单元大小以及对象数据存储量;
根据所述对象数据存储量和预设字节数确定所述元数据区的大小;
根据所述对象数据大小和所述对象数据存储量确定所述主存储区的大小;
根据所述对象数据大小、所述对象数据存储量以及预设比例确定所述从存储区的大小。
6.根据权利要求1所述的单机数据存储方法,其特征在于,确定所述用户数据的待写入存储区,将所述用户数据写入所述待写入存储区,包括:
判断所述用户数据对应的写入位置是否为第一次写入数据;
若是,则将所述用户数据写入所述主存储区或所述从存储区;
若否,则获取所述写入位置的元数据;当所述元数据的存储区为主存储区时,将所述用户数据写入所述从存储区;当所述元数据的存储区为从存储区时,将所述用户数据写入所述主存储区。
7.根据权利要求1所述的单机数据存储方法,其特征在于,根据补全数据将所述用户数据进行补全得到待写入用户数据;确定所述待写入用户数据的待写入存储区,将所述待写入用户数据写入所述待写入存储区,包括:
判断所述用户数据对应的写入位置是否为第一次写入数据;
若是,则用0将所述用户数据进行补全,得到所述待写入用户数据;将所述待写入用户数据所述主存储区或所述从存储区;
若否,则从所述写入位置读出原始数据,将所述原始数据与所述用户数据进行合并,得到所述待写入用户数据;获取所述原始数据的元数据;当所述元数据的存储区为主存储区时,将所述用户数据写入所述从存储区;当所述元数据的存储区为从存储区时,将所述用户数据写入所述主存储区。
8.一种单机数据存储装置,其特征在于,包括:
写入请求获取模块,用于获取写入请求;
数据对齐判断模块,用于根据存储设备的元数据判断所述写入请求对应的用户数据是否与数据块的大小对齐;
大写写入模块,用于当所述用户数据与数据块的大小对齐时,确定所述用户数据的待写入存储区,将所述用户数据写入所述待写入存储区;其中,所述存储设备包括元数据区、主存储区以及从存储区;
小写写入模块,用于当所述用户数据与数据块的大小不对齐时,根据补全数据将所述用户数据进行补全得到待写入用户数据;确定所述待写入用户数据的待写入存储区,将所述待写入用户数据写入所述待写入存储区;
元数据更新模块,用于根据所述用户数据对原始元数据进行更新,得到新的元数据。
9.一种服务器,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7任一项所述的单机数据存储方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的单机数据存储方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110873245.5A CN113703673B (zh) | 2021-07-30 | 2021-07-30 | 一种单机数据存储方法及相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110873245.5A CN113703673B (zh) | 2021-07-30 | 2021-07-30 | 一种单机数据存储方法及相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113703673A true CN113703673A (zh) | 2021-11-26 |
CN113703673B CN113703673B (zh) | 2023-09-22 |
Family
ID=78651182
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110873245.5A Active CN113703673B (zh) | 2021-07-30 | 2021-07-30 | 一种单机数据存储方法及相关装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113703673B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086168A (zh) * | 2022-08-19 | 2022-09-20 | 北京全路通信信号研究设计院集团有限公司 | 一种车载设备通信参数更新存储方法、系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180203606A1 (en) * | 2015-09-09 | 2018-07-19 | Alibaba Group Holding Limited | Method and device for writing data and acquiring data in a distributed storage system |
CN111104066A (zh) * | 2019-12-17 | 2020-05-05 | 华中科技大学 | 数据写入方法、装置及存储服务器和计算机可读存储介质 |
CN111625191A (zh) * | 2020-05-21 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种数据读写方法、装置及电子设备和存储介质 |
CN111625546A (zh) * | 2020-05-07 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种数据写入方法、装置、设备、介质 |
CN111737221A (zh) * | 2020-06-19 | 2020-10-02 | 浪潮电子信息产业股份有限公司 | 集群文件系统的数据读写方法、装置及设备和存储介质 |
-
2021
- 2021-07-30 CN CN202110873245.5A patent/CN113703673B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180203606A1 (en) * | 2015-09-09 | 2018-07-19 | Alibaba Group Holding Limited | Method and device for writing data and acquiring data in a distributed storage system |
CN111104066A (zh) * | 2019-12-17 | 2020-05-05 | 华中科技大学 | 数据写入方法、装置及存储服务器和计算机可读存储介质 |
CN111625546A (zh) * | 2020-05-07 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种数据写入方法、装置、设备、介质 |
CN111625191A (zh) * | 2020-05-21 | 2020-09-04 | 苏州浪潮智能科技有限公司 | 一种数据读写方法、装置及电子设备和存储介质 |
CN111737221A (zh) * | 2020-06-19 | 2020-10-02 | 浪潮电子信息产业股份有限公司 | 集群文件系统的数据读写方法、装置及设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
刘星;江松;王洋;范小朋;须成忠;: "一种基于小数据同步写的回写I/O调度器", 软件学报, no. 08, pages 46 - 59 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086168A (zh) * | 2022-08-19 | 2022-09-20 | 北京全路通信信号研究设计院集团有限公司 | 一种车载设备通信参数更新存储方法、系统 |
CN115086168B (zh) * | 2022-08-19 | 2022-11-22 | 北京全路通信信号研究设计院集团有限公司 | 一种车载设备通信参数更新存储方法、系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113703673B (zh) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110531940B (zh) | 视频文件处理方法及装置 | |
US20050163014A1 (en) | Duplicate data storing system, duplicate data storing method, and duplicate data storing program for storage device | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
US9990150B2 (en) | Method to provide transactional semantics for updates to data structures stored in a non-volatile memory | |
CN115437581B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN110399333B (zh) | 删除快照的方法、设备和计算机程序产品 | |
CN107577558A (zh) | 一种云存储的快照方法及装置 | |
CN111638995A (zh) | 元数据备份方法、装置及设备、存储介质 | |
US9858287B2 (en) | Storage system | |
CN113703673B (zh) | 一种单机数据存储方法及相关装置 | |
CN112835528A (zh) | 脏页刷新方法和装置、电子设备和存储介质 | |
US20050262033A1 (en) | Data recording apparatus, data recording method, program for implementing the method, and program recording medium | |
CN110879764B (zh) | 一种位图设置方法、装置、设备及可读存储介质 | |
CN114138566B (zh) | 虚拟机的数据存储方法、装置、虚拟机及存储介质 | |
CN114780489B (zh) | 一种实现分布式块存储底层gc的方法及装置 | |
CN115422137A (zh) | 文件创建方法、装置、电子设备及计算机可读存储介质 | |
CN111444114B (zh) | 一种非易失性内存中数据的处理方法、装置及系统 | |
CN114138192A (zh) | 存储节点在线升级方法、装置、系统及存储介质 | |
CN114756523A (zh) | 一种分布式存储方法、装置以及介质 | |
CN112307022A (zh) | 一种元数据修复方法及相关装置 | |
CN112286725A (zh) | 数据处理方法、装置及电子设备 | |
CN111176886A (zh) | 一种数据库模式的切换方法、装置及电子设备 | |
CN112463025B (zh) | 一种瓦记录磁盘数据管理方法、装置及电子设备 | |
CN114138191B (zh) | 一种存储池数据校验方法、系统、设备以及介质 | |
CN111177091B (zh) | 基于xfs文件系统录像预分配存储方法、系统及存储介质 |
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 |