CN114490540A - 数据存储方法、介质、装置和计算设备 - Google Patents

数据存储方法、介质、装置和计算设备 Download PDF

Info

Publication number
CN114490540A
CN114490540A CN202210134930.0A CN202210134930A CN114490540A CN 114490540 A CN114490540 A CN 114490540A CN 202210134930 A CN202210134930 A CN 202210134930A CN 114490540 A CN114490540 A CN 114490540A
Authority
CN
China
Prior art keywords
data
storage
target
storage space
space
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.)
Pending
Application number
CN202210134930.0A
Other languages
English (en)
Inventor
李小翠
徐逸锋
张晓龙
王盼
刘秀颖
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Langhe Technology Co Ltd
Original Assignee
Hangzhou Langhe Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hangzhou Langhe Technology Co Ltd filed Critical Hangzhou Langhe Technology Co Ltd
Priority to CN202210134930.0A priority Critical patent/CN114490540A/zh
Publication of CN114490540A publication Critical patent/CN114490540A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1727Details of free space management performed by the file system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Abstract

本公开的实施方式提供一种数据存储方法、介质、装置和计算设备,在本地文件系统设置包含多个存储空间的文件池,并将数据写入请求对应的日志数据和目标数据,分别存储至本地文件系统的第一目标存储空间和第二目标存储空间。本公开的实施例中,由于创建了文件池,可以直接通过文件池中的存储空间来存储上述数据,从而无需在数据存储过程中重新创建存储空间,也就无需重新创建元数据,可以提升数据存储效率,同时大幅降低数据存储过程中的写入放大,进而保障分布式存储系统中硬盘的使用寿命。

Description

数据存储方法、介质、装置和计算设备
技术领域
本公开的实施方式涉及计算机技术领域,更具体地,本公开的实施方式涉及一种数据存储方法、介质、装置和计算设备。
背景技术
本部分旨在为权利要求书中陈述的本公开的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
随着计算机技术的不断发展,数据规模也越来越大,采用分布式存储是解决目前大规模数据存储的主要技术手段,具体而言,分布式存储包含多个节点,在写入数据时,会按一定存储规则,充分利用每个节点的存储能力,将数据写入各个节点的存储空间中。
然而,相关技术中,在将数据写入存储空间的过程中,均需要更新各存储空间的元数据,并将更新后的元数据同步写入存储空间,此过程会增加写入放大(Writeamplification,WA),进而缩短分布式存储系统中硬盘的使用寿命。
发明内容
本公开提供一种数据存储方法、介质、装置和计算设备。
在本公开实施方式的第一方面中,提供了一种数据存储方法,应用于分布式存储系统,分布式存储系统中包括至少一个主节点和本地文件系统,主节点包括第一内存空间和状态机,本地文件系统包括文件池,文件池包括多个存储空间;
数据存储方法包括:响应于主节点接收到客户端发送的数据写入请求,获取数据写入请求对应的日志数据;将日志数据存储至第一内存空间,其中,数据写入请求中包括目标存储位置和目标数据,数据写入请求用于请求主节点将目标数据写入目标存储位置;主节点从本地文件系统中确定第一目标存储空间,并将日志数据存储至第一目标存储空间;状态机从本地文件系统中确定第二目标存储空间,并将目标数据存储至第二目标存储空间。
在本公开实施方式的第二方面中,提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上述第一方面中的任一实施例的数据存储方法。
在本公开实施方式的第三方面中,提供了一种数据存储装置,应用于分布式存储系统,分布式存储系统中包括至少一个主节点和本地文件系统,主节点包括第一内存空间和状态机,本地文件系统包括文件池,文件池包括多个存储空间;数据存储装置包括:获取模块,用于响应于主节点接收到客户端发送的数据写入请求,获取数据写入请求对应的日志数据;第一存储模块,用于将日志数据存储至第一内存空间,其中,数据写入请求中包括目标存储位置和目标数据,数据写入请求用于请求主节点将目标数据写入目标存储位置;第二存储模块,用于主节点从本地文件系统中确定第一目标存储空间,并将日志数据存储至第一目标存储空间;第三存储模块,用于状态机从本地文件系统中确定第二目标存储空间,并将目标数据存储至第二目标存储空间。
在本公开实施方式的第四方面中,提供了一种计算设备,包括:至少一个处理器和存储器;存储器存储计算机执行指令;至少一个处理器执行存储器存储的计算机执行指令,使得至少一个处理器执行如上述第一方面中的任一实施例的数据存储方法。
本公开的实施例提供一种数据存储方法、介质、装置和计算设备,在本地文件系统设置包含多个存储空间的文件池,并将数据写入请求对应的日志数据和目标数据,分别存储至本地文件系统的第一目标存储空间和第二目标存储空间。本公开实施例中,由于创建了文件池,可以直接通过文件池中的存储空间来存储上述数据,从而无需在数据存储过程中重新创建存储空间,也就无需重新创建元数据,可以提升数据存储效率,同时大幅降低数据存储过程中的写入放大,进而保障分布式存储系统中硬盘的使用寿命。
附图说明
通过参考附图阅读下文的详细描述,本公开示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本公开的若干实施方式,其中:
图1为本公开实施方式提供的应用场景示意图;
图2为本公开一实施方式提供的分布式存储系统的架构示意图;
图3为本公开一实施例提供的数据存储方法的流程示意图;
图4为本公开另一实施例提供的数据存储方法的流程示意图;
图5为本公开另一实施方式提供的分布式存储系统的架构示意图;
图6为本公开又一实施例提供的数据存储方法的流程示意图;
图7为本公开一实施例提供的存储介质的结构示意图;
图8为本公开一实施例提供的数据存储装置的结构示意图;
图9为本公开一实施例提供的计算设备的结构示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本公开的实施方式,提出了一种数据存储方法、介质、装置和计算设备。
需要理解的是,在本文中所涉及的术语以及术语的含义如下:
分布式存储系统:数据分散存储在多台独立的设备上。传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
Raft:分布式一致性算法,从发布到现在,已经有十几种语言的raft的框架实现,包括etcd、braft、consul等。
元数据(Metadata):又称中介数据、中继数据,为描述数据的数据(data aboutdata),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
写入放大(Write amplification,WA):是闪存和固态硬盘(SSD)中一种不良的现象,即实际写入的物理数据量是写入数据量的多倍。
变更时间(change time,ctime):指文件本身(权限、所属组、位置...)最后被变更的时间。
修改时间(modify time,mtime):指文件内容最后被修改的时间。
访问时间(access time,atime):指文件最后被读取的时间。
此外,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本公开的若干代表性实施方式,详细阐释本公开的原理和精神。
发明概述
随着计算机技术的不断发展,数据规模也越来越大,采用分布式存储是解决目前大规模数据存储的主要技术手段,具体而言,分布式存储包含多个节点,在写入数据时,会按一定存储规则,充分利用每个节点的存储能力,将数据写入各个节点的存储空间中。
相关技术中,在将目标数据写入本地文件系统的存储空间的过程中,均需要更新各存储空间的元数据,并将更新后的元数据同步写入存储空间。
具体的,当本地文件系统中不存在用于存储目标数据的文件时,写入目标数据过程中,首先要创建存储空间(例如是文件夹),在进行目标数据写入,此过程需要创建元数据;当本地文件系统中存在用于存储目标数据的存储空间时,写入目标数据时需要更新元数据(例如是,基于空间分配、访问时间、状态修改时间、修改时间等数据的更新而引起的元数据更新)。
上述两种存储方式,均需要将元数据进行更新并同步写入存储空间中,此过程会增加写入放大,且由于元数据的数据量是一定的,目标数据量越小,其占写入数据总量的比例越小,使得写入放大越大,进而缩短分布式存储系统中硬盘的使用寿命。
有鉴于此,本公开的实施例提供一种数据存储方法、介质、装置和计算设备,在本地文件系统设置包含多个存储空间的文件池,并将数据写入请求对应的日志数据和目标数据,分别存储至本地文件系统的第一目标存储空间和第二目标存储空间。本公开实施例中,由于创建了文件池,可以直接通过文件池中的存储空间来存储上述数据,从而无需在数据存储过程中重新创建存储空间,也就无需重新创建元数据,可以提升数据存储效率,同时大幅降低数据存储过程中的写入放大,进而保障分布式存储系统中硬盘的使用寿命。
在介绍了本公开的基本原理之后,下面具体介绍本公开的各种非限制性实施方式。
应用场景总览
首先参考图1,图1为本公开实施方式提供的应用场景示意图。该应用场景涉及客户端和分布式存储系统。
其中,客户端可以是能够生成数据、并需要存储数据的设备。示例性的,客户端可以是个人数字处理(personal digital assistant,简称PDA)设备、具有无线通信功能的手持设备(例如智能手机、平板电脑)、计算设备(例如个人电脑(personal computer,简称PC))、车载设备、可穿戴设备(例如智能手表、智能手环)、智能家居设备(例如智能显示设备)等,本公开实施例以手机为例示出,但不以此为限定。
在一些实施中,分布式存储系统可以包括多个分布式存储节点,并通过该多个分布式存储节点对客户端发送的数据进行存储。其中,分布式存储节点可以包括但不限于服务器、主机或其他电子设备(其他电子设备中包括有用于存储数据的可读存储介质,可读存储介质可以包括但不限于硬盘、磁盘等本地存储系统),本公开实施例中的分布式存储系统以服务器为例示出,但不以此为限定。
客户端和分布式存储系统之间可以通过有线或无线网络连接。客户端可以将需要存储的数据发送至分布式存储系统进行存储,其中,客户端存储的数据可以为一个完整的数据/文件,或者为完整的数据/文件中的一部分数据。比如,数据可以为客户端单次需要从分布式存储系统中读取的所有数据,这里的“所有数据”为客户端单次获取到的总数据,通常为完整的数据/文件中的一部分数据。
示例性方法
下面结合图1的应用场景,参考图2-5来描述根据本公开示例性实施方式的数据存储方法。需要注意的是,上述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
参考图2,图2为本公开一实施方式提供的分布式存储系统的架构示意图。如图2所示,该分布式存储系统包括:至少一个主节点和本地文件系统。
其中,主节点中包括第一内存空间和状态机,本地文件系统包括文件池,文件池包括多个存储空间。
应当理解的是,本公开实施例中的主节点(又称名称节点,NameNode)可以作为分布式存储系统的中心服务器,负责管理分布式存储系统的命名空间及客户端对文件的访问事件等。
对于分布式存储系统中的主节点的确定方式,本公开实施例不做具体限定,例如,可以根据用户需求指定分布式存储系统中的某一节点为主节点;或者,对于使用raft协议的分布式存储系统来说,raft协议可以选举出的主节点,从而通过主节点接收数据请求,并同步到其他节点,以实现分布式存储系统中多个节点间的数据一致性问题。
在本公开实施例中,主节点用于接收客户端发送的数据写入请求,并根据数据写入请求将其中的目标数据写入本地文件系统中。
在一些实施例中,本地文件系统包括用于存储数据的可读存储介质,可读存储介质可以包括但不限于硬盘、磁盘等本地存储系统,本地文件系统用于通过这些可读存储介质对客户端发送的数据进行持久化存储。
其中,文件池由多个存储空间组成,各存储空间可以为文件夹等形式。也就是说,在本公开的实施例中,在本地文件系统中预先创建有多个文件夹,用于存储客户端发送的数据。
需要说明的是,本地文件系统中除了文件池中的存储空间外,还设置有其他的存储空间,这些存储空间也可以用于对数据进行持久化存储。应理解,至于采用本地文件系统对数据进行持久化存储的具体方式,在后续方法实施例中示出。
另外需要说明的是,在分布式存储系统中,通常会涉及到状态的改变,例如,数据存储状态的改变等(例如是,数据是否完成存储等),而状态机用于管理分布式存储系统中的各种状态,并对状态进行更新。
应当理解的是,本公开实施例中提供的分布式存储系统的架构为示例性示出,但不作为一种限制,在实际应用中,该分布式存储系统中还可以包括其他模块,本公开实施例不做具体限定。
接下来,结合图3对上述分布式存储系统的数据存储方法进行详细说明。
图3为本公开一实施例提供的数据存储方法的流程示意图。如图3所示,本公开实施例提供的数据存储方法包括如下步骤:
S301、客户端向主节点发送数据写入请求。
其中,数据写入请求中包括目标存储位置和目标数据,数据写入请求用于请求主节点将目标数据写入目标存储位置。
本公开实施例中,对于数据写入请求的数据格式不做具体限定,示例性的,数据写入请求可以为以下格式:{log1:write(name=/log/chunk1,data=“b”)}。
其中,“log()”用于指示用以存储日志数据的目标存储位置,“write()”用于表示写入的数据内容,“name=/log/chunk1”用于表示目标数据的目标存储位置为“/log/chunk1”,“data()”为待写入的目标数据。
也就是说,上述数据写入请求用于指示:将该写入请求对应的日志数据写入log1所对应的位置,将目标数据‘b’写入‘/log/chunk1’所对应的位置。
需要说明的是,在数据写入请求中还可以包括其他信息,例如是,待写入的目标数据的长度、偏移值等,本公开实施例不做具体限定。
示例性的,数据写入请求可以为以下格式:{log1:write(name=/log/chunk1,offest=0,len=4,data=b)},其中,“offest=0”用于指示存储时的偏移值为0,“len=4”用于指示目标数据的字符长度为4。
作为一种可选的实施例,还可以在数据写入请求中携带命名信息,用于指示将目标数据存储至本地存储系统后的命名。
S302、响应于主节点接收到客户端发送的数据写入请求,获取数据写入请求对应的日志数据。
其中,日志数据用于记录客户端发送的数据写入请求。在一种可选的实施方式中,日志数据即数据写入请求。
在另一种可选的实施方式中,可以将数据写入请求进行序列化处理,获得日志数据。
具体的,可以基于序列化机制将日志数据转换为预设格式,其中,序列化机制的实现是依靠格式器(Formatter)而完成的,格式器可以将日志数据转化到能被存储并传输的预设格式,至于预设格式,可以依据不同的分布式存储器进行设定,本公开实施例不做具体限定。
由于客户端的类别不同,其发送的数据写入请求的格式也不尽相同,本公开实施例中,通过将数据写入请求进行序列化处理,进而获得预设格式的日志数据,可以便于对日志数据进行存储和传输,提升分布式存储系统的性能。
S303、将日志数据存储至第一内存空间。
S304、主节点从本地文件系统中确定第一目标存储空间,并将日志数据存储至第一目标存储空间。
具体的,获取数据写入请求中用于指示日志数据的目标存储位置,并根据本地文件系统中的存储空间与该目标存储位置的匹配关系,确定与目标存储位置匹配的第一目标存储空间。
仍以上述为例,日志数据对应的目标存储位置例如是“log()”,则本地文件系统中与“log()”相匹配的存储空间为第一目标存储空间。
应当理解的是,第一目标存储空间可以为文件池中的存储空间,也可以为本地文件系统的其他存储空间,本申请实施例不做具体限定。
如图2所示,作为一种可选的实施方式,当本地文件系统中存在与该目标存储位置匹配的存储空间时,确定该存储空间为第一目标存储空间;相应的,当本地文件系统中不存在与该目标存储位置匹配的存储空间时,从文件池中获取一个存储空间作为该第一目标存储空间。
本申请实施例中,通过将数据写入请求对应的日志数据持久化存储在第一目标存储空间中,从而实现日志数据的可追溯性,当出现目标数据丢失、损坏等情况时,可以从该第一目标存储空间中重新获取目标数据,进而提升分布式管理系统的可靠性,保障数据安全。
S305、状态机从本地文件系统中确定第二目标存储空间,并将目标数据存储至第二目标存储空间。
相应的,获取数据写入请求中用于指示目标数据的目标存储位置,并根据本地文件系统中的存储空间与该目标存储位置的匹配关系,确定与目标存储位置匹配的第二目标存储空间。
仍以上述为例,目标数据“b”对应的目标存储位置为“/log/chunk1”,则本地文件系统中与“/log/chunk1”相匹配的存储空间为第二目标存储空间。
类似的,第二目标存储空间可以为文件池中的存储空间,也可以为本地文件系统的其他存储空间,本申请实施例不做具体限定。
相关技术中,在向本地文件系统中存储上述数据时,若本地存储系统中不存在与数据相匹配的目标存储位置,则需要重新创建存储空间,此过程会耗费一定的时间,从而造成存储效率低的情况,极大的影响用户体验,且,创建存储空间时需要创建、更新元数据,导致写入放大较大,不利于本地文件系统中硬盘的使用寿命。
相比上述技术,本公开实施例中,由于在本地文件系统创建了文件池,且各个存储空间的元数据已经在创建时被写入,在后续的存储过程中可以直接存储,而无需创建元数据。进而可以直接通过文件池中的存储空间来存储数据,无需再重新创建存储空间,也就无需重新创建元数据,可以大幅降低数据存储过程中的写入放大,保障分布式存储系统中硬盘的使用寿命。
图4为本公开另一实施方式提供的数据存储方法的流程示意图。应理解,本公开实施例提供的数据存储方法应用于分布式存储系统。如图4所示,本公开实施例提供的数据存储方法具体包括如下步骤:
S401、响应于主节点接收到客户端发送的数据写入请求,获取数据写入请求对应的日志数据。
S402、将日志数据存储至第一内存空间。
需要说明的是,步骤S401~S402与图3所示实施例中的步骤S302~S303的实现原理与有益效果类似,具体可参照上述实施例,此处不做赘述。
S403、根据日志数据,确定本地文件系统中是否包含与日志数据匹配的第一存储空间。
具体的,首先根据日志数据,确定日志数据对应的目标存储位置,并根据该目标存储位置查找本地文件系统中除文件池之外的存储空间。
S404、响应于本地文件系统中不包含第一存储空间,从文件池中获取第二存储空间,并确定第二存储空间为第一目标存储空间。
一方面,若本地文件系统中除文件池之外的存储空间与该目标存储位置均不匹配,则说明本地文件系统中不包含第一存储空间。
作为一种可选的实施方式,可以从文件池中获取第二存储空间,用于存储该日志数据。
需要说明的是,对于第二存储空间的确定方式,本公开实施例不做具体限定。例如,可以从文件池中随机进行确定第二存储空间;或者,也可以根据目标存储位置对应的存储空间大小、存储空间类别等信息,确定文件池中与目标存储位置的匹配度最高的存储空间为第二存储空间。
进一步的,将第二存储空间作为第一目标存储空间,将日志数据存储至该第二存储空间中。
S405、响应于本地文件系统中包含第一存储空间,确定第一存储空间为第一目标存储空间。
另一方面,若本地文件系统中除文件池之外的存储空间中包含与该目标存储位置相匹配的第一存储空间,则直接将第一存储空间作为第一目标存储空间,并将日志数据存储至该第一存储空间中。
本公开的实施例中,首先从文件池之外的存储空间中确定第一目标存储空间,当这些存储空间中存在第一目标存储空间时,就无需进行其他的匹配过程,可以进一步提升存储空间的获取效率,进而提升存储效率。
另外,当这些存储空间中不存在第一目标存储空间时,再从文件池中确定第一目标存储空间,将文件池中的存储空间作为备用存储空间,可以提升存储空间获取过程的可靠性,防止由于不存在合适的存储空间而导致存储失败的情况。且,通过文件池中的存储空间来存储数据时,无需再重新创建存储空间,也就无需重新创建元数据,可以大幅降低数据存储过程中的写入放大,保障分布式存储系统中硬盘的使用寿命。
S406、确定本地文件系统中是否包含与目标存储位置相匹配的第三存储空间;
S407、响应于本地文件系统中不包含第三存储空间,从文件池中获取第四存储空间,并确定第四存储空间为第二目标存储空间;
S408、响应于本地文件系统中包含第三存储空间,确定第三存储空间为第二目标存储空间。
需要说明的是,确定第二目标存储空间的方法和效果与上述实施例中确定第一目标存储空间类似,此处不再赘述。
应当理解的是,本申请实施例中对于上述步骤的执行顺序不做具体限定,例如,可以先执行步骤S403~S405,再执行步骤S406~S408;或者,也可以先执行步骤S406~S408,再执行步骤S403~S405。
图5为本公开另一实施例提供的分布式存储系统的架构示意图。如图5所示,该分布式存储系统中还包括:缓存空间。
在一种可选的实施方式中,对于上述步骤S304、将目标数据存储至第二目标存储空间时,具体包括如下步骤:
(1)状态机从本地文件系统中确定第二目标存储空间,将目标数据存储至缓存空间中;
(2)缓存空间缓存目标数据,并将目标数据存储至第二目标存储空间。
相关技术中,在将数据持久化存储至本地文件系统中时,由于需要同步持久化存储日志数据和目标数据,且本地文件系统的写入量远大于客户端所写入的数据量,因而,在对目标数据进行持久化存储时,其耗时较长,用户在存储数据时的体验较差。
有鉴于此,本公开的实施例中,在分布式存储系统中设置缓存空间,在存储过程中,先将目标数据存储至缓存空间中,再从缓存空间中向第二目标存储空间持久化存储该目标数据。相比上述技术,由于缓存的存储效率较高,此种方式可以降低存储过程的延迟,进而减少用户在数据存储过程中的等待时长,提升用户体验。
作为一种可选的实施方式,在日志数据的存储过程中,还可以将日志数据先存储至缓存空间中,再从缓存空间中向第一目标存储空间持久化存储该日志数据。
需要说明的是,可以通过同一缓存空间存储日志数据和目标数据,也可以创建不同的缓存空间用于存储不同的数据,本公开实施例均不做限定。
请继续参考图5,如图5所示,该分布式存储系统中还包括至少一个从节点,从节点中包括第二内存空间,应当理解的是,图5中以一个从节点为例示出,但本公开实施例不做具体限定。
接下来,结合图6对图5所示的分布式存储系统的数据存储方法进行详细说明。
图6为本公开又一实施例提供的数据存储方法的流程示意图。如图6所示,本公开实施例提供的数据存储方法包括如下步骤:
S601、客户端向主节点发送数据写入请求。
S602、响应于主节点接收到客户端发送的数据写入请求,获取数据写入请求对应的日志数据。
S603、将日志数据存储至第一内存空间。
其中,数据写入请求中包括目标存储位置和目标数据,数据写入请求用于请求主节点将目标数据写入目标存储位置;
S604、从本地文件系统中确定第一目标存储空间,并将日志数据存储至第一目标存储空间。
需要说明的是,步骤S601~S604所示的方案和有益效果,与图3所示实施例中的步骤S301~S304类似,此处不再赘述。
S605、主节点将日志数据发送给至少一个从节点。
S606、从节点将日志数据存储至从节点的第二内存空间中。
需要说明的是,对于发送日志数据的从节点的具体数量,本申请实施例不做限定。
一方面,可以为固定数量的从节点,例如是分布式存储系统中的全部从节点。
另一方面,也可以根据分布式存储系统中各从节点当前的存储空间大小、数据处理压力等情况,选择性的发送给部分从节点。
示例性的,可以将日志数据发送给存储空间大于预设空间的所有从节点,或者,将日志数据发送给数据处理压力小于预设值的所有从节点。本公开实施例中,在向从节点发送日志数据时,由于充分考虑各从节点的存储空间、数据处理压力等因素,将日志数据发送给适于存储该日志数据的从节点,可以降低由于从节点由于存储空间、数据处理压力等因素而导致日志数据存储失败的情况。
相应的,这些从节点在接收到日志数据之后,将日志数据存储至各从节点对应的第二内存空间中。
S607、从节点向主节点发送答复信息。
其中,答复信息用于指示从节点已将日志数据存储至从节点的第二内存空间,也就是说,各从节点在将日志数据存储完成后,即向主节点发送答复信息。
S608、响应于发送答复信息的从节点的数量大于或等于预设数量,状态机从本地文件系统中确定第二本目标存储空间,并将目标数据存储至第二目标存储空间。
相应的,主节点会对接收到的答复信息进行数量统计,从而确定从节点对日志信息的存储情况,且答复信息越多,说明存储成功的从节点数量较多,日志数据的安全性能够得以保障,此时,再讲目标数据存储至第二存储空间中。
应当理解的是,对于预设数量,本申请实施例不做具体限定,另外,对于状态机将目标数据存储至第二目标存储空间的具体方案,请参见图3所示实施例,此处不再赘述。
本公开实施例中,在将目标数据存储至第二目标存储空间之前,先将日志数据存储至从节点,可以保障目标数据的可追溯性,当存储过程中出现掉电、重启的现象导致目标数据丢失时,也可以从各从节点中获取该目标数据,提升分布式存储系统的可靠性。
作为一种可选的实施方式,本公开实施例中还包括如下步骤:
S609、主节点响应于状态机将目标数据存储至缓存空间,删除第一内存空间中目标数据对应的日志数据。
本公开实施例中,当状态机已将目标数据存储到缓存空间时,对于客户端来说,其已经完成数据的写入过程。此时,可以删除第一内存空间中存储的日志数据,此过程不会影响从缓存空间中向第二目标存储空间中进行持久化存储,同时还可以释放第一内存空间的存储空间。
示例性介质
在介绍了本公开示例性实施方式的方法之后,接下来,参考图7对本公开示例性实施方式的存储介质进行说明。
参考图7所示,存储介质700中存储着根据本公开的实施方式的用于实现上述方法的程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本公开的程序产品不限于此。
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备。
示例性装置
在介绍了本公开示例性实施方式的介质之后,接下来,参考图8对本公开示例性实施方式的数据存储装置进行说明,用于实现上述任一方法实施例中的数据存储方法,其实现原理和技术效果类似,在此不再赘述。
参考图8,图8为本公开一实施例提供的数据存储装置的结构示意图。该数据存储装置应用于分布式存储系统,分布式存储系统中包括至少一个主节点和本地文件系统,主节点包括第一内存空间和状态机,本地文件系统包括文件池,文件池包括多个存储空间;
如图8所示,数据存储装置800包括:获取模块801,用于响应于主节点接收到客户端发送的数据写入请求,获取数据写入请求对应的日志数据;第一存储模块802,用于主节点将日志数据存储至第一内存空间,其中,数据写入请求中包括目标存储位置和目标数据,数据写入请求用于请求主节点将目标数据写入目标存储位置;第二存储模块803,用于主节点从本地文件系统中确定第一目标存储空间,并将日志数据存储至第一目标存储空间;第三存储模块804,用于状态机从本地文件系统中确定第二目标存储空间,并将目标数据存储至第二目标存储空间。
在本公开的一个实施例中,第二存储模块803具体用于:根据日志数据,确定本地文件系统中是否包含与日志数据匹配的第一存储空间;响应于本地文件系统中不包含第一存储空间,从文件池中确定第二存储空间为第一目标存储空间;响应于本地文件系统中包含第一存储空间,确定第一存储空间为第一目标存储空间。
在本公开的一个实施例中,分布式存储系统中还包括缓存空间;第三存储模块804具体用于:将目标数据存储至缓存空间中;缓存空间用于缓存目标数据,并将目标数据存储至第二目标存储空间。
在本公开的一个实施例中,第三存储模块804具体用于:确定本地文件系统中是否包含与目标存储位置相匹配的第三存储空间;响应于本地文件系统中包含第三存储空间,确定第三存储空间为第二目标存储空间;响应于本地文件系统中不包含第三存储空间,从文件池中获取第四存储空间,并确定第四存储空间为第二目标存储空间。
在本公开的一个实施例中,分布式存储系统中还包括至少一个从节点,从节点包括第二内存空间,数据存储装置800还包括:发送模块805,用于主节点将日志数据发送给至少一个从节点;第四存储模块806,用于从节点将日志数据存储至从节点的第二内存空间中。
在本公开的一个实施例中,第三存储模块804具体用于:主节点接收至少一个从节点的答复信息,答复信息用于指示从节点已将日志数据存储至从节点的第二内存空间;响应于发送答复信息的从节点的数量大于或等于预设数量,状态机从本地文件系统中确定第二本目标存储空间,并将目标数据存储至第二目标存储空间。
在本公开的一个实施例中,该数据存储装置800,还包括:处理模块807,用于主节点响应于状态机将目标数据存储至缓存空间,删除第一内存空间中目标数据对应的日志数据。
应理解的是,本公开实施例提供的数据存储装置800用于实现上述分布式存储他中任一方法实施例中的数据存储方法,其实现原理和技术效果类似,在此不再赘述。
示例性计算设备
在介绍了本公开示例性实施方式的方法、介质和装置之后,接下来,参考图9对本公开示例性实施方式的计算设备进行说明。应理解,图9显示的计算设备900仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
图9为本公开一实施例提供的计算设备的结构示意图。如图9所示,计算设备900以通用计算设备的形式表现。计算设备900的组件可以包括但不限于:上述至少一个处理单元901、上述至少一个存储单元902,连接不同系统组件(包括处理单元901和存储单元902)的总线903。
总线903包括数据总线、控制总线和地址总线。存储单元902可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)99和/或高速缓存存储器922,可以进一步包括非易失性存储器形式的可读介质,例如只读存储器(ROM)932。存储单元902还可以包括具有一组(至少一个)程序模块942的程序/实用工具952,这样的程序模块942包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
计算设备900也可以与一个或多个外部设备904(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口905进行。并且,计算设备900还可以通过网络适配器906与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。
如图9所示,网络适配器906通过总线903与计算设备900的其它模块通信。应当理解,尽管图中未示出,可以结合计算设备900使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
应当注意,尽管在上文详细描述中提及了定时更新装置的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。
此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (10)

1.一种数据存储方法,应用于分布式存储系统,所述分布式存储系统中包括至少一个主节点和本地文件系统,所述主节点包括第一内存空间和状态机,所述本地文件系统包括文件池,所述文件池包括多个存储空间;
所述数据存储方法包括:
响应于所述主节点接收到客户端发送的数据写入请求,获取所述数据写入请求对应的日志数据;
将所述日志数据存储至所述第一内存空间,其中,所述数据写入请求中包括目标存储位置和目标数据,所述数据写入请求用于请求所述主节点将所述目标数据写入所述目标存储位置;
所述主节点从所述本地文件系统中确定第一目标存储空间,并将所述日志数据存储至所述第一目标存储空间;
所述状态机从所述本地文件系统中确定第二目标存储空间,并将所述目标数据存储至所述第二目标存储空间。
2.根据权利要求1所述的数据存储方法,所述主节点从所述本地文件系统中确定第一目标存储空间,包括:
根据所述日志数据,确定所述本地文件系统中是否包含与所述日志数据匹配的第一存储空间;
响应于所述本地文件系统中不包含所述第一存储空间,从所述文件池中确定第二存储空间为所述第一目标存储空间;
响应于所述本地文件系统中包含所述第一存储空间,确定所述第一存储空间为所述第一目标存储空间。
3.根据权利要求1所述的数据存储方法,所述分布式存储系统中还包括缓存空间;
所述状态机将所述目标数据存储至所述第二目标存储空间,包括:
将所述目标数据存储至所述缓存空间中;所述缓存空间用于缓存所述目标数据,并将所述目标数据存储至所述第二目标存储空间。
4.根据权利要求1所述的数据存储方法,所述状态机从所述本地文件系统中确定第二目标存储空间,包括:
确定所述本地文件系统中是否包含与所述目标存储位置相匹配的第三存储空间;
响应于所述本地文件系统中包含所述第三存储空间,确定所述第三存储空间为所述第二目标存储空间;
响应于所述本地文件系统中不包含所述第三存储空间,从所述文件池中获取第四存储空间,并确定所述第四存储空间为所述第二目标存储空间。
5.根据权利要求1至4中任一项所述的数据存储方法,所述分布式存储系统中还包括至少一个从节点,所述从节点包括第二内存空间,
所述数据存储方法还包括:
所述主节点将所述日志数据发送给至少一个所述从节点;
所述从节点将所述日志数据存储至所述从节点的第二内存空间中。
6.根据权利要求5所述的数据存储方法,所述状态机从所述本地文件系统中确定第二目标存储空间,并将所述目标数据存储至所述第二目标存储空间,包括:
所述主节点接收至少一个所述从节点的答复信息,所述答复信息用于指示所述从节点已将所述日志数据存储至所述从节点的第二内存空间;
响应于发送答复信息的从节点的数量大于或等于预设数量,所述状态机从所述本地文件系统中确定第二本目标存储空间,并将所述目标数据存储至所述第二目标存储空间。
7.根据权利要求3所述的数据存储方法,还包括:
所述主节点响应于所述状态机将所述目标数据存储至所述缓存空间,删除所述第一内存空间中所述目标数据对应的日志数据。
8.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如权利要求1至7中任一项所述的数据存储方法。
9.一种数据存储装置,应用于分布式存储系统,所述分布式存储系统中包括至少一个主节点和本地文件系统,所述主节点包括第一内存空间和状态机,所述本地文件系统包括文件池,所述文件池包括多个存储空间;
所述数据存储装置包括:
获取模块,用于响应于所述主节点接收到客户端发送的数据写入请求,获取所述数据写入请求对应的日志数据;
第一存储模块,用于所述主节点将所述日志数据存储至所述第一内存空间,其中,所述数据写入请求中包括目标存储位置和目标数据,所述数据写入请求用于请求所述主节点将所述目标数据写入所述目标存储位置;
第二存储模块,用于所述主节点从所述本地文件系统中确定第一目标存储空间,并将所述日志数据存储至所述第一目标存储空间;
第三存储模块,用于所述状态机从所述本地文件系统中确定第二目标存储空间,并将所述目标数据存储至所述第二目标存储空间。
10.根据权利要求9所述的数据存储装置,所述第二存储模块具体用于:根据所述日志数据,确定所述本地文件系统中是否包含与所述日志数据匹配的第一存储空间;
响应于所述本地文件系统中不包含所述第一存储空间,从所述文件池中确定第二存储空间为所述第一目标存储空间;
响应于所述本地文件系统中包含所述第一存储空间,确定所述第一存储空间为所述第一目标存储空间。
CN202210134930.0A 2022-02-14 2022-02-14 数据存储方法、介质、装置和计算设备 Pending CN114490540A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210134930.0A CN114490540A (zh) 2022-02-14 2022-02-14 数据存储方法、介质、装置和计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210134930.0A CN114490540A (zh) 2022-02-14 2022-02-14 数据存储方法、介质、装置和计算设备

Publications (1)

Publication Number Publication Date
CN114490540A true CN114490540A (zh) 2022-05-13

Family

ID=81479463

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210134930.0A Pending CN114490540A (zh) 2022-02-14 2022-02-14 数据存储方法、介质、装置和计算设备

Country Status (1)

Country Link
CN (1) CN114490540A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117155759A (zh) * 2023-10-27 2023-12-01 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117155759A (zh) * 2023-10-27 2023-12-01 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质
CN117155759B (zh) * 2023-10-27 2024-01-05 腾讯科技(深圳)有限公司 数据处理方法、装置、计算机设备及存储介质

Similar Documents

Publication Publication Date Title
EP3206128B1 (en) Data storage method, data storage apparatus, and storage device
EP2821925B1 (en) Distributed data processing method and apparatus
US9547706B2 (en) Using colocation hints to facilitate accessing a distributed data storage system
US11880280B2 (en) Variable number and size of put operations for storage backup
CN111309732B (zh) 数据处理方法、装置、介质和计算设备
EP3739440A1 (en) Distributed storage system, data processing method and storage node
JP6987340B2 (ja) データベースのデータ変更要求処理方法及び装置
CN111177143B (zh) 键值数据存储方法、装置、存储介质与电子设备
CN113806300B (zh) 数据存储方法、系统、装置、设备及存储介质
CN110633046A (zh) 一种分布式系统的存储方法、装置、存储设备及存储介质
US11157456B2 (en) Replication of data in a distributed file system using an arbiter
CN111225003B (zh) 一种nfs节点配置方法和装置
CN114490540A (zh) 数据存储方法、介质、装置和计算设备
WO2020135889A1 (zh) 一种磁盘动态加载的方法和云存储系统
CN112486413B (zh) 一种数据读取方法、装置、介质和计算设备
CN116594551A (zh) 一种数据存储方法及装置
US20180307684A1 (en) Method and Device for Reading and Writing Video Data in NAS Device
CN111638980A (zh) 基于内存映射的消息处理方法、装置、系统和存储介质
CN111399753A (zh) 写入图片的方法和装置
CN114415980B (zh) 多云集群数据管理系统、方法及装置
US11086853B1 (en) Method and system for streaming data from portable storage devices
US20240103984A1 (en) Leveraging backup process metadata for data recovery optimization
WO2024082857A1 (zh) 数据迁移的方法、系统及相关装置
US20230048813A1 (en) Method of storing data and method of reading data
US20220116451A1 (en) System and method for migrating volumes between storage appliances

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
CB02 Change of applicant information
CB02 Change of applicant information

Address after: 310052 Room 301, Building No. 599, Changhe Street Network Business Road, Binjiang District, Hangzhou City, Zhejiang Province

Applicant after: Hangzhou NetEase Shuzhifan Technology Co.,Ltd.

Address before: 310052 Room 301, Building No. 599, Changhe Street Network Business Road, Binjiang District, Hangzhou City, Zhejiang Province

Applicant before: HANGZHOU LANGHE TECHNOLOGY Ltd.