CN112363674A - 一种数据写入方法和装置 - Google Patents

一种数据写入方法和装置 Download PDF

Info

Publication number
CN112363674A
CN112363674A CN202011264296.XA CN202011264296A CN112363674A CN 112363674 A CN112363674 A CN 112363674A CN 202011264296 A CN202011264296 A CN 202011264296A CN 112363674 A CN112363674 A CN 112363674A
Authority
CN
China
Prior art keywords
osd
storage node
data
local
data block
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
Application number
CN202011264296.XA
Other languages
English (en)
Other versions
CN112363674B (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.)
New H3C Technologies Co Ltd Chengdu Branch
Original Assignee
New H3C Technologies Co Ltd Chengdu Branch
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 New H3C Technologies Co Ltd Chengdu Branch filed Critical New H3C Technologies Co Ltd Chengdu Branch
Priority to CN202011264296.XA priority Critical patent/CN112363674B/zh
Publication of CN112363674A publication Critical patent/CN112363674A/zh
Application granted granted Critical
Publication of CN112363674B publication Critical patent/CN112363674B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0625Power saving in 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/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • 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)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请实施例提供了一种数据写入方法和装置,方法包括:获取待存储数据块;基于HDD池的第一数据布局策略,从HDD池中依次确定待存储数据块所属的数据管理组对应的第一数目个第一OSD,得到OSD集合;基于缓存池的第二数据布局策略,确定OSD集合中前第二数目个第一OSD所属的备选存储节点;针对每一备选存储节点,从该备选存储节点包含的属于缓存池的OSD中,确定待存储数据块所属的数据管理组对应的第二OSD;在该备选存储节点本地的第二OSD写入待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将待存储数据块中的数据写入该备选存储节点本地的第一OSD,能够提高数据存储系统的整体性能。

Description

一种数据写入方法和装置
技术领域
本申请涉及数据存储技术领域,特别是涉及一种数据写入方法和装置。
背景技术
随着云计算和大数据的发展,数据呈爆炸式增长,为了满足数据存储需求,基于软件定义存储(Software Defined Storage,SDS)的数据存储系统应运而生。相关技术中,可以将待存储的原始文件切割成定长的数据块。针对每一数据块,可以将该数据块映射到一个数据管理组,进而,可以根据预设的数据布局策略(例如,多副本策略或纠删码策略),确定该数据管理组对应的多个存储设备,相应的,可以将该数据块写入到确定出的多个存储设备。
另外,为了减小数据写入时延,数据存储系统中的OSD(Object Storage Device,对象存储设备)可以划分为缓存池和HDD(硬盘驱动器,Hard Disk Drive)池。缓存池用于暂存数据,数据最终会写入到HDD池。参见图1,数据存储系统可以包含多个存储节点,每一存储节点包含多个OSD,图1中以0-71为序号对各OSD进行标记。针对三副本策略,主机在获取到待存储的数据块后,可以将该数据块通过交换机发送至数据存储系统中的一个指定存储节点(例如,存储节点4)。
存储节点4则可以从缓存池中依次确定出该数据块所属的数据管理组对应的3个OSD(例如,OSD54、OSD1和OSD18),其中,OSD54为主OSD,OSD1和OSD18为从OSD。进而,存储节点4可以将该数据块写入OSD54,并由OSD54通过交换机将该数据块分别写入OSD1和OSD18。然后,OSD54可以从HDD池中依次确定出该数据块所属的数据管理组对应的3个OSD(例如,OSD28、OSD46和OSD11),其中,OSD28为主OSD,OSD46和OSD11为从OSD。进而,OSD54可以将该数据块写入OSD28,并由OSD28通过交换机将该数据块分别写入OSD46和OSD11,完成该数据块的写入。
可见,针对同一数据块,该数据块在缓存池中对应的OSD所在的存储节点,与该数据块在HDD池中对应的OSD所在的存储节点很大程度上不完全相同,也就是说,上述数据写入过程中,存在较多的跨存储节点的数据写入次数,导致数据写入耗费大量的网络带宽,且会增大数据写入的时延,降低数据存储系统的整体性能。
发明内容
本申请实施例的目的在于提供一种数据写入方法和装置,能够降低数据写入耗费的网络带宽,且降低数据写入的时延,进而,提高数据存储系统的整体性能。具体技术方案如下:
第一方面,为了达到上述目的,本申请实施例公开了一种数据写入方法,所述方法应用于数据存储系统,所述数据存储系统包含多个存储节点,每一所述存储节点包含缓存池中的对象存储设备OSD和硬盘驱动器HDD池中的OSD,所述方法包括:
获取待存储数据块;
基于所述HDD池的第一数据布局策略,从所述HDD池中依次确定所述待存储数据块所属的数据管理组对应的第一数目个第一OSD,得到OSD集合;
基于所述缓存池的第二数据布局策略,确定所述OSD集合中前第二数目个第一OSD所属的存储节点,作为备选存储节点;
针对每一所述备选存储节点,从该备选存储节点包含的属于所述缓存池的OSD中,确定所述待存储数据块所属的数据管理组对应的第二OSD;
在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD。
可选的,所述第二数据布局策略为多副本策略;
在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,所述方法还包括:
确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
将所述待存储数据块包含的所有数据,写入所述目标备选存储节点本地的第二OSD;
通过所述目标备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据,写入除所述目标备选存储节点本地的第二OSD以外的其他第二OSD。
可选的,所述第二数据布局策略为纠删码策略;
在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,所述方法还包括:
基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块,以及确定所述待存储数据块对应的校验数据块;
确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
将所述第三数目个子数据块中的第一个子数据块,写入所述目标备选存储节点本地的第二OSD;
通过所述目标备选存储节点本地的第二OSD,将所述第三数目个子数据块中除所述第一个子数据块以外的其他子数据块,以及所述校验数据块,分别写入除所述目标备选存储节点本地的第二OSD以外的其他第二OSD。
可选的,所述第一数据布局策略为多副本策略;
所述在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD,包括:
在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD。
可选的,在通过该备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD之后,所述方法还包括:
确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
通过所述目标备选存储节点本地的第一OSD,确定所述OSD集合中不属于所述备选存储节点的第一OSD,作为第三OSD;
通过所述目标备选存储节点本地的第一OSD,将所述待存储数据块包含的所有数据写入所述第三OSD。
可选的,所述第一数据布局策略为纠删码策略;
在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,所述方法还包括:
通过该备选存储节点本地的第二OSD,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块;
通过该备选存储节点本地的第二OSD,从所述第三数目个子数据块中,确定本地的第一OSD在所述OSD集合中的顺序对应的子数据块,作为目标子数据块;
所述在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD,包括:
在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述目标子数据块写入该备选存储节点本地的第一OSD。
可选的,在通过该备选存储节点本地的第二OSD,将所述目标子数据块写入该备选存储节点本地的第一OSD之后,所述方法还包括:
确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
通过所述目标备选存储节点本地的第一OSD,确定所述OSD集合中不属于所述备选存储节点的第一OSD,作为第三OSD;
通过所述目标备选存储节点本地的第一OSD,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块,以及确定所述待存储数据块对应的校验数据块;
通过所述目标备选存储节点本地的第一OSD,确定所述第三数目个子数据块中,除所述OSD集合中的第一OSD对应的子数据块以外的其他子数据块,作为备选子数据块;
通过所述目标备选存储节点本地的第一OSD,将所述校验数据块和所述备选子数据块,分别写入所述第三OSD。
第二方面,为了达到上述目的,本申请实施例公开了一种数据写入装置,所述装置应用于数据存储系统,所述数据存储系统包含多个存储节点,每一所述存储节点包含缓存池中的对象存储设备OSD和硬盘驱动器HDD池中的OSD,所述装置包括:
待存储数据块获取模块,用于获取待存储数据块;
OSD集合获取模块,用于基于所述HDD池的第一数据布局策略,从所述HDD池中依次确定所述待存储数据块所属的数据管理组对应的第一数目个第一OSD,得到OSD集合;
备选存储节点确定模块,用于基于所述缓存池的第二数据布局策略,确定所述OSD集合中前第二数目个第一OSD所属的存储节点,作为备选存储节点;
第一处理模块,用于针对每一所述备选存储节点,从该备选存储节点包含的属于所述缓存池的OSD中,确定所述待存储数据块所属的数据管理组对应的第二OSD;
第一写入模块,用于在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD。
可选的,所述第二数据布局策略为多副本策略;
所述装置还包括:
目标备选存储节点确定模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第二写入模块,用于将所述待存储数据块包含的所有数据,写入所述目标备选存储节点本地的第二OSD;
第三写入模块,用于通过所述目标备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据,写入除所述目标备选存储节点本地的第二OSD以外的其他第二OSD。
可选的,所述第二数据布局策略为纠删码策略;
所述装置还包括:
第二处理模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块,以及确定所述待存储数据块对应的校验数据块;
目标备选存储节点确定模块,用于确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第四写入模块,用于将所述第三数目个子数据块中的第一个子数据块,写入所述目标备选存储节点本地的第二OSD;
第五写入模块,用于通过所述目标备选存储节点本地的第二OSD,将所述第三数目个子数据块中除所述第一个子数据块以外的其他子数据块,以及所述校验数据块,分别写入除所述目标备选存储节点本地的第二OSD以外的其他第二OSD。
可选的,所述第一数据布局策略为多副本策略;
所述第一写入模块,具体用于在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD。
可选的,所述装置还包括:
目标备选存储节点确定模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD之后,确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第三OSD确定模块,用于通过所述目标备选存储节点本地的第一OSD,确定所述OSD集合中不属于所述备选存储节点的第一OSD,作为第三OSD;
第六写入模块,用于通过所述目标备选存储节点本地的第一OSD,将所述待存储数据块包含的所有数据写入所述第三OSD。
可选的,所述第一数据布局策略为纠删码策略;
所述装置还包括:
第三处理模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,通过该备选存储节点本地的第二OSD,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块;
目标子数据块确定模块,用于通过该备选存储节点本地的第二OSD,从所述第三数目个子数据块中,确定本地的第一OSD在所述OSD集合中的顺序对应的子数据块,作为目标子数据块;
所述第一写入模块,具体用于在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述目标子数据块写入该备选存储节点本地的第一OSD。
可选的,所述装置还包括:
目标备选存储节点确定模块,用于在通过该备选存储节点本地的第二OSD,将所述目标子数据块写入该备选存储节点本地的第一OSD之后,确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第三OSD确定模块,用于通过所述目标备选存储节点本地的第一OSD,确定所述OSD集合中不属于所述备选存储节点的第一OSD,作为第三OSD;
第四处理模块,用于通过所述目标备选存储节点本地的第一OSD,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块,以及确定所述待存储数据块对应的校验数据块;
备选子数据块确定模块,用于通过所述目标备选存储节点本地的第一OSD,确定所述第三数目个子数据块中,除所述OSD集合中的第一OSD对应的子数据块以外的其他子数据块,作为备选子数据块;
第七写入模块,用于通过所述目标备选存储节点本地的第一OSD,将所述校验数据块和所述备选子数据块,分别写入所述第三OSD。
在本申请实施的另一方面,为了达到上述目的,本申请实施例还公开了一种电子设备,所述电子设备包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现如上述第一方面所述的数据写入方法。
在本申请实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现如上述第一方面所述的数据写入方法。
在本申请实施的又一方面,本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的数据写入方法。
本申请实施例提供了一种数据写入方法,可以应用于数据存储系统,数据存储系统包含多个存储节点,每一存储节点包含缓存池中的对象存储设备OSD和硬盘驱动器HDD池中的OSD,可以获取待存储数据块,并基于HDD池的第一数据布局策略,从HDD池中依次确定待存储数据块所属的数据管理组对应的第一数目个第一OSD,得到OSD集合;基于缓存池的第二数据布局策略,确定OSD集合中前第二数目个第一OSD所属的存储节点,作为备选存储节点;针对每一备选存储节点,从该备选存储节点包含的属于缓存池的OSD中,确定待存储数据块所属的数据管理组对应的第二OSD;在该备选存储节点本地的第二OSD写入待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将待存储数据块中的数据写入该备选存储节点本地的第一OSD。
基于上述处理,从备选存储节点包含的属于缓存池的OSD中,确定待存储数据块所属的数据管理组对应的第二OSD,能够使得待存储数据块对应的缓存池中的OSD所属的存储节点,与对应的HDD池中的OSD所属的存储节点在很大程度上相同,相同的存储节点也就是备选存储节点,进而,在将数据块从缓存池写入HDD池的过程中,能够减少跨存储节点的数据写入次数,因此,能够降低数据写入耗费的网络带宽,且降低数据写入的时延,进而,提高数据存储系统的整体性能。
当然,实施本申请的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为相关技术中数据写入过程的示意图;
图2为数据写入的总体示意图;
图3为本申请实施例提供的一种数据写入方法的流程图;
图4为本申请实施例提供的另一种数据写入方法的流程图;
图5为本申请实施例提供的另一种数据写入方法的流程图;
图6为本申请实施例提供的另一种数据写入方法的流程图;
图7为本申请实施例提供的另一种数据写入方法的流程图;
图8为本申请实施例提供的另一种数据写入方法的流程图;
图9为本申请实施例提供的另一种数据写入方法的流程图;
图10为本申请实施例提供的一种数据写入过程的示意图;
图11为本申请实施例提供的另一种数据写入过程的示意图;
图12为本申请实施例提供的另一种数据写入过程的示意图;
图13为本申请实施例提供的一种数据写入装置的结构示意图;
图14为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
首先对本申请涉及的技术术语进行解释。
Ceph:一种开源分布式存储软件,实现了块、文件、对象等多种接口。Ceph可运行在商用存储服务器上,在企业网和运营商都有广泛应用。
OSD(Object Storage Device,对象存储设备):Ceph主要的组件之一,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等,并将一些变化情况上报给Ceph Monitor。一般情况下一块硬盘对应一个OSD,由OSD来对硬盘存储进行管理。
副本(Replication):一种为保证数据持久性采用的技术,指在系统内保留数据的多个相同拷贝。常见如2副本、3副本等。相比纠删码,副本策略可以提供更好的读写性能。
纠删码(Erasure Code):一种为保证数据持久性采用的技术。它将数据分割成片段(N片),并按照一定算法生成冗余片段(M片),并可以在丢失部分数据(不多于N+M片中的M片)的情况下,根据剩余数据将丢失的数据重建。这种分割方法一般记为(N,M)。和副本策略相比,在相同的数据持久性等级下,纠删码策略可显著提升存储系统的容量利用率。例如,3副本策略和(6,2)纠删码策略具有相同的数据持久性等级,但前者的容量利用率为33%,后者为75%。
本申请实施例中提到的数据布局策略可以为基于副本的多副本策略,或者,也可以为基于纠删码的纠删码策略。
CRUSH(Controlled Replication Under Scalable Hashing):开源分布式存储软件Ceph中采用的数据分布算法,可将数据以伪随机的方式根据事先配置的数据布局策略分布到存储节点和磁盘上。
PG(Placement Group):归置组,是Ceph中的一个逻辑概念,每个PG对应一组object。Ceph以PG为单位对数据进行管理。
集群拓扑(Cluster Topology):包括存储集群由哪些节点构成、每个节点包含哪些磁盘、故障域划分信息、节点和磁盘的编号、权重、状态等信息。集群拓扑信息由集群中的控制节点生成,并将此拓扑信息同步到整个存储集群,使得每个节点具有相同的集群拓扑信息。
参见图2,图2为一种数据写入的总体示意图。
主机首先向数据存储系统的缓存池写入数据,写入完成后,数据存储系统向主机返回写入成功的消息。后续,数据存储系统则可以将数据从缓存池写入HDD池,从缓存池向HDD池写入数据的过程是异步进行的。
相关技术中,针对同一数据块,确定出的该数据块在缓存池中对应的OSD所在的存储节点,与该数据块在HDD池中对应的OSD所在的存储节点很大程度上不完全相同,因此,在数据写入过程中,存在较多的跨存储节点的数据写入次数,导致数据写入耗费大量的网络带宽,且会增大数据写入的时延,降低数据存储系统的整体性能。
为了解决上述问题,本申请实施例提供了一种数据写入方法,该方法可以应用于数据存储系统,数据存储系统包含多个存储节点,每一存储节点包含缓存池中的对象存储设备OSD和硬盘驱动器HDD池中的OSD,参见图3,该方法可以包括以下步骤:
S301:获取待存储数据块。
S302:基于HDD池的第一数据布局策略,从HDD池中依次确定待存储数据块所属的数据管理组对应的第一数目个第一OSD,得到OSD集合。
S303:基于缓存池的第二数据布局策略,确定OSD集合中前第二数目个第一OSD所属的存储节点,作为备选存储节点。
S304:针对每一备选存储节点,从该备选存储节点包含的属于所述缓存池的OSD中,确定待存储数据块所属的数据管理组对应的第二OSD。
S305:在该备选存储节点本地的第二OSD写入待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将待存储数据块中的数据写入该备选存储节点本地的第一OSD。
本申请实施例提供的数据写入方法,从备选存储节点包含的属于缓存池的OSD中,确定待存储数据块所属的数据管理组对应的第二OSD,能够使得待存储数据块对应的缓存池中的OSD所属的存储节点,与对应的HDD池中的OSD所属的存储节点在很大程度上相同,相同的存储节点也就是备选存储节点,进而,在将数据块从缓存池写入HDD池的过程中,能够减少跨存储节点的数据写入次数,因此,能够降低数据写入耗费的网络带宽,且降低数据写入的时延,进而,提高数据存储系统的整体性能。
针对步骤S302,待存储数据块所属的数据管理组可以为待存储数据块所属的PG。
在对文件进行存储时,待存储的原始文件可以被切割成定长的数据块,针对每个数据块,可以根据原始文件和该数据块在原始文件中的偏移等信息生成唯一的一个ID。基于Hash算法(例如,取模运算),可以将一个数据块的ID映射到一个数据管理组。
第一数目可以为第一数据布局策略所需要生成的数据的份数。例如,第一数据布局策略为多副本策略,则第一数目可以为多副本策略需要生成的副本的数目。第一数据布局策略为(N,M)的纠删码策略,则第一数目可以为N+M。
在一个实施例中,可以结合集群拓扑,基于CRUSH算法,从HDD池中依次确定出待存储数据块所属的数据管理组对应的第一数目个OSD(即本申请实施例中的第一OSD)。确定出的第一个OSD可以为主OSD,确定出的其他OSD可以为从OSD。
针对步骤S303,第二数目可以为第二数据布局策略所需要生成的数据的份数。例如,第二数据布局策略为多副本策略,则第二数目可以为多副本策略需要生成的副本的数目。第二数据布局策略为(N,M)的纠删码策略,则第二数目可以为N+M。
在一个实施例中,由于数据存储系统的可靠性取决于HDD池的数据布局策略,因此,第一数目可以不小于第二数目。
针对步骤S305,待存储数据块中的数据可以为待存储数据块包含的所有数据,也可以为待存储数据块包含的部分数据,或者,也可以为基于待存储数据块包含的数据生成的校验块。例如,数据布局策略为多副本策略,则待存储数据块中的数据可以为待存储数据块包含的所有数据;数据布局策略为纠删码策略,则待存储数据块中的数据可以为待存储数据块包含的部分数据,也可以为基于待存储数据块包含的数据生成的校验块。
在一个实施例中,第二数据布局策略可以为多副本策略,相应的,参见图4,在步骤S305之前,该方法还可以包括以下步骤:
S306:确定OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点。
S307:将待存储数据块包含的所有数据,写入目标备选存储节点本地的第二OSD。
S308:通过目标备选存储节点本地的第二OSD,将待存储数据块包含的数据,写入除目标备选存储节点本地的第二OSD以外的其他第二OSD。
在本申请实施例中,OSD集合中第一个第一OSD,也就是确定出的主OSD。
数据存储系统中与主机对应的指定存储节点,可以获取主机发送的待存储数据块,并存储在内存中。
在确定出OSD集合和第二OSD后,可以确定OSD集合中的主OSD,进而,可以确定该主OSD所属的存储节点(即本申请实施例中的目标备选存储节点)。
如果缓存池为多副本策略,则可以将待存储数据块包含的所有数据,写入目标备选存储节点本地的第二OSD。
相应的,目标备选存储节点本地的第二OSD,则可以将待存储数据包含的所有数据,分别写入除目标备选存储节点本地的第二OSD以外的其他第二OSD,也就完成了在第二OSD中写入待存储数据块,即,完成了待存储数据块在缓存池的写入,后续,则可以将待存储数据块从缓存池写入HDD池。
在一个实施例中,第二数据布局策略可以为纠删码策略,相应的,参见图5,在S305之前,该方法还可以包括以下步骤:
S309:基于第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块,以及确定待存储数据块对应的校验数据块。
S3010:确定OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点。
S3011:将第三数目个子数据块中的第一个子数据块,写入目标备选存储节点本地的第二OSD。
S3012:通过目标备选存储节点本地的第二OSD,将第三数目个子数据块中除第一个子数据块以外的其他子数据块,以及校验数据块,分别写入除目标备选存储节点本地的第二OSD以外的其他第二OSD。
在本申请实施例中,基于纠删码策略,可以对待存储数据块进行划分,得到多个子数据块,另外,还可以得到待存储数据块对应的校验数据块。例如,针对(N,M)的纠删码策略,可以将待存储数据块N等分,得到N个子数据块,且生成M个校验数据块。
在本申请实施例中,OSD集合中第一个第一OSD,也就是确定出的主OSD。数据存储系统中与主机对应的指定存储节点,可以获取主机发送的待存储数据块,并存储在内存中。在确定出OSD集合和第二OSD后,可以确定OSD集合中的主OSD,进而,可以确定该主OSD所属的存储节点(即本申请实施例中的目标备选存储节点)。
如果缓存池为纠删码策略,则可以将对待存储数据块进行划分得到的第三数目个子数据块中的第一个子数据块,写入目标备选存储节点本地的第二OSD。另外,还可以将待存储数据块发送至目标备选存储节点,目标备选存储节点则可以将待存储数据块存储至内存中。
相应的,目标备选存储节点本地的第二OSD,则可以从内存中获取待存储数据块,并确定对待存储数据块进行划分得到的第三数目个子数据块,以及对应的校验数据块。
另外,目标备选存储节点本地的第二OSD,还可以基于CRUSH算法,确定针对待存储数据块的其他第二OSD,且可以确定自身为主OSD。
进而,目标备选存储节点本地的第二OSD,可以将第三数目个子数据块中除第一个子数据块以外的其他子数据块,以及校验数据块,分别写入除目标备选存储节点本地的第二OSD以外的其他第二OSD。也就完成了在第二OSD中写入待存储数据块,即,完成了待存储数据块在缓存池的写入,后续,则可以将待存储数据块从缓存池写入HDD池。
另外,目标备选存储节点本地的第二OSD,还可以向其他第二OSD所属的存储节点发送待存储数据块包含的所有数据,相应的,其他第二OSD所属的存储节点则可以将待存储数据块包含的所有数据存储在内存中。
在一个实施例中,第一数据布局策略可以为多副本策略,相应的,参见图6,步骤305可以包括以下步骤:
S3051:在该备选存储节点本地的第二OSD写入待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD。
在本申请实施例中,如果HDD池为多副本策略,针对每一备选存储节点,可以通过该备选存储节点本地的第二OSD,将待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD。
一种实现方式中,在该情况下,如果缓存池也是多副本策略,则每一第二OSD可以直接将该第二OSD中存储的待存储数据块包含的所有数据,该第二OSD所属的存储节点本地的第一OSD。
另外,如果缓存池为纠删码策略,则每一第二OSD可以从所属存储节点的内存中获取待存储数据块包含的所有数据,并写入该第二OSD所属的存储节点本地的第一OSD。
在一个实施例中,在图6的基础上,参见图7,在S3051之后,该方法还可以包括以下步骤:
S3013:确定OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点。
S3014:通过目标备选存储节点本地的第一OSD,确定OSD集合中不属于备选存储节点的第一OSD,作为第三OSD。
S3015:通过目标备选存储节点本地的第一OSD,将待存储数据块包含的所有数据写入第三OSD。
在本申请实施例中,在每一备选存储节点的第二OSD将待存储数据块包含的所有数据写入对应的第一OSD后,如果第一数目大于第二数目,此时,OSD集合中的主OSD(即本申请实施例中目标备选存储节点本地的第一OSD),还可以将待存储数据块包含的所有数据写入HDD池中未写入待存储数据块的数据的第一OSD(即本申请实施例中的第三OSD)。
在一个实施例中,第一数据布局策略可以为纠删码策略,相应的,参见图8,在步骤305之前,该方法还可以包括以下步骤:
S3016:通过该备选存储节点本地的第二OSD,基于第一数据布局策略,确定对待存储数据块进行划分得到的第三数目个子数据块。
S3017:通过该备选存储节点本地的第二OSD,从第三数目个子数据块中,确定本地的第一OSD在OSD集合中的顺序对应的子数据块,作为目标子数据块。
相应的,S305可以包括:
S3052:在该备选存储节点本地的第二OSD写入待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将目标子数据块写入该备选存储节点本地的第一OSD。
在本申请实施例中,如果HDD池为纠删码策略,针对每一备选存储节点,可以通过该备选存储节点本地的第二OSD,基于第一数据布局策略,确定对待存储数据块进行划分得到的第三数目个子数据块,并确定本地的第一OSD在OSD集合中的顺序对应的子数据块(即目标子数据块)。
相应的,针对每一备选存储节点,该备选存储节点本地的第二OSD,可以将对应的目标子数据块写入该备选存储节点本地的第一OSD。
例如,第二OSD的数目为3,HDD池的纠删码策略为(4,2),也就是,第一OSD的数目为6。可以将待存储数据块划分为4个子数据块,且可以得到2个校验数据块。
确定出的三个第二OSD分别为OSD1、OSD2和OSD3,与OSD1属于同一备选存储节点的第一OSD为OSD5,与OSD2属于同一备选存储节点的第一OSD为OSD6,与OSD3属于同一备选存储节点的第一OSD为OSD7,另外,第一OSD还可以包括OSD8、OSD9和OSD10。
相应的,OSD1对应的目标子数据块可以为待存储数据块的前1/4,OSD1可以将待存储数据块的前1/4写入OSD5;OSD2对应的目标子数据块可以为待存储数据块的1/4处至2/4处的数据,OSD2可以将待存储数据块的1/4处至2/4处的数据写入OSD6;OSD3对应的目标子数据块可以为待存储数据块的2/4处至3/4处的数据,OSD3可以将待存储数据块的2/4处至3/4处的数据写入OSD7。
在一个实施例中,参见图9,在步骤S3052之后,该方法还可以包括以下步骤:
S3018:确定OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点。
S3019:通过目标备选存储节点本地的第一OSD,确定OSD集合中不属于备选存储节点的第一OSD,作为第三OSD。
S3021:通过目标备选存储节点本地的第一OSD,基于第二数据布局策略,确定对待存储数据块进行划分得到的第三数目个子数据块,以及确定待存储数据块对应的校验数据块。
S3022:通过目标备选存储节点本地的第一OSD,确定第三数目个子数据块中,除OSD集合中的第一OSD对应的子数据块以外的其他子数据块,作为备选子数据块。
S3023:通过目标备选存储节点本地的第一OSD,将所述校验数据块和所述备选子数据块,分别写入第三OSD。
在本申请实施例中,在每一备选存储节点本地的第二OSD将对应的目标子数据块写入该备选存储节点本地的第一OSD后,OSD集合中的主OSD(即本申请实施例中目标备选存储节点本地的第一OSD),还可以确定除OSD集合中的第一OSD对应的子数据块以外的其他子数据块(即备选子数据块),进而,可以将备选子数据块和校验数据块,分别写入第三OSD。
针对上述示例,OSD1将待存储数据块的前1/4写入OSD5后,由于OSD1为主OSD,相应的,OSD5可以作为主OSD。OSD5可以将待存储数据块的后1/4写入OSD8,将2个校验数据块分别写入OSD9和OSD10。也就完成了在第一OSD中写入待存储数据块,即,完成了待存储数据块在HDD池的写入。
参见图10,图10为本申请实施例提供的一种数据写入过程的示意图。
图10中,缓存池为3副本策略,HDD池为3副本策略。
例如,存储节点1接收到主机发送的待存储数据块,存储节点1可以从HDD池中,依次确定待存储数据块所属的数据管理组对应的3个第一OSD(例如,为OSD28、OSD46和OSD11),OSD28为主OSD,OSD46和OSD11为从OSD。
进而,可以确定OSD28、OSD46和OSD11所属的存储节点(即,存储节点1、存储节点2和存储节点3)为备选存储节点。
相应的,针对存储节点1,基于CRUSH算法,从OSD0、OSD1和OSD2中确定待存储数据块所属的数据管理组对应的第二OSD(例如,OSD1);针对存储节点2,基于CRUSH算法,从OSD18、OSD19和OSD20中确定待存储数据块所属的数据管理组对应的第二OSD(例如,OSD18);针对存储节点3,基于CRUSH算法,从OSD36、OSD37和OSD38中确定待存储数据块所属的数据管理组对应的第二OSD(例如,OSD38)。
由于OSD28为主OSD,相应的,OSD18也为主OSD。存储节点1可以将待存储数据块写入OSD18,进而,OSD18可以将待存储数据块分别写入OSD1和OSD38。
相应的,OSD1、OSD18和OSD38,均可以确定第一OSD包括OSD11、OSD28和OSD46,进而,OSD1可以将待存储数据块写入OSD11,OSD18可以将待存储数据块写入OSD28,OSD38可以将待存储数据块写入OSD46。
可见,上述过程中,在待存储数据块从缓存池写入HDD池的过程中,均是同一存储节点的OSD之间写入数据,能够降低数据写入耗费的网络带宽,且降低数据写入的时延,进而,提高数据存储系统的整体性能。
参见图11,图11为本申请实施例提供的另一种数据写入过程的示意图。
图11中,缓存池为3副本策略,HDD池为4副本策略。
例如,存储节点1接收到主机发送的待存储数据块,存储节点1可以从HDD池中,依次确定待存储数据块所属的数据管理组对应的4个第一OSD(例如,为OSD28、OSD46、OSD11和OSD64),OSD28为主OSD,OSD46、OSD11和OSD64为从OSD。
进而,可以确定OSD28、OSD46和OSD11所属的存储节点(即,存储节点1、存储节点2和存储节点3)为备选存储节点。
同理,针对存储节点1,基于CRUSH算法,从OSD0、OSD1和OSD2中确定待存储数据块所属的数据管理组对应的第二OSD(为OSD1);针对存储节点2,基于CRUSH算法,从OSD18、OSD19和OSD20中确定待存储数据块所属的数据管理组对应的第二OSD(为OSD18);针对存储节点3,基于CRUSH算法,从OSD36、OSD37和OSD38中确定待存储数据块所属的数据管理组对应的第二OSD(为OSD38)。
由于OSD28为主OSD,相应的,OSD18也为主OSD。存储节点1可以将待存储数据块写入OSD18,进而,OSD18可以将待存储数据块分别写入OSD1和OSD38。
相应的,OSD1、OSD18和OSD38,均可以确定第一OSD包括OSD11、OSD28和OSD46,进而,OSD1可以将待存储数据块写入OSD11,OSD18可以将待存储数据块写入OSD28,OSD38可以将待存储数据块写入OSD46。
OSD28作为主OSD,还可以将待存储数据块写入OSD64。
可见,上述过程中,在待存储数据块从缓存池写入HDD池的过程中,只有一次跨存储节点的数据写入,能够降低数据写入耗费的网络带宽,且降低数据写入的时延,进而,提高数据存储系统的整体性能。
参见图12,图12为本申请实施例提供的另一种数据写入过程的示意图。
图12中,缓存池为2副本策略,HDD池为(2,2)纠删码策略。
例如,存储节点1接收到主机发送的待存储数据块,存储节点1可以从HDD池中,依次确定待存储数据块所属的数据管理组对应的4个第一OSD(例如,为OSD28、OSD11、OSD46和OSD64),OSD28为主OSD,OSD46、OSD11和OSD64为从OSD。
进而,可以确定OSD28和OSD11所属的存储节点(即,存储节点1和存储节点2)为备选存储节点。
同理,针对存储节点1,基于CRUSH算法,从OSD0、OSD1和OSD2中确定待存储数据块所属的数据管理组对应的第二OSD(为OSD1);针对存储节点2,基于CRUSH算法,从OSD18、OSD19和OSD20中确定待存储数据块所属的数据管理组对应的第二OSD(为OSD18)。
由于OSD28为主OSD,相应的,OSD18也为主OSD。存储节点1可以将待存储数据块写入OSD18,进而,OSD18可以将待存储数据块写入OSD1。
相应的,OSD1和OSD18,均可以确定第一OSD包括OSD28、OSD11、OSD46和OSD64,进而,OSD1可以将待存储数据块的前1/2写入OSD11,OSD18可以将待存储数据块的后1/2写入OSD28。
OSD28作为主OSD,还可以基于存储节点2的内存中存储的待存储数据块,生成待存储数据块对应的2个校验数据块,并分别写入OSD46和OSD64。
可见,上述过程中,在待存储数据块从缓存池写入HDD池的过程中,只有两次跨存储节点的数据写入,能够降低数据写入耗费的网络带宽,且降低数据写入的时延,进而,提高数据存储系统的整体性能。
基于相同的发明构思,本申请实施例还提供了一种数据写入装置,该装置应用于数据存储系统,数据存储系统包含多个存储节点,每一存储节点包含缓存池中的对象存储设备OSD和硬盘驱动器HDD池中的OSD。参见图13,图13为本申请实施例提供的一种数据写入装置的结构图,该装置可以包括:
待存储数据块获取模块1301,用于获取待存储数据块;
OSD集合获取模块1302,用于基于所述HDD池的第一数据布局策略,从所述HDD池中依次确定所述待存储数据块所属的数据管理组对应的第一数目个第一OSD,得到OSD集合;
备选存储节点确定模块1303,用于基于所述缓存池的第二数据布局策略,确定所述OSD集合中前第二数目个第一OSD所属的存储节点,作为备选存储节点;
第一处理模块1304,用于针对每一所述备选存储节点,从该备选存储节点包含的属于所述缓存池的OSD中,确定所述待存储数据块所属的数据管理组对应的第二OSD;
第一写入模块1305,用于在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD。
可选的,所述第二数据布局策略为多副本策略;
所述装置还包括:
目标备选存储节点确定模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第二写入模块,用于将所述待存储数据块包含的所有数据,写入所述目标备选存储节点本地的第二OSD;
第三写入模块,用于通过所述目标备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据,写入除所述目标备选存储节点本地的第二OSD以外的其他第二OSD。
可选的,所述第二数据布局策略为纠删码策略;
所述装置还包括:
第二处理模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块,以及确定所述待存储数据块对应的校验数据块;
目标备选存储节点确定模块,用于确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第四写入模块,用于将所述第三数目个子数据块中的第一个子数据块,写入所述目标备选存储节点本地的第二OSD;
第五写入模块,用于通过所述目标备选存储节点本地的第二OSD,将所述第三数目个子数据块中除所述第一个子数据块以外的其他子数据块,以及所述校验数据块,分别写入除所述目标备选存储节点本地的第二OSD以外的其他第二OSD。
可选的,所述第一数据布局策略为多副本策略;
所述第一写入模块1305,具体用于在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD。
可选的,所述装置还包括:
目标备选存储节点确定模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD之后,确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第三OSD确定模块,用于通过所述目标备选存储节点本地的第一OSD,确定所述OSD集合中不属于所述备选存储节点的第一OSD,作为第三OSD;
第六写入模块,用于通过所述目标备选存储节点本地的第一OSD,将所述待存储数据块包含的所有数据写入所述第三OSD。
可选的,所述第一数据布局策略为纠删码策略;
所述装置还包括:
第三处理模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,通过该备选存储节点本地的第二OSD,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块;
目标子数据块确定模块,用于通过该备选存储节点本地的第二OSD,从所述第三数目个子数据块中,确定本地的第一OSD在所述OSD集合中的顺序对应的子数据块,作为目标子数据块;
所述第一写入模块1305,具体用于在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述目标子数据块写入该备选存储节点本地的第一OSD。
可选的,所述装置还包括:
目标备选存储节点确定模块,用于在通过该备选存储节点本地的第二OSD,将所述目标子数据块写入该备选存储节点本地的第一OSD之后,确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第三OSD确定模块,用于通过所述目标备选存储节点本地的第一OSD,确定所述OSD集合中不属于所述备选存储节点的第一OSD,作为第三OSD;
第四处理模块,用于通过所述目标备选存储节点本地的第一OSD,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块,以及确定所述待存储数据块对应的校验数据块;
备选子数据块确定模块,用于通过所述目标备选存储节点本地的第一OSD,确定所述第三数目个子数据块中,除所述OSD集合中的第一OSD对应的子数据块以外的其他子数据块,作为备选子数据块;
第七写入模块,用于通过所述目标备选存储节点本地的第一OSD,将所述校验数据块和所述备选子数据块,分别写入所述第三OSD。
本申请实施例还提供了一种电子设备,如图14所示,包括处理器1401、通信接口1402、存储器1403和通信总线1404,其中,处理器1401,通信接口1402,存储器1403通过通信总线1404完成相互间的通信,
存储器1403,用于存放计算机程序;
处理器1401,用于执行存储器1403上所存放的程序时,实现上述实施例中的数据写入方法。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线504可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时,实现上述实施例中的数据写入方法。
本申请实施例还提供了另一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本申请实施例提供的数据写入方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质、计算机程序产品实施例而言,由于其基本相似于系统实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的较佳实施例,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本申请的保护范围内。

Claims (16)

1.一种数据写入方法,其特征在于,所述方法应用于数据存储系统,所述数据存储系统包含多个存储节点,每一所述存储节点包含缓存池中的对象存储设备OSD和硬盘驱动器HDD池中的OSD,所述方法包括:
获取待存储数据块;
基于所述HDD池的第一数据布局策略,从所述HDD池中依次确定所述待存储数据块所属的数据管理组对应的第一数目个第一OSD,得到OSD集合;
基于所述缓存池的第二数据布局策略,确定所述OSD集合中前第二数目个第一OSD所属的存储节点,作为备选存储节点;
针对每一所述备选存储节点,从该备选存储节点包含的属于所述缓存池的OSD中,确定所述待存储数据块所属的数据管理组对应的第二OSD;
在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD。
2.根据权利要求1所述的方法,其特征在于,所述第二数据布局策略为多副本策略;
在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,所述方法还包括:
确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
将所述待存储数据块包含的所有数据,写入所述目标备选存储节点本地的第二OSD;
通过所述目标备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据,写入除所述目标备选存储节点本地的第二OSD以外的其他第二OSD。
3.根据权利要求1所述的方法,其特征在于,所述第二数据布局策略为纠删码策略;
在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,所述方法还包括:
基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块,以及确定所述待存储数据块对应的校验数据块;
确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
将所述第三数目个子数据块中的第一个子数据块,写入所述目标备选存储节点本地的第二OSD;
通过所述目标备选存储节点本地的第二OSD,将所述第三数目个子数据块中除所述第一个子数据块以外的其他子数据块,以及所述校验数据块,分别写入除所述目标备选存储节点本地的第二OSD以外的其他第二OSD。
4.根据权利要求1所述的方法,其特征在于,所述第一数据布局策略为多副本策略;
所述在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD,包括:
在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD。
5.根据权利要求4所述的方法,其特征在于,在通过该备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD之后,所述方法还包括:
确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
通过所述目标备选存储节点本地的第一OSD,确定所述OSD集合中不属于所述备选存储节点的第一OSD,作为第三OSD;
通过所述目标备选存储节点本地的第一OSD,将所述待存储数据块包含的所有数据写入所述第三OSD。
6.根据权利要求1所述的方法,其特征在于,所述第一数据布局策略为纠删码策略;
在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,所述方法还包括:
通过该备选存储节点本地的第二OSD,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块;
通过该备选存储节点本地的第二OSD,从所述第三数目个子数据块中,确定本地的第一OSD在所述OSD集合中的顺序对应的子数据块,作为目标子数据块;
所述在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD,包括:
在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述目标子数据块写入该备选存储节点本地的第一OSD。
7.根据权利要求6所述的方法,其特征在于,在通过该备选存储节点本地的第二OSD,将所述目标子数据块写入该备选存储节点本地的第一OSD之后,所述方法还包括:
确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
通过所述目标备选存储节点本地的第一OSD,确定所述OSD集合中不属于所述备选存储节点的第一OSD,作为第三OSD;
通过所述目标备选存储节点本地的第一OSD,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块,以及确定所述待存储数据块对应的校验数据块;
通过所述目标备选存储节点本地的第一OSD,确定所述第三数目个子数据块中,除所述OSD集合中的第一OSD对应的子数据块以外的其他子数据块,作为备选子数据块;
通过所述目标备选存储节点本地的第一OSD,将所述校验数据块和所述备选子数据块,分别写入所述第三OSD。
8.一种数据写入装置,其特征在于,所述装置应用于数据存储系统,所述数据存储系统包含多个存储节点,每一所述存储节点包含缓存池中的对象存储设备OSD和硬盘驱动器HDD池中的OSD,所述装置包括:
待存储数据块获取模块,用于获取待存储数据块;
OSD集合获取模块,用于基于所述HDD池的第一数据布局策略,从所述HDD池中依次确定所述待存储数据块所属的数据管理组对应的第一数目个第一OSD,得到OSD集合;
备选存储节点确定模块,用于基于所述缓存池的第二数据布局策略,确定所述OSD集合中前第二数目个第一OSD所属的存储节点,作为备选存储节点;
第一处理模块,用于针对每一所述备选存储节点,从该备选存储节点包含的属于所述缓存池的OSD中,确定所述待存储数据块所属的数据管理组对应的第二OSD;
第一写入模块,用于在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD。
9.根据权利要求8所述的装置,其特征在于,所述第二数据布局策略为多副本策略;
所述装置还包括:
目标备选存储节点确定模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第二写入模块,用于将所述待存储数据块包含的所有数据,写入所述目标备选存储节点本地的第二OSD;
第三写入模块,用于通过所述目标备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据,写入除所述目标备选存储节点本地的第二OSD以外的其他第二OSD。
10.根据权利要求8所述的装置,其特征在于,所述第二数据布局策略为纠删码策略;
所述装置还包括:
第二处理模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块,以及确定所述待存储数据块对应的校验数据块;
目标备选存储节点确定模块,用于确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第四写入模块,用于将所述第三数目个子数据块中的第一个子数据块,写入所述目标备选存储节点本地的第二OSD;
第五写入模块,用于通过所述目标备选存储节点本地的第二OSD,将所述第三数目个子数据块中除所述第一个子数据块以外的其他子数据块,以及所述校验数据块,分别写入除所述目标备选存储节点本地的第二OSD以外的其他第二OSD。
11.根据权利要求8所述的装置,其特征在于,所述第一数据布局策略为多副本策略;
所述第一写入模块,具体用于在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD。
12.根据权利要求11所述的装置,其特征在于,
所述装置还包括:
目标备选存储节点确定模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块包含的所有数据写入该备选存储节点本地的第一OSD之后,确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第三OSD确定模块,用于通过所述目标备选存储节点本地的第一OSD,确定所述OSD集合中不属于所述备选存储节点的第一OSD,作为第三OSD;
第六写入模块,用于通过所述目标备选存储节点本地的第一OSD,将所述待存储数据块包含的所有数据写入所述第三OSD。
13.根据权利要求8所述的装置,其特征在于,所述第一数据布局策略为纠删码策略;
所述装置还包括:
第三处理模块,用于在通过该备选存储节点本地的第二OSD,将所述待存储数据块中的数据写入该备选存储节点本地的第一OSD之前,通过该备选存储节点本地的第二OSD,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块;
目标子数据块确定模块,用于通过该备选存储节点本地的第二OSD,从所述第三数目个子数据块中,确定本地的第一OSD在所述OSD集合中的顺序对应的子数据块,作为目标子数据块;
所述第一写入模块,具体用于在该备选存储节点本地的第二OSD写入所述待存储数据块中的数据后,通过该备选存储节点本地的第二OSD,将所述目标子数据块写入该备选存储节点本地的第一OSD。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括:
目标备选存储节点确定模块,用于在通过该备选存储节点本地的第二OSD,将所述目标子数据块写入该备选存储节点本地的第一OSD之后,确定所述OSD集合中的第一个第一OSD所属的备选存储节点,作为目标备选存储节点;
第三OSD确定模块,用于通过所述目标备选存储节点本地的第一OSD,确定所述OSD集合中不属于所述备选存储节点的第一OSD,作为第三OSD;
第四处理模块,用于通过所述目标备选存储节点本地的第一OSD,基于所述第二数据布局策略,确定对所述待存储数据块进行划分得到的第三数目个子数据块,以及确定所述待存储数据块对应的校验数据块;
备选子数据块确定模块,用于通过所述目标备选存储节点本地的第一OSD,确定所述第三数目个子数据块中,除所述OSD集合中的第一OSD对应的子数据块以外的其他子数据块,作为备选子数据块;
第七写入模块,用于通过所述目标备选存储节点本地的第一OSD,将所述校验数据块和所述备选子数据块,分别写入所述第三OSD。
15.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述存储器上所存放的程序时,实现权利要求1-7任一所述的方法步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-7任一所述的方法步骤。
CN202011264296.XA 2020-11-12 2020-11-12 一种数据写入方法和装置 Active CN112363674B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011264296.XA CN112363674B (zh) 2020-11-12 2020-11-12 一种数据写入方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011264296.XA CN112363674B (zh) 2020-11-12 2020-11-12 一种数据写入方法和装置

Publications (2)

Publication Number Publication Date
CN112363674A true CN112363674A (zh) 2021-02-12
CN112363674B CN112363674B (zh) 2022-04-22

Family

ID=74514562

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011264296.XA Active CN112363674B (zh) 2020-11-12 2020-11-12 一种数据写入方法和装置

Country Status (1)

Country Link
CN (1) CN112363674B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010018728A1 (en) * 2000-02-25 2001-08-30 Hewlett-Packard Company Data storage system having redundant solid state data storage device
US20030233502A1 (en) * 2002-06-14 2003-12-18 Hitachi, Ltd. Method and apparatus for storage system
CN107250975A (zh) * 2014-12-09 2017-10-13 清华大学 数据存储系统和数据存储方法
CN108255429A (zh) * 2018-01-10 2018-07-06 郑州云海信息技术有限公司 一种写操作控制方法、系统、装置及计算机可读存储介质
CN109992204A (zh) * 2019-03-19 2019-07-09 新华三技术有限公司成都分公司 数据存储方法及装置
CN110703988A (zh) * 2019-08-31 2020-01-17 苏州浪潮智能科技有限公司 一种分布式存储的存储池创建方法、系统、终端及存储介质
CN110780819A (zh) * 2019-10-25 2020-02-11 浪潮电子信息产业股份有限公司 一种分布式存储系统的数据读写方法
CN111124301A (zh) * 2019-12-18 2020-05-08 深圳供电局有限公司 一种对象存储设备的数据一致性存储方法及系统

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20010018728A1 (en) * 2000-02-25 2001-08-30 Hewlett-Packard Company Data storage system having redundant solid state data storage device
US20030233502A1 (en) * 2002-06-14 2003-12-18 Hitachi, Ltd. Method and apparatus for storage system
CN107250975A (zh) * 2014-12-09 2017-10-13 清华大学 数据存储系统和数据存储方法
CN108255429A (zh) * 2018-01-10 2018-07-06 郑州云海信息技术有限公司 一种写操作控制方法、系统、装置及计算机可读存储介质
CN109992204A (zh) * 2019-03-19 2019-07-09 新华三技术有限公司成都分公司 数据存储方法及装置
CN110703988A (zh) * 2019-08-31 2020-01-17 苏州浪潮智能科技有限公司 一种分布式存储的存储池创建方法、系统、终端及存储介质
CN110780819A (zh) * 2019-10-25 2020-02-11 浪潮电子信息产业股份有限公司 一种分布式存储系统的数据读写方法
CN111124301A (zh) * 2019-12-18 2020-05-08 深圳供电局有限公司 一种对象存储设备的数据一致性存储方法及系统

Also Published As

Publication number Publication date
CN112363674B (zh) 2022-04-22

Similar Documents

Publication Publication Date Title
CN110291509B (zh) 在分散存储网络的区域中存储数据的方法和系统
US10235060B1 (en) Multilevel snapshot replication for hot and cold regions of a storage system
US10157000B2 (en) Data operation method and device
CN106446159B (zh) 一种存储文件的方法、第一虚拟机及名称节点
CN109725823B (zh) 用于管理混合存储盘阵列的方法和设备
US7734842B2 (en) Computer-implemented method, apparatus, and computer program product for managing DMA write page faults using a pool of substitute pages
US11455100B2 (en) Handling data slice revisions in a dispersed storage network
US20200341674A1 (en) Method, device and computer program product for restoring data
KR20210075038A (ko) 분산형 블록 저장시스템, 방법, 장치, 장비와 매체
US7650476B2 (en) System, method and computer program product for generating a consistent point in time copy of data
CN110419029B (zh) 在分布式存储网络中部分更新数据内容的方法
CN115167786A (zh) 一种数据存储方法、装置、系统、设备和介质
CN113126887A (zh) 用于重建盘阵列的方法、电子设备和计算机程序产品
US10409492B2 (en) Multi-phase dispersed storage write process
CN112748849A (zh) 用于存储数据的方法、设备和计算机程序产品
KR20140080919A (ko) 분산 파일 시스템에서 효율적인 자료 저장 방법
CN116501264B (zh) 一种数据存储方法、装置、系统、设备及可读存储介质
CN112363674B (zh) 一种数据写入方法和装置
EP3264254B1 (en) System and method for a simulation of a block storage system on an object storage system
CN115981559A (zh) 分布式数据存储方法、装置、电子设备和可读介质
US10089228B2 (en) I/O blender countermeasures
US11620080B2 (en) Data storage method, device and computer program product
US20220164259A1 (en) Creating a backup data set
US10379961B2 (en) Ensuring metadata and index consistency using write intents
CN112988034B (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