CN108196978B - 数据存储方法、装置、数据存储系统及可读存储介质 - Google Patents

数据存储方法、装置、数据存储系统及可读存储介质 Download PDF

Info

Publication number
CN108196978B
CN108196978B CN201711400201.0A CN201711400201A CN108196978B CN 108196978 B CN108196978 B CN 108196978B CN 201711400201 A CN201711400201 A CN 201711400201A CN 108196978 B CN108196978 B CN 108196978B
Authority
CN
China
Prior art keywords
data
storage pool
stored
erasure code
copy
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
Application number
CN201711400201.0A
Other languages
English (en)
Other versions
CN108196978A (zh
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 H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies 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 H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201711400201.0A priority Critical patent/CN108196978B/zh
Publication of CN108196978A publication Critical patent/CN108196978A/zh
Application granted granted Critical
Publication of CN108196978B publication Critical patent/CN108196978B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]

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)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在本申请实施例提供一种数据存储方法、装置、数据存储系统及可读存储介质,所述方法包括:首先,接收客户端发送的待存储数据,将所述待存储数据写入副本存储池进行副本存储;其次,在所述待存储数据成功写入所述副本存储池时,向所述客户端发送数据写入成功的响应;最后,将所述副本存储池中存储的至少部分数据发送到纠删码存储池并通过纠删码存储所述至少部分数据。上述方法将待存储数据先写入存储速度快的副本存储池以确保客户端能及时收到数据写入成功的响应,给用户数据存入速率快的良好体验,同时,将副本存储池中的数据发送到纠删码存储池中存储,可以降低数据存储的冗余度,提高数据的存储空间利用率。

Description

数据存储方法、装置、数据存储系统及可读存储介质
技术领域
本申请涉及分布式存储技术领域,具体而言,涉及一种数据存储方法、装置、数据存储系统及可读存储介质。
背景技术
现有技术中,分布式存储可实现海量数据的存储。对于海量存储系统来说,数据的冗余度是一个重要指标。冗余度是指一存储对象的实际存储的数据量与该存储对象自身的数据量的比值。副本存储方式可提升数据的安全性和可靠性,但是存在高冗余的问题。高冗余带来高可靠性的同时,意味着更多空间的“浪费”,以及更高的存储成本。很多用户相比于性能和可靠性来说,更加注重成本,对于副本这种奢侈的高性能、高可靠是不能接受的。因此纠删码存储策略出现了。然而,纠删码存储策略虽然可以解决高冗余的问题,但是伴随大量的计算,使得纠删码存储方式相比于副本存储方式来说,数据存入效率要低很多。
发明内容
本申请的实施例描述一种数据存储方法、装置、数据存储系统及可读存储介质。
第一方面,本申请实施例提供一种数据存储方法,应用于数据存储系统,该数据存储系统包括副本存储池和纠删码存储池,所述方法包括:首先,接收客户端发送的待存储数据,将所述待存储数据写入所述副本存储池进行副本存储;其次,在所述待存储数据成功写入所述副本存储池时,向所述客户端发送数据写入成功的响应;最后,将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池并通过纠删码存储所述至少部分数据。上述方法将待存储数据先写入存储速度快的副本存储池以确保客户端能及时收到数据写入成功的响应,给用户数据存入速率快的良好体验,同时,将副本存储池中的数据发送到纠删码存储池中存储,可以降低数据存储的冗余度,提高存储空间利用率。
可选地,在上述方法中,所述将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池并通过纠删码存储所述至少部分数据,可以包括:
检测所述副本存储池中已存储数据的容量是否达到预设容量阈值;
当达到所述预设容量阈值时,将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池以纠删码的形式进行存储。
可选地,上述方法还包括:当副本存储池中已存储数据的容量达到预设容量阈值时,调整所述副本存储池从客户端接收数据的速率和向纠删码存储池发送数据的速率的比例,使所述副本存储池在单位时间内接收的数据量不大于向所述纠删码存储池发送的数据量。
可选地,在接收客户端发送的待存储数据,将所述待存储数据写入所述副本存储池并进行副本存储之前,所述方法还包括:
创建所述副本存储池及所述纠删码存储池,所述副本存储池用于对所述客户端发送的待存储数据进行副本存储,所述纠删码存储池用于对所述副本存储池发送到所述纠删码存储池的数据进行纠删码存储。
可选地,在上述方法中,所述将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池并通过纠删码存储所述至少部分数据,可以包括:
获取所述副本存储池中已存储数据的活跃度;
根据所述已存储数据的活跃度选择所述副本存储池中存储的至少部分数据发送到所述纠删码存储池。
可选地,在上述方法中,获取所述副本存储池中已存储数据的活跃度,包括:
针对已存储数据中的任一数据,检测所述副本存储池中数据被访问的次数;
根据数据被访问的次数和/或访问时间确定所述副本存储池中数据的活跃度。
可选地,在上述方法中,所述根据所述已存储数据的活跃度选择所述副本存储池中存储的至少部分数据发送到所述纠删码存储池,可以包括:
将所述副本存储池中活跃度低于预设活跃度阈值的数据发送至所述纠删码存储池。
第二方面,本申请实施例提供一种数据存储装置应用于数据存储系统,该数据存储系统包括副本存储池和纠删码存储池,所述装置包括:
接收模块,用于接收客户端发送的待存储数据,将所述待存储数据写入所述副本存储池并进行副本存储;
第一发送模块,用于在所述待存储数据成功写入所述副本存储池时,向所述客户端发送数据写入成功的响应;
第二发送模块,用于将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池并通过纠删码存储所述至少部分数据。
可选地,所述第二发送模块包括:
检测子模块,用于检测所述副本存储池中已存储数据的容量是否达到预设容量阈值;
所述发送子模块,用于在所述副本存储池中已存储数据的容量达到所述预设容量阈值时,将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池以纠删码的形式进行存储。
可选地,所述装置还包括:
调整模块,在副本存储池中已存储数据的容量达到预设容量阈值时,调整所述副本存储池从客户端接收数据的速率和向纠删码存储池发送数据的速率的比例,使所述副本存储池在单元时间内接收的数据量不大于向所述纠删码存储池发送的数据量。
可选地,所述装置还包括:
创建模块,用于创建所述副本存储池及所述纠删码存储池,所述副本存储池用于对所述客户端发送的待存储数据进行副本存储,所述纠删码存储池用于对所述副本存储池发送到所述纠删码存储池的数据进行纠删码存储。
可选地,所述第二发送模块将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池并通过纠删码存储所述至少部分数据的方式,包括:
获取所述副本存储池中已存储数据的活跃度;
根据所述已存储数据的活跃度选择所述副本存储池中存储的至少部分数据发送到所述纠删码存储池。
可选地,所述第二发送模块获取所述副本存储池中已存储数据的活跃度的方式,包括:
针对已存储数据中的任一数据,检测所述副本存储池中数据被访问的次数和/或访问时间;
根据数据被访问的次数和/或访问时间确定所述副本存储池中数据的活跃度。
可选地,所述第二发送模块根据所述已存储数据的活跃度选择所述副本存储池中存储的至少部分数据发送到所述纠删码存储池的方式,包括:
将所述副本存储池中活跃度低于预设活跃度阈值的数据发送至所述纠删码存储池。
第三方面,本申请实施例还提供一种数据存储系统,所述数据存储系统包括处理器及存储有若干计算机指令的非易失性存储器,所述计算机指令被所述处理器执行时,所述数据存储系统执行上述的数据存储方法。
第四方面,本申请实施例还提供一种可读存储介质,所述可读存储介质包括计算机程序,所述计算机程序运行时控制所述可读存储介质所在数据存储系统执行上述的数据存储方法。
相对于现有技术而言,本申请具有以下有益效果:
副本存储方式只需将待存储数据进行备份存储即可,不需要在备份过程中进行数据计算处理。纠删码存储方式在存储过程中需要利用计算资源在经过数据计算处理后才能完成数据的纠删码存储。基于上述原因,在相同情况下,纠删码存储相对于副本存储具有冗余度低,但数据存储速度慢的特点。本申请实施例提供的数据存储方法、装置、数据存储系统及可读存储介质,所述方法将待存储数据先写入存储速度快的副本存储池以确保客户端能及时收到数据写入成功的响应,给用户数据存入速率快的良好体验,同时,将副本存储池中的数据发送到纠删码存储池中存储,可以降低数据存储的冗余度,提高存储空间利用率。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为现有纠删码存储与副本存储的存储性能比对图;
图2为本申请实施例提供的数据存储系统的应用场景图;
图3为本申请实施例提供的数据存储方法的步骤流程示意图;
图4为本申请实施例提供数据存储方法与现有纠删码存储和副本存储的存储性能比对图;
图5为图3中步骤S130的子步骤流程图之一;
图6为图3中步骤S130的子步骤流程图之二;
图7为本申请实施例提供的数据存储装置的功能方框示意图;
图8为本申请实施例提供的数据存储系统的结构示意框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
目前,为了确保存储数据的安全性常采用副本存储的方式或纠删码存储的方式对数据进行分布式存储。
副本存储是指,将数据按照一定比例和分配策略保存在其他存储节点上的存储技术。纠删码存储是指,将数据分割成片段,把冗余数据块扩展、编码,并将数据存储在不同存储节点的存储技术。
发明人发现,在采用副本存储时,副本数量越多对应数据存储安全性会越高,然而副本数量越多带来的直接问题就是数据的冗余度变大。也就是说,针对副本存储而言,高可靠性的代价就是需要更多的存储空间,增加存储的成本。以4副本存储为例,一份有效数据在存储系统中存储有4份相同的副本,其对应的冗余度为4,这意味着75%的存储空间浪费,以副本方式进行存储存在存储空间利用率低的问题。
在采用纠删码存储时,纠删码会创建一个数学函数来描述一组数字,这样可以方便的检查他们的完整性。同时一旦其中一些数据丢失,还可以通过计算的方式恢复丢失的数据。纠删码提供的冗余策略可以简单的用n=k+m标示,k表示原始数据的份数,m表示提供的冗余数据份数,n代码纠删码总共创建的数据份数。常用的纠删码冗余策略有2+1,4+2,8+2等。以8+2的策略为例,意味着原始数据有8份,冗余数据份数有2份,总容量10份,那冗余度为10/8,相比于2副本、3副本来说,存储空间有效利用率提升很多。虽然纠删码的冗余度较低,对存储空间利用率提升明显,但引入额外的编码、解码运算,对存储系统的计算能力和网络都有很大的消耗。最直接的表现就是存储系统的性能下降,与副本存储对比,向存储系统中写入数据的时延会明显增加,严重影响用户的使用体验。请参照图1,在相同的环境下(相同的数据模型及硬件容量),针对同一测试脚本,采用纠删码4+2冗余策略对测试脚本进行存储写入的平均时延(459.33ms)是采用2副本策略对测试脚本进行存储写入的平均时延(76.83ms)的6-7倍。而采用纠删码4+2冗余策略存储数据的冗余度(6/4)是2副本策略存储数据的冗余度(2/1)的75%。
在保证存储数据安全性的前提下,上述的存储方式都存在缺点,如何提供一种写入存储数据快且存储空间利用率高的存储方式,对于本领域技术人员而言是急需解决的技术问题。
为了克服上述现有技术中存在的缺陷,发明人通过研究提供下面的实施例给出了解决方案。
请参照图2,图2为本申请实施例提供的一种数据存储系统10的应用场景图,所述数据存储系统10包括副本存储池11和纠删码存储池12。所述数据存储系统10可以通过网络30与客户端20进行数据交互,也可以直接与客户端20进行通信。所述副本存储池11用于对所述客户端20发送的待存储数据进行副本存储,所述纠删码存储池12用于对所述副本存储池11发送到所述纠删码存储池12的数据进行纠删码存储。在客户端20中有数据需要存储时,客户端20可以将待存储数据发送到副本存储池11进行存储,在客户端20需要访问数据存储系统10中的存储数据时,客户端20可以向数据存储系统10发送访问请求,以从副本存储池11或纠删码存储池12中访问存储数据。
在本实施例中,所述数据存储系统10可以由单个服务器实现,也可以由多个服务器组成的服务器集群实现。所述数据存储系统10还可以包括数据存储装置13,所述数据存储装置13包括的软件功能模块及计算机程序控制所述数据存储系统10实现本实施例提供的数据存储方法。当然可以理解的是,如图2所示,所述数据存储装置13可以是所述数据存储系统10的其中一部分也可以是独立于所述数据存储系统10的单独组成部分。以所述数据存储系统10为服务器或服务器集群为例来说,所述数据存储装置13可以是存储于该数据存储系统10的一个存储器中,并有该数据存储系统10的处理器(如CPU)执行的软件功能模块。
请参照图3,图3为应用于图2所示的数据存储系统10的数据存储方法的流程图,以下对所述方法包括的各个步骤进行详尽阐述。
步骤S110,接收客户端20发送的待存储数据,将所述待存储数据写入所述副本存储池11并进行副本存储。
所述数据存储系统10在接收到待存储数据后,将待存储数据以副本存储的方式存储到副本存储池11。在本实施例中,副本存储池11对待存储数据进行副本存储的副本数可根据实际需求进行设定,例如可以设定为1副本、2副本或3副本等,在本实施例中,由于结合了纠删码存储的方式,设定的副本数量不宜过多,以避免高数据冗余带来的存储成本过高的问题。
在本实施例中,在步骤S110之前,所述方法还包括:创建所述副本存储池11及所述纠删码存储池12的步骤。
在所述副本存储池11及所述纠删码存储池12的创建过程中,首先创建副本存储池11和纠删码存储池12,接着分别对副本存储池11及纠删码存储池12的副本策略进行配置(比如,对副本存储池11配置2副本策略,对纠删码存储池12配置8+2的冗余策略),最后配置所述副本存储池11与纠删码存储池12之间的关系。在本实施例中,配置的所述副本存储池11与纠删码存储池12之间的关系,可以是所述副本存储池11用于对所述客户端20发送的待存储数据进行副本存储,所述纠删码存储池12用于对所述副本存储池11发送到所述纠删码存储池12的数据进行纠删码存储。即先将客户端20的数据先存储到所述副本存储池11,再由所述副本存储池11将存储在所述副本存储池11中的数据发送到纠删码存储池12进行纠删码存储。
步骤S120,在所述待存储数据成功写入所述副本存储池11时,向所述客户端20发送数据写入成功的响应。
副本存储方式具有存储速度快的特点,待存储数据在成功写入所述副本存储池11时,即反馈客户端20数据写入成功,可以确保客户端20能够及时得到响应,提高用户的体验。
步骤S130,将所述副本存储池11中存储的至少部分数据发送到所述纠删码存储池12并通过纠删码存储所述至少部分数据。
在本实施例中,所述副本存储池11中存储的数据可以被发送到所述纠删码存储池12中进行纠删码存储。当所述副本存储池11中存储的数据发送到所述纠删码存储池12中存储时,在所述副本存储池11中可以不保留该数据对应的副本。由于从所述副本存储池11转移数据到纠删码存储池12的过程,是在通知用户数据存储成功之后再进行,例如在合适的时机在后台进行,合适的时机可以是数据存储系统较为空闲的时候,例如负载率低于预设阈值时。如此,数据从副本存储池11转存储到所述纠删码存储池12的过程是用户感知不到的,即使纠删码存储方式的编码、解码等运算会持续很长时间,用户仍然能够及时得到写入成功的响应,并不会对用户体验产生影响。
请参照图4,图4是采用本实施例的技术方案进行数据存储方法与单独进行副本存储或纠删码存储的对比图,从图4中可以看出,采用本实施例的技术方案进行存储写入的平均时延(112.56ms)与单独进行副本存储写入的平均时延(76.83ms)相当,远优于单独采用冗余策略进行存储写入的平均时延(459.33ms)。
综上所述,通过将副本存储和纠删码存储两种技术有效的相结合,在副本存储池的存储数据成功的数据可以根据需要转移至纠删码存储池进行纠删码存储,如此无需在副本存储池中设置过多的副本即可保证数据存储的可靠性。同时,将所述副本存储池11中发送的数据进行存储,可以减少整个数据存储系统10存储数据的冗余度,提升存储空间的利用率,减少数据存储的空间浪费。故本申请实施例将副本存储和纠删码存储两种技术有效结合,实现了在提高纠删码的存储性能的同时,又可以达到纠删码的存储空间利用率,使存储空间利用率与纠删码标准相当。因此,本申请实施例既能够保证业务对存储性能的要求,又可以达到降低数据冗余度的要求。
本实施例提供以下几种副本存储池11发送数据到所述纠删码存储池12中进行存储的实施方式。
第一种实施方式,控制所述副本存储池11以恒定的速度向所述纠删码存储池12发送数据,直到所述副本存储池11中存储的数据被完全转移至所述纠删码存储池。
第二种实施方式,根据所述副本存储池11接收数据的业务情况及数据存储系统10可用资源情况确定向所述纠删码存储池12发送数据的速度。其中,所述数据存储系统10可用资源情况可以是所述数据存储系统10的CPU利用率、空闲进程或线程、剩余I/O资源、剩余带宽等。所述数据存储系统10可根据当前可用资源情况优先分配资源进行数据接收业务(确保客户端20中待存储数据能被及时写入),若可用资源在分配给数据接收业务后还有空闲,则将剩下的空闲资源分配给数据发送业务(下刷数据到纠删码存储池12)。在此情况下,向所述纠删码存储池11发送数据的速度可根据当前剩余资源而定。在客户端20写入数据较多而可用资源较少时,所有空闲资源可以全部分配给数据接收业务。
第三种实施方式,根据所述副本存储池11当前的使用容量对向所述纠删码存储池12发送数据的速度进行动态控制。当所述副本存储池11当前的使用容量较少时,控制向所述纠删码存储池12发送数据的速度慢;当所述副本存储池11当前的使用容量较多时,控制向所述纠删码存储池12发送数据的速度快。
本具体实施例还提供第四种实施方式,请参照图5,在该实施方式中,所述步骤S130可以包括以下步骤。
子步骤S131,检测所述副本存储池11中已存储数据的容量是否达到预设容量阈值。
所述副本存储池11主要用于接收客户端20发送的数据,并及时反馈响应给客户端20。
然而,由于副本存储冗余度高,若副本存储池11的可用进行数据存储的空间过大,对于整个数据存储系统10而言,整个数据存储系统10的冗余度会比较高,存储空间利用率得不到有效的提升。为了解决这个问题,可将副本存储池11仅作为接收客户端20数据的缓存池,为所述副本存储池11设定一容量阈值(比如,1GB),当副本存储池11存储的数据量达到该阈值时,将数据转移到纠删码存储池12中以纠删码形式进行存储。通过对副本存储池11中已存储数据的容量进行检测,以确定副本存储池11中存储的数据容量是否达到预设容量阈值。
子步骤S132,当所述副本存储池11中已存储数据的容量达到所述预设容量阈值时,将所述副本存储池11中存储的至少部分数据发送到所述纠删码存储池12以纠删码的形式进行存储。
在本实施方式中,当副本存储池11中存储的数据容量达到预设容量阈值时,还可以调整数据存储系统10中用于数据接收业务和数据发送业务的资源比例,以调整所述副本存储池11从客户端20接收数据的速率和向纠删码存储池12发送数据的速率的比例,使所述副本存储池11在单位时间内接收的数据量不大于向所述纠删码存储池12发送的数据量,从而确保所述副本存储池12不会被写满,导致数据存储异常。
可以理解的是,在第四种实施方式中,在副本存储池11中存储的数据容量未达到预设容量阈值之前,可以采用第一种实施方式、第二种实施方式或第三种实施方式中的方法控制向所述纠删码存储池12发送数据。
在步骤S130中,发送到所述纠删码存储池12以纠删码的形式进行存储的至少部分数据可以根据数据的活跃度进行选择。例如,请参照图6,所述步骤S130还可以包括:
子步骤S133,获取所述副本存储池11中已存储数据的活跃度。
在本步骤中,获取已存储数据活跃度的方式可以如下:
针对已存储数据中的任一数据,检测所述副本存储池11中数据被访问的次数和/或访问时间;
根据数据被访问的次数和/或访问时间确定所述副本存储池11中数据的活跃度。
在本实施方式中,数据活跃度的确定方式可以如下:
可以根据数据被访问的次数直接获得活跃度,比如,当某一数据被访问一次时,该数据的活跃度就加1。
也可以根据数据被访问的访问时间计算活跃度,一个数据被访问的时间距当前时刻越近则该数据对应的活跃度越大。
还可以根据被访问次数及访问时间来计算获得活跃度,计算公式可以为访问次数与访问时间系数的加权求和。访问时间系数可以进行如下设定,当访问时间距离当前时刻的时间间隔不大于1小时,对应的时间系数可以设定为100%,当访问时间距离当前时刻的时间间隔大于1小时且不大于2小时,对应的时间系数可以设定为80%,当访问时间距离当前时刻的时间间隔为大于2小时且不大于4小时,对应的时间系数可以设定为50%,依次类推访问时间越靠近当前时刻的访问对数据活跃度的影响越大。假设某一数据在距离当前时刻的0.15小时、0.6小时、1.5小时、3小时共4次被访问,则该某一数据对应的数据活跃度为2*100%+1*80%+1*50%=3.3。
子步骤S134,根据所述存储数据的活跃度选择所述副本存储池11中的至少部分存储数据发送到所述纠删码存储池12。
在本步骤中,通过数据活跃度选择被发送到所述纠删码存储池12进行存储的至少部分数据的方式可以是将所述副本存储池中活跃度低于预设活跃度阈值的数据发送至所述纠删码存储池,还可以如下所示:
先将所述副本存储池11中的数据按照活跃度大小进行排序;
再根据活跃度排序后的数据顺序,将排序靠后的数据(例如最后10个数据)发送到所述纠删码存储池12。
通过上述方式,可以确保活跃度大的数据保存在所述副本存储池11。在访问这些数据时,客户端20能及时获得这些数据,相对于从所述纠删码存储池12中访问数据还需要计算的过程而言,直接从所述副本存储池11中访问这些数据的速度更快,用户体验度更佳。
当然,应当理解的是,存储数据的数据活跃度是动态变化的,在本实施方式中可以通过定时(比如,每隔5分钟)的方式进行数据活跃度的更新,也可以在每一次存储数据被访问后进行数据活跃度的更新。
下面以举例的方式对采用本实施例提供的数据存储方法进行存储时,数据存储系统10的存储空间利用率进行说明。
假设副本存储池11采用2副本方式进行副本存储,纠删码存储池12采用的纠删码冗余策略为8+2。假设存储在副本存储池11的数据容量为100MB,存储在纠删码存储池12的数据容量为800MB。
采用本实施例提供的方法,通过本实施例提供数据存储系统10进行存储所需的存储容量为100MB*2+800MB(10/8)=1200MB,采用本实施例提供方法的冗余度=1200/(100+800)=1.33,小于采用2副本存储方式。相对于2副本存储方式,本实施例存储空间的利用率得到提高。同时,随着存入纠删码存储池12中的数据在整个数据存储系统10中占比的提高,本实施例方法提供的存储方式可以使冗余度无限接近纠删码的冗余度。
同时,客户端的数据是首先写入副本存储池11,在冗余度不大的情况下还能及时反馈客户端20的数据写入成功的响应。在副本存储池11中保存数据活跃度大的数据可以确保活跃度大的数据能被客户端20及时访问。上述方法利用了副本存储写入和读取速度快的特点,又结合纠删码存储的优点,使得存储空间利用率得到有效提高。
请参照图7,本申请实施例还提供一种图1中所述数据存储装置13的结构框图。所述数据存储装置13包括接收模块131、第一发送模块132及第二发送模块133。
所述接收模块131,用于接收客户端20发送的待存储数据,将所述待存储数据写入所述副本存储池11并进行副本存储。
本实施例中,所述接收模块131可用于执行图2所示的步骤S110,关于该接收模块131的具体实现方式或进一步的详细描述,可以参对步骤S110的相关描述。
所述第一发送模块132,用于在所述待存储数据成功写入所述副本存储池11时,向所述客户端20发送数据写入成功的响应。
本实施例中,所述第一发送模块132可用于执行图2所示的步骤S120,关于该第一发送模块132的具体实现方式或进一步的详细描述,可以参对步骤S120的相关描述。
所述第二发送模块133,用于将所述副本存储池11中存储的至少部分数据发送到所述纠删码存储池12并通过纠删码存储所述至少部分数据。
在本实施例中,所述第二发送模块133可以包括:
检测子模块1331,用于检测所述副本存储池11中已存储数据的容量是否达到预设容量阈值。
发送子模块1332,用于在所述副本存储池11中已存储数据的容量达到所述预设容量阈值时,将所述副本存储池11中存储的至少部分数据发送到所述纠删码存储池12以纠删码的形式进行存储。
本实施例中,所述第二发送模块133可用于执行图3所示的步骤S130,关于该第二发送模块133的具体实现方式或进一步的详细描述,可以参对步骤S130的相关描述。
在本实施例中,所述数据存储装置13还可以包括:
调整模块134,在副本存储池11中已存储数据的容量达到预设容量阈值时,调整所述副本存储池11从客户端20接收数据的速率和向纠删码存储池12发送数据的速率的比例,使所述副本存储池11在单位时间内接收的数据量不大于向所述纠删码存储池11发送的数据量。
在本实施例中,所述数据存储装置13还可以包括:
创建模块135,用于创建所述副本存储池11及所述纠删码存储池12,所述副本存储池11用于对所述客户端20发送的待存储数据进行副本存储,所述纠删码存储池12用于对所述副本存储池11发送到所述纠删码存储池12的数据进行纠删码存储。
所述第二发送模块133将所述副本存储池11中存储的至少部分数据发送到所述纠删码存储池12并通过纠删码存储所述至少部分数据的方式,包括:
获取所述副本存储池11中已存储数据的活跃度;
根据所述已存储数据的活跃度选择所述副本存储池11中存储的至少部分数据发送到所述纠删码存储池12。
所述第二发送模块133获取所述副本存储池11中已存储数据的活跃度的方式,包括
针对已存储数据中的任一数据,检测所述副本存储池11中数据被访问的次数和/或访问时间;
根据数据被访问的次数和/或访问时间确定所述副本存储池11中数据的活跃度。
所述第二发送模块133根据所述已存储数据的活跃度选择所述副本存储池11中存储的至少部分数据发送到所述纠删码存储池12的方式,包括:
将所述副本存储池11中活跃度低于预设活跃度阈值的数据发送至所述纠删码存储池12。
请参照图8,是本申请较佳的实施例提供的数据存储系统10的一种方框示意图。在本申请实施例中,所述数据存储系统10包括处理器14及存储器15,所述存储器15可用于存储所述数据存储装置13,所述处理器14可用于执行所述数据存储装置13对应的软件程序及功能模块。其中所述存储器15中存储有若干计算机指令,所述计算机指令被所述处理器14执行时,所述数据存储系统10执行上面实施例提供的数据存储方法。
所述数据存储装置13的功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得数据存储系统10执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,在本实施例提供的数据存储方法、装置、数据存储系统及可读存储介质中,首先,接收客户端发送的待存储数据,将所述待存储数据写入所述副本存储池进行副本存储;其次,在所述待存储数据成功写入所述副本存储池时,向所述客户端发送数据写入成功的响应;最后,将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池并通过纠删码存储所述至少部分数据。上述方法将待存储数据先写入存储速度快的副本存储池以确保客户端能及时收到数据写入成功的响应,给用户数据存入速率快的良好体验,同时,将副本存储池中的数据发送到纠删码存储池中存储,可以降低数据存储的冗余度,提升存储空间的利用率,并进一步减少数据存储空间的成本。
在本申请所提供的具体实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。

Claims (14)

1.一种数据存储方法,其特征在于,应用于数据存储系统,该数据存储系统包括副本存储池和纠删码存储池,所述方法包括:
接收客户端发送的待存储数据,将所述待存储数据写入所述副本存储池并进行副本存储;
在所述待存储数据成功写入所述副本存储池时,向所述客户端发送数据写入成功的响应;
将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池并通过纠删码存储所述至少部分数据,直到所述副本存储池中存储的数据被完全转移到所述纠删码存储池。
2.如权利要求1所述的数据存储方法,其特征在于,所述将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池并通过纠删码存储所述至少部分数据,包括:
检测所述副本存储池中已存储数据的容量是否达到预设容量阈值;
当所述副本存储池中已存储数据的容量达到所述预设容量阈值时,将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池以纠删码的形式进行存储。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
当副本存储池中已存储数据的容量达到预设容量阈值时,调整所述副本存储池从客户端接收数据的速率和向纠删码存储池发送数据的速率的比例,使所述副本存储池在单位时间内接收的数据量不大于向所述纠删码存储池发送的数据量。
4.如权利要求1-3中任意一项所述的方法,其特征在于,在接收客户端发送的待存储数据,将所述待存储数据写入所述副本存储池并进行副本存储之前,所述方法还包括:
创建所述副本存储池及所述纠删码存储池,所述副本存储池用于对所述客户端发送的待存储数据进行副本存储,所述纠删码存储池用于对所述副本存储池发送到所述纠删码存储池的数据进行纠删码存储。
5.如权利要求1-3中任意一项所述的方法,其特征在于,所述将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池并通过纠删码存储所述至少部分数据,包括:
获取所述副本存储池中已存储数据的活跃度;
根据所述已存储数据的活跃度选择所述副本存储池中存储的至少部分数据发送到所述纠删码存储池。
6.如权利要求5所述的方法,其特征在于,所述根据所述已存储数据的活跃度选择所述副本存储池中存储的至少部分数据发送到所述纠删码存储池,包括:
将所述副本存储池中活跃度低于预设活跃度阈值的数据发送至所述纠删码存储池。
7.一种数据存储装置,其特征在于,应用于数据存储系统,该数据存储系统包括副本存储池和纠删码存储池,所述装置包括:
接收模块,用于接收客户端发送的待存储数据,将所述待存储数据写入所述副本存储池并进行副本存储;
第一发送模块,用于在所述待存储数据成功写入所述副本存储池时,向所述客户端发送数据写入成功的响应;
第二发送模块,用于将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池并通过纠删码存储所述至少部分数据,直到所述副本存储池中存储的数据被完全转移到所述纠删码存储池。
8.如权利要求7所述的装置,其特征在于,所述第二发送模块包括:
检测子模块,用于检测所述副本存储池中已存储数据的容量是否达到预设容量阈值;
发送子模块,用于在所述副本存储池中已存储数据的容量达到所述预设容量阈值时,将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池以纠删码的形式进行存储。
9.如权利要求8所述的装置,其特征在于,所述装置还包括:
调整模块,在副本存储池中已存储数据的容量达到预设容量阈值时,调整所述副本存储池从客户端接收数据的速率和向纠删码存储池发送数据的速率的比例,使所述副本存储池在单位时间内接收的数据量不大于向所述纠删码存储池发送的数据量。
10.如权利要求7-9中任意一项所述的装置,其特征在于,所述装置还包括:
创建模块,用于创建所述副本存储池及所述纠删码存储池,所述副本存储池用于对所述客户端发送的待存储数据进行副本存储,所述纠删码存储池用于对所述副本存储池发送到所述纠删码存储池的数据进行纠删码存储。
11.如权利要求7-9中任意一项所述的装置,其特征在于,所述第二发送模块将所述副本存储池中存储的至少部分数据发送到所述纠删码存储池并通过纠删码存储所述至少部分数据的方式,包括:
获取所述副本存储池中已存储数据的活跃度;
根据所述已存储数据的活跃度选择所述副本存储池中存储的至少部分数据发送到所述纠删码存储池。
12.如权利要求11所述的装置,其特征在于,所述第二发送模块根据所述已存储数据的活跃度选择所述副本存储池中存储的至少部分数据发送到所述纠删码存储池的方式,包括:
将所述副本存储池中活跃度低于预设活跃度阈值的数据发送至所述纠删码存储池。
13.一种数据存储系统,所述数据存储系统包括处理器及存储有若干计算机指令的非易失性存储器,其特征在于,所述计算机指令被所述处理器执行时,所述数据存储系统执行权利要求1-6中任意一项所述的数据存储方法。
14.一种可读存储介质,所述可读存储介质包括计算机程序,其特征在于:
所述计算机程序运行时控制所述可读存储介质所在数据存储系统执行权利要求1-6中任意一项所述的数据存储方法。
CN201711400201.0A 2017-12-22 2017-12-22 数据存储方法、装置、数据存储系统及可读存储介质 Active CN108196978B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711400201.0A CN108196978B (zh) 2017-12-22 2017-12-22 数据存储方法、装置、数据存储系统及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711400201.0A CN108196978B (zh) 2017-12-22 2017-12-22 数据存储方法、装置、数据存储系统及可读存储介质

Publications (2)

Publication Number Publication Date
CN108196978A CN108196978A (zh) 2018-06-22
CN108196978B true CN108196978B (zh) 2021-03-09

Family

ID=62583487

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711400201.0A Active CN108196978B (zh) 2017-12-22 2017-12-22 数据存储方法、装置、数据存储系统及可读存储介质

Country Status (1)

Country Link
CN (1) CN108196978B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109445684B (zh) 2018-09-20 2021-11-26 华为技术有限公司 一种分布式存储系统中硬盘的资源分配方法及设备
CN111381767B (zh) * 2018-12-28 2024-03-26 阿里巴巴集团控股有限公司 一种数据处理方法及装置
CN109901946A (zh) * 2019-02-27 2019-06-18 深信服科技股份有限公司 一种纠删码操作方法、装置、设备及存储介质
CN109992204A (zh) * 2019-03-19 2019-07-09 新华三技术有限公司成都分公司 数据存储方法及装置
CN112051964B (zh) * 2019-06-06 2024-08-27 阿里巴巴集团控股有限公司 数据处理方法及装置
CN111414271B (zh) * 2020-03-17 2023-10-13 上海爱数信息技术股份有限公司 一种基于自适应存储冗余策略的存储方法
CN112269772A (zh) * 2020-10-30 2021-01-26 深信服科技股份有限公司 一种文件部署方法、系统、设备及计算机可读存储介质
CN112965660B (zh) * 2021-02-09 2023-08-08 山东英信计算机技术有限公司 一种双存储池信息反馈的方法、系统、设备及介质
CN113010113B (zh) * 2021-03-17 2024-05-14 阿里巴巴创新公司 数据处理方法、装置及设备
CN113296698A (zh) * 2021-03-29 2021-08-24 阿里巴巴新加坡控股有限公司 数据处理方法、装置及设备
CN114398006A (zh) * 2021-12-24 2022-04-26 中国电信股份有限公司 一种分布式存储模式控制方法、装置、设备以及存储介质
CN114637475B (zh) * 2022-04-13 2024-06-25 苏州浪潮智能科技有限公司 一种分布式存储系统控制方法、装置及可读存储介质
CN115934001B (zh) * 2023-03-08 2023-05-12 浪潮电子信息产业股份有限公司 一种纠删池选择方法、装置、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095807A (zh) * 2016-05-31 2016-11-09 中广天择传媒股份有限公司 一种分布式文件系统纠删码缓存装置及其缓存方法
CN106708653A (zh) * 2016-12-29 2017-05-24 广州中国科学院软件应用技术研究所 一种基于纠删码与多副本的混合税务大数据安全保护方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101544485B1 (ko) * 2011-04-25 2015-08-17 주식회사 케이티 클라우드 스토리지 시스템에서 복수개의 복제본을 분산 저장하는 방법 및 장치

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106095807A (zh) * 2016-05-31 2016-11-09 中广天择传媒股份有限公司 一种分布式文件系统纠删码缓存装置及其缓存方法
CN106708653A (zh) * 2016-12-29 2017-05-24 广州中国科学院软件应用技术研究所 一种基于纠删码与多副本的混合税务大数据安全保护方法

Also Published As

Publication number Publication date
CN108196978A (zh) 2018-06-22

Similar Documents

Publication Publication Date Title
CN108196978B (zh) 数据存储方法、装置、数据存储系统及可读存储介质
US11188469B2 (en) Page cache write logging at block-based storage
US10489422B2 (en) Reducing data volume durability state for block-based storage
US9983825B2 (en) Efficient data volume replication for block-based storage
US8443054B2 (en) Method, system, and scheduling server for content delivery
US9342457B2 (en) Dynamically modifying durability properties for individual data volumes
US8370672B2 (en) Reducing power consumption of distributed storage systems
EP3163446B1 (en) Data storage method and data storage management server
US20160239397A1 (en) Faster reconstruction of segments using a dedicated spare memory unit
US10601901B2 (en) Methods, systems, and media for stored content distribution and access
US10616134B1 (en) Prioritizing resource hosts for resource placement
US11029891B2 (en) Hybrid distributed storage system to dynamically modify storage overhead and improve access performance
US20150309874A1 (en) A method and apparatus for code length adaptation for access to key-value based cloud storage systems
CN114443364B (zh) 一种分布式块存储数据处理方法、装置、设备及存储介质
CN107301090B (zh) 在存储服务器中为应用设置数据处理路径的方法及装置
US11385814B2 (en) Method and device for allocating resource of hard disk in distributed storage system
CN107870877B (zh) 用于在存储系统中管理数据访问的方法和系统
CN114296891A (zh) 任务的调度方法、系统、计算设备、存储介质及程序产品
US10630602B1 (en) Resource allocation using restore credits
CN116760698A (zh) 业务处理方法、装置、计算机设备和存储介质
US11941297B2 (en) Garbage collection and bin synchronization for distributed storage architecture
CN111506254A (zh) 分布式存储系统及其管理方法、装置
US10135750B1 (en) Satisfaction-ratio based server congestion control mechanism
CN115599315B (zh) 数据处理方法、装置、系统、设备及介质
CN116302667A (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