CN115617264A - 分布式存储方法及装置 - Google Patents
分布式存储方法及装置 Download PDFInfo
- Publication number
- CN115617264A CN115617264A CN202211154101.5A CN202211154101A CN115617264A CN 115617264 A CN115617264 A CN 115617264A CN 202211154101 A CN202211154101 A CN 202211154101A CN 115617264 A CN115617264 A CN 115617264A
- Authority
- CN
- China
- Prior art keywords
- storage
- data
- storage area
- node
- client
- 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
Links
- 238000003860 storage Methods 0.000 title claims abstract description 757
- 238000000034 method Methods 0.000 title claims abstract description 75
- 230000004044 response Effects 0.000 claims abstract description 21
- 238000007726 management method Methods 0.000 claims description 183
- 238000013500 data storage Methods 0.000 claims description 38
- 238000013507 mapping Methods 0.000 claims description 32
- 238000005520 cutting process Methods 0.000 claims description 6
- 230000000977 initiatory effect Effects 0.000 claims description 3
- 230000008859 change Effects 0.000 claims description 2
- 238000011084 recovery Methods 0.000 description 13
- 238000005192 partition Methods 0.000 description 12
- 238000010586 diagram Methods 0.000 description 11
- 239000012634 fragment Substances 0.000 description 10
- 230000008569 process Effects 0.000 description 6
- 238000012545 processing Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000012423 maintenance Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000002071 nanotube Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
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/0604—Improving or facilitating administration, e.g. storage management
-
- 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/061—Improving I/O performance
-
- 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/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0689—Disk arrays, e.g. RAID, JBOD
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)
- Computer Networks & Wireless Communication (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种分布式存储方法及装置。该分布式存储方法包括:第一存储节点响应于客户端的数据写入请求,确定用来写入数据的存储磁盘,数据写入请求是客户端响应于管理节点确定的存储客户端的数据的预定数量个存储节点包括第一存储节点而下达的;响应于存储磁盘为叠瓦式磁记录盘,第一存储节点从叠瓦式磁记录盘中的可用存储区域中选取至少一个存储区域,将客户端传来的数据写入到所选取的存储区域。本申请可以提高利用SMR磁盘进行分布式存储的效率。
Description
技术领域
本申请涉及分布式处理技术领域,特别是涉及一种分布式存储方法及装置。
背景技术
SMR(Shingled Magnetic Recording,叠瓦式磁记录盘)是一种领先的下一代磁盘技术,相邻磁道之间按序部分重叠,能提高单位存储介质的存储密度,降低存储成本。正是由于SMR磁盘上面物理上的特点,导致了它的读行为虽然与普通HDD机械硬盘无异,但是它的写行为却有着巨大的变化,它不支持随机写和原地更新写,因为这样会导致相重叠磁道数据被覆盖。因此SMR磁盘仅支持从头到尾的顺序写入。
SMR磁盘将磁道划分为多个带(Band),即由连续磁道所构成的可连续写入的区域,每个区域成为一个需要顺序写入的基本单元。Band是SMR磁盘物理概念,对应的逻辑概念称为“区域”(Zone),一个Zone的大小约为256MB。
虽然SMR磁盘在价格有着一定的优势。但是由于SMR磁盘的上述特点,使得目前暂未出现高效的利用SMR磁盘进行分布式存储的方案。
发明内容
本申请提供一种分布式存储方法及装置,可以提高利用SMR磁盘进行分布式存储的效率。
为达到上述目的,本申请提供一种分布式存储方法,该方法包括:
第一存储节点响应于客户端的数据写入请求,确定用来写入数据的存储磁盘,所述数据写入请求是所述客户端响应于所述管理节点确定的存储所述客户端的数据的预定数量个存储节点包括所述第一存储节点而下达的;
响应于所述存储磁盘为叠瓦式磁记录盘,所述第一存储节点从所述叠瓦式磁记录盘中的可用存储区域中选取至少一个存储区域,将所述客户端传来的数据写入到所选取的存储区域。
其中,所述第一存储节点从所述叠瓦式磁记录盘中的可用存储区域中选取至少一个存储区域,将所述客户端传来的数据写入到所选取的存储区域,包括:
从所述叠瓦式磁记录盘的活跃存储区域列表中选取一个能够存储所述客户端传来的数据的存储区域,将所述客户端传来的数据写入到所选取的存储区域;
其中,所述活跃存储区域列表由能够响应数据写入操作的存储区域组成。
其中,所述第一存储节点从所述叠瓦式磁记录盘中的可用存储区域中选取至少一个存储区域,将所述客户端传来的数据写入到所选取的存储区域,包括:
确定所述叠瓦式磁记录盘的活跃存储区域列表中是否存在能够存储所述数据的存储区域;
若存在,执行所述从所述叠瓦式磁记录盘的活跃存储区域列表中选取一个能够存储所述数据的存储区域,将所述数据写入到所选取的存储区域的步骤;
若不存在,将所述叠瓦式磁记录盘中的一个全新存储区域加入到活跃存储区域列表中,并将所述全新存储区域作为所述所选取的存储区域。
其中,所述若不存在,将所述叠瓦式磁记录盘中的一个全新存储区域加入到活跃存储区域列表中,包括:
若不存在,则确认所述活跃存储区域列表大小是否大于或等于上限值;
若大于或等于,则写入失败;
若小于,则执行所述将所述叠瓦式磁记录盘中的一个全新存储区域加入到活跃存储区域列表中,并将所述全新存储区域作为所述所选取的存储区域的步骤。
其中,所述方法还包括:
将使用时间超过复用周期的存储区域从所述活跃存储区域列表移除。
其中,所述方法还包括:
在所述超过复用周期的存储区域中所有数据均过期的情况下,删除所述超过复用周期的存储区域中所有数据,以将所述超过复用周期的存储区域变为全新存储区域。
其中,所述将所述客户端传来的数据写入到所选取的存储区域,之后包括:
响应于所述所选取的存储区域中的已用空间大于或等于预设比例,将所述所选取的存储区域从所述活跃存储区域列表移除。
其中,所述将所述客户端传来的数据写入到所选取的存储区域,之后包括:
存储所述数据和所选取的存储区域及其所属磁盘的映射关系。
其中,所述存储所述数据和所选取的存储区域及其所属磁盘的映射关系,包括:
将所述映射关系存储于所述叠瓦式磁记录盘的传统磁记录分区中;或,将所述映射关系存储于所述叠瓦式磁记录盘的传统磁记录分区和内存中。
其中,
向管理节点汇报所述数据的相关信息和/或所述第一存储节点的存储空间信息。
其中,所述存储方法以数据块为单位进行存储,所述方法还包括:
所述第一存储节点周期性扫描所述第一存储节点的磁盘上所有数据块的状态;
所述向管理节点汇报所述数据块的相关信息和/或所述第一存储节点的存储空间信息,包括:
向所述管理节点汇报所述第一存储节点上所有数据块的状态,以使所述管理节点基于所述所有数据块中每一数据块的状态及其余存储节点上存储的与所述每一数据块相关的数据块的状态,确认所述每一数据块对应对象及文件的状态。
其中,所述以使所述管理节点基于所述所有数据块中每一数据块的状态及其余存储节点上存储的与所述每一数据块相关的数据块的状态,确认所述每一数据块对应对象及文件的状态,包括:
在一个对象的损坏数据块个数小于或等于预设值时,将所述对象及其对应的文件的状态标记为待恢复;
在一个对象的损坏数据块个数大于预设值时,将所述对象及其对应的文件的状态标记为损坏。
为达到上述目的,本申请提供一种分布式存储方法,所述方法应用于分布式存储系统,所述方法包括:
客户端向管理节点发出数据存储请求,以使所述管理节点基于所述数据存储请求确定出所述分布式存储系统中的预定数量个存储节点;
所述客户端向所述预定数量个第一存储节点发起数据写入,以在所述预定数量个存储节点中的至少一个存储节点中的用来写入数据的存储磁盘为叠瓦式磁记录盘的情况下,所述至少一个存储节点从各自的叠瓦式磁记录盘中的可用存储区域中选取至少一个用来写入所述客户端传来的数据的存储区域。
其中,所述客户端向所述预定数量个存储节点发起数据写入,之后包括:
基于所述至少一个存储节点各自的所选取的存储区域容量确定所述文件的第一个对象的大小,并基于所述大小从所述文件切换出所述第一个对象;
将所述第一个对象分成预定数量个数据块;
将所述预定数量个数据块分别发送给所述预定数量个存储节点,以使所述预定数量个存储节点分别将对应的数据块写入并存储。
其中,所述将所述预定数量个数据块分别发送给所述预定数量个存储节点,以使所述预定数量个存储节点分别将对应的数据块写入并存储,包括:
在所述预定数量个存储节点各自的第一个对象的数据写入量均大于或等于第二比例时,从所述文件切分出第一个对象的下一个对象并作为当前对象;基于所述当前对象向所述管理节点发出数据存储请求,以将所述当前对象分成的预定数量个数据块一一对应地存储到分布式存储系统中的与所述当前对象对应的预定数量个第二存储节点;
所述将所述预定数量个数据块分别发送给所述预定数量个存储节点,以使所述预定数量个存储节点分别将对应的数据块写入并存储,之后包括:
在所述当前对象不为所述文件的最后一个对象的情况下,响应于所述预定数量个第二存储节点各自的所述当前对象的数据写入量均大于或等于所述第二比例时,从所述文件切分出当前对象的下一个对象并作为当前对象,并返回执行所述基于所述当前对象向所述管理节点发出数据存储请求,以将所述当前对象分成的预定数量个数据块一一对应地存储到分布式存储系统中的与所述当前对象对应的预定数量个第二存储节点的步骤。
为达到上述目的,本申请提供一种分布式存储方法,所述方法包括:
所述管理节点响应于客户端的数据存储请求,确定出所述分布式存储系统中的预定数量个存储节点;
向所述客户端告知所述预定数量个存储节点,以使所述客户端向所述预定数量个存储节点发起数据写入,并在所述预定数量个存储节点中的至少一个存储节点中的用来写入数据的存储磁盘为叠瓦式磁记录盘的情况下,所述至少一个存储节点从各自的叠瓦式磁记录盘中的可用存储区域中选取至少一个用来写入所述客户端传来的数据的存储区域。
其中,所述方法还包括:
从各个存储节点获取各个存储节点上的所有数据块的状态;
基于数据块和对象的映射关系,确定每一对象的所有数据块的状态,进而确认每一对象及其对应文件的状态。
其中,所述确定每一对象的所有数据块的状态,进而确认每一对象及其对应文件的状态,之后包括:
在一对象的状态为待恢复的情况下,从所述分布式存储系统的所有存储节点中确定出一个目标存储节点;
控制所述目标存储节点恢复所述对象中的损坏数据块。
其中,所述控制所述目标存储节点恢复所述对象中的损坏数据块,包括:
将所述对象中所有数据块的存储节点信息和状态发送给所述目标存储节点,以使所述目标存储节点基于所述存储节点信息读取到所述对象的未损坏数据块,并基于所述未损坏数据块恢复出所述对象的目标数据块。
为达到上述目的,本申请还提供一种电子设备,该电子设备包括处理器;处理器用于执行指令以实现上述方法。
为达到上述目的,本申请还提供一种计算机可读存储介质,其用于存储指令/程序数据,指令/程序数据能够被执行以实现上述方法。
本申请中,管理节点只需基于客户端的数据写入请求确定出存储客户端数据的预定数量个存储节点,由预定数量个存储节点中每个存储节点自行确定是否将客户端的数据分配到自身的SMR磁盘中以及将客户端的数据分配到自身的SMR磁盘的哪个存储区域中,如此无需管理节点对所有SMR磁盘的所有存储区域进行管理和维护,如此管理节点可以无视存储节点上的磁盘类型而通过常规的分布式文件管理方法对所有存储节点进行统一管理,可以实现存储节点上磁盘类型对管理节点的全透明、无感知,极大地减轻了管理节点的管理负担,可以提高管理节点的分布式存储效率,并且使得包括管理节点和存储节点的分布式存储系统可以兼容CMR(Conventional Magnetic Recording,传统磁记录磁盘)等其他类型的磁盘。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请分布式存储系统一实施方式的结构示意图;
图2是本申请分布式存储系统中管理节点存储的信息示意图;
图3是本申请分布式存储方法一实施方式的结构示意图;
图4是本申请分布式存储方法中存储节点存储的信息示意图;
图5是本申请分布式存储方法中存储区域选取的流程示意图;
图6是本申请分布式存储方法中第一存储节点的工作流程示意图;
图7是本申请分布式存储方法中客户端的工作流程示意图;
图8是本申请分布式存储方法中管理节点的工作流程示意图;
图9是本申请电子设备一实施方式的结构示意图;
图10是本申请计算机可读存储介质一实施方式的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。另外,除非另外指明(例如,“或另外”或“或在替代方案中”),否则如本文所使用的术语“或”指代非排他性的“或”(即,“和/或”)。并且,本文所描述的各种实施例不一定相互排斥,因为一些实施例可以与一个或多个其它实施例组合以形成新的实施例。
SMR通过一定的逻辑将内部的物理存储区域分成一系列的逻辑“区域”,称之为Zone。Zone内数据的读写只支持顺序写,不支持随机写,就是按照写指针位置依次向后移动;Zone大小通常固定在256MB。Zone内数据可以支持随机读。
目前利用SMR磁盘进行分布式存储的方案中,分布式对象存储系统基于ZoneGroup(即ZG)设计,将一组初始化全新的Zone通过ZGID关联起来,将纠删码对应的分片数据分别并发批量写入这组Zone,并提供基于ZG层级进行统一的负载、管理的能力,并通过对原生SMR磁盘Zone空间的策略管理,来实现对纠删码技术的支持的能力管理,如此需要由管理节点对所有存储节点上的SMR磁盘的所有存储区域进行管理和维护,管理节点的管理负担较大,如此使得管理节点的分布式存储效率相对较差,而且该方法使得该分布式存储方案无法兼容其他类型的磁盘(例如CMR磁盘等)。
基于此,本申请提出一种分布式存储方法,该分布式存储方法中,管理节点只需基于客户端的数据写入请求确定出存储客户端数据的预定数量个存储节点,由预定数量个存储节点中每个存储节点自行确定是否将客户端的数据分配到自身的SMR磁盘中以及将客户端的数据分配到自身的SMR磁盘的哪个存储区域中,如此无需管理节点对所有SMR磁盘的所有存储区域进行管理和维护,如此管理节点可以无视存储节点上的磁盘类型而通过常规的分布式文件管理方法对所有存储节点进行统一管理,可以实现存储节点上磁盘类型对管理节点的全透明、无感知,极大地减轻了管理节点的管理负担,可以提高管理节点的分布式存储效率,并且使得包括管理节点和存储节点的分布式存储系统可以兼容CMR(ConventionalMagnetic Recording,传统磁记录磁盘)等其他类型的磁盘。
首先,本申请提供一种应用上述分布式存储方法的分布式存储系统。如图1所示,该分布式存储系统包括客户端、管理节点(可称为MDS)和存储节点(Datanode,简称DN)。
其中,客户端封装整个分布式存储系统对外的接口,所有用户请求的入口都在这里。
可选地,在用户利用客户端发起数据存储请求时,用户可调用客户端上的SDK(Software Development Kit,软件开发工具包)接口先去元数据管理节点申请创建一个bucketId,然后再申请一个fileId;接着SDK可拿着这个fileId再次请求元数据管理节点,以进行空间申请,如此通过客户端SDK向管理节点发出了数据存储请求。
管理节点可用于响应整个分布式存储系统的元数据请求,内部维护整个系统的元数据镜像。
其中,如图2所示,管理节点所维护的元数据可以包括分布式存储系统中的文件状态,即管理节点控制和管理分布式存储系统的全局文件视图。全局文件视图可包含有对象(object)标识信息、对象状态位信息、对象在文件中的偏移信息、以及对象包含的数据块的长度和位置等信息。
同时管理节点可负责存储节点的负载均衡。
其中,管理节点负责存储节点的负载均衡可以理解为:管理节点可以响应于客户端数据存储请求确定存储客户端数据的存储节点,以实现存储节点的负载均衡。具体地,管理节点可响应于数据存储请求,综合整个系统所有存储点(Datanode)的负载,通过一定的负载均衡策略(轮训、权重选择、负载选择)选出目标个数的Datanode列表返回给SDK,以便SDK将数据写入到相应存储节点中。
另外,管理节点还可控制文件恢复等进程运行。
存储节点用于提供真实的数据存储服务,具体地用于提供文件数据块的存储,即存储节点负责管理写入到此节点的数据。
存储节点对外还可提供数据流写入响应、纳管磁盘、和/或、周期性数据块扫描上报等功能。
示例性地,当存储节点启动注册时,存储节点会向管理节点进行存储文件信息(例如文件中的block信息)上报,管理节点基于这些信息,更新内部的block内存态的元数据缓存,更新文件实时状态。存储节点还可周期性上报内部的存储文件信息(例如文件中的block信息),供管理节点进行校验更新缓存。实时业务流IO写入完成之后,存储节点也会上报实时写入数据信息给管理节点。如此通过存储节点的周期性上报和/或实时汇报可以保证管理节点内部元数据缓存的正确性,从而保证管理节点负载均衡的正确性和准确性。
另外,管理节点可以只提供元数据管理功能,即对应信令流的管理。数据流的交互就是真实业务数据的写入,由相应的存储节点来负责。
具体地,在管理节点返回存储节点列表之后,客户端直接去存储节点列表上的至少一个存储节点进行并发的业务数据的写入,这也是分布式文件系统高效的原因之一。文件读取流程也类似,在客户端到管理节点申请到存储节点列表后,直接去相关的存储节点上进行数据的读取。
具体如图3所示,本实施方式的分布式存储方法包括以下步骤。需要注意的是,以下步骤编号仅用于简化说明,并不旨在限制步骤的执行顺序,本实施方式的各步骤可以在不违背本申请技术思想的基础上,任意更换执行顺序。
S101:客户端向管理节点发出数据存储请求。
客户端存在数据存储需求时,可以向分布式存储系统中的管理节点发出数据存储请求,以使管理节点基于数据存储请求给客户端分配存储节点,从而将数据写入到客户端所分配的存储节点。
S102:响应于数据存储请求,管理节点确定并向客户端反馈存储客户端数据的预定数量个存储节点。
管理节点获取到数据存储请求后,可以基于各个存储节点的数据存储情况,从所有存储节点中选取出用来存储客户端数据的预定数量个存储节点,并向客户端反馈用于存储客户端数据的预定数量个存储节点,以便客户端将数据写入到预定数量个管理节点中。
其中,管理节点是知晓各个存储节点的数据存储情况的,具体可基于各个存储节点上报的文件存储情况和/或存储空间情况等信息确定各个存储的数据存储情况,如此本申请通过存储节点上报文件存储情况和/或存储空间情况等信息,可以保证管理节点内部记录的各个存储节点的数据存储情况等元数据缓存的正确性,保证管理节点负载均衡的正确性和准确性,从而便于管理节点在步骤S102可以较为准确地确定出用来存储客户端数据的预定数量个存储节点。
其中,客户端请求写入到存储节点的数据可以是对象(object)的数据块(即对象的分片,也可称为block)。其中,一个对象可以包括文件的数据和一组属性信息(MetaData)。另外,每个对象可能包括若干个文件,也可能是某个文件的一部分。且在分布式存储系统中,所有对象均分别设置有一个对象标识,以便基于对象标识对对象进行管理。
数据存储请求中可以声明对象的分片数量,其中预定数量可以等于数据存储请求中声明的对象分片数量,如此管理节点给对象的多个分片一一对应地分配有一个存储节点,使得一个对象的不同分片可以不存储到同一个存储节点,规避因为单一磁盘硬件故障导致的文件损坏,提升系统可靠性,即最小支持磁盘级容错,即便于对象的管理和恢复。
可选地,数据存储请求中还可声明有对象的分片大小,以便管理节点基于对象的分片大小和各个存储节点的剩余存储空间量,从所有存储节点中选取出用来存储客户端数据的预定数量个存储节点。
S103:向预定数量个存储节点中每个存储节点提出数据写入请求。
管理节点选取出用来存储客户端数据的预定数量个存储节点后,管理节点或客户端可以向预定数量个存储节点中每个存储节点提出数据写入请求,以便预定数量个存储节点中每个存储节点确定是否将客户端的数据分配到自身的SMR磁盘中以及将客户端的数据分配到自身的SMR磁盘的哪个存储区域中,并基于分配情况将客户端传来的数据写入到所分配的存储区域中。
其中,数据写入请求中可以声明待写入存储节点的数据的大小,以便预定数量个存储节点中每个存储节点基于对应数据写入请求中声明的待写入数据量,确定是否将客户端的数据分配到自身的SMR磁盘中以及将客户端的数据分配到自身的SMR磁盘的哪个存储区域中。
S104:响应于数据写入请求,预定数量个存储节点中每个存储节点确定用来写入数据的存储磁盘。
其中,存储节点上可以添加有至少一种类型的硬盘。其中,存储节点所添加的至少一种类型的硬盘可以包括SMR磁盘和/或CMR磁盘等磁盘。
在存储节点仅添加有一种类型磁盘的情况下,若该存储节点存在数据写入请求,则直接将其上添加的那种类型的磁盘作为用来写入数据的存储磁盘。
在存储节点添加有至少两种类型的磁盘的情况下,可以基于存储策略(例如负载均衡策略)确定出用来写入数据的存储磁盘。
例如,假设存储节点所添加的磁盘包括SMR磁盘和CMR磁盘;存储节点可基于存储策略确定出用来写入数据的存储磁盘是SMR磁盘还是CMR磁盘。另外,存储节点还可基于存储策略确定出用来写入数据的存储磁盘是哪一个SMR磁盘或者是哪一个CMR磁盘。
S105:响应于存储磁盘为叠瓦式磁记录盘,每个存储节点从叠瓦式磁记录盘中的可用存储区域中选取至少一个存储区域,将客户端传来的数据写入到所选取的存储区域。
在预定数量个存储节点中每个存储节点确定用来写入数据的存储磁盘后,若存在一存储节点所确定的用来写入数据的存储磁盘的类型为SMR磁盘,则该存储节点可以从SMR中的可用存储区域中选取至少一个存储区域,将客户端传来的数据写入到所选取的存储区域。
可选地,可以基于存储策略(例如按序选取等策略)从SMR磁盘的可用存储区域中选取至少一个能够存储客户端传来的数据的存储区域,然后将客户端传来的数据写入到所选取的存储区域。
其中,存储节点将客户端存来的数据写入后,存储节点可以向管理节点上传当前写入的数据的信息(例如数据在文件中偏移、数据长度、和/或、状态位等信息)和/或存储空间占用信息,以便管理节点知晓各个数据存储在哪个存储节点,从而便于基于数据在存储节点的分布情况进行数据查询和恢复等操作,以及每个存储节点的可用存储空间以及已用存储空间情况,也便于基于各个存储节点的数据存储情况确认后续数据存储请求对应的存储节点列表和待查找的数据所在的存储节点。
且存储节点上报给管理节点的信息可不包含其上添加的各个磁盘类型和存储空间信息,这种情况下,存储节点自身确认将待写入数据写入到哪个磁盘和磁盘中的哪个区域,如此管理节点只需基于存储节点上报的整个存储节点的存储空间信息(存储节点中已用存储空间信息和/或未用存储空间信息)确定用于存储客户端数据的存储节点即可,从而可以实现存储节点上磁盘类型对管理节点的全透明、无感知。
并且,将客户端传来的数据写入到SMR中所选取的存储区域后,存储节点可以存储数据和存储区域的映射关系,以便后续从存储节点调取相应数据时,存储节点可以基于数据和存储区域的映射关系确定存储相应数据的存储区域位置,然后从相应位置调取到相应数据,以达到快速响应数据的查找请求,具体地存储节点内部进行Zone状态管理,并不会需要很大的系统开销,通过各种映射关系的缓存,存储节点能快速查找到每个block的位置,因为绕过了标准文件系统缓存,直接操作Zone的写指针,文件写入性能并不会因为各级缓存导致性能有所降低;在性能保证的基础上,大大放大SMR磁盘的性价比优势。经过实际测验发现,存储节点36盘位(14TB:7万Zone),得出系统在长期运行后,内部的Zone缓存数量才百万级别,如此可知Zone映射关系的缓存对文件写入性能影响很小。
具体地,如图4所示,存储节点可以存储ZoneID与磁盘的映射关系、ZoneID与blocks(即数据)映射关系,以通过ZoneID与磁盘的映射关系以及ZoneID与blocks映射关系表达出存储数据和存储区域的映射关系,如此便于存储节点基于上述映射关系知晓每一数据存储于哪个SMR磁盘的哪个存储区域中,从而便于存储节点基于数据信息从存储节点的磁盘中查找到相应数据。
其中,存储节点可以将数据和存储区域的映射关系存储在SMR磁盘的传统磁记录分区(即CMR分区)中,如此存储节点可以直接从SMR磁盘的CMR分区中加载映射关系。具体地,SMR磁盘的CMR分区中可设置有k-v数据库,而数据和存储区域的映射关系存储在CMR分区中k-v数据库中,以提高映射关系读取的便捷性。
另外,为了提高存储节点对SMR磁盘的管理效率,可以将数据和存储区域的映射关系也存储到内存中,如此在进行数据查询和恢复等操作时,可以直接基于内存的数据确定数据的存储位置。且在映射关系更新时,可以同时对CMR分区和内存中存储的映射关系进行更新。且存储节点可以周期性扫描比对更新CMR分区和内存中存储的映射关系。此外,在存储节点启动时,可以从CMR分区将映射关系加载到内存中。如此通过上述步骤可以使得内存加载有准确的数据和存储区域的映射关系。
其中,在步骤S105中,可以从叠瓦式磁记录盘的可用存储区域中选取一个存储区域,将客户端传来的数据写入到所选取的存储区域。当然,在其他实施例中,也可从叠瓦式磁记录盘的可用存储区域中选取至少两个存储区域,以通过所选取的至少两个存储区域进行客户端传来的数据的写入。
在从叠瓦式磁记录盘的可用存储区域中选取一个存储区域的情况下,SMR的可用存储区域可以是SMR中剩余空间大于或等于待写入数据量(即客户端待传来的数据量)的存储区域。
为了提高存储节点的运行效率,能够并发、高效管理SMR磁盘中的存储区域(Zone),如图5所示,可以在SMR磁盘设计活跃存储区域列表,SMR中的可用存储区域即可以是活跃存储区域列表中的剩余空间大于或等于待写入数据量的存储区域,如此只有在活跃列表中的Zone,才能被用于响应当前的IO写入请求,如此在磁盘支持一定并发的基础上,可避免所有Zone空间都被写的很碎。其中,可以通过单盘管理模块缓存管理这批活跃Zone信息。
可选地,在活跃存储区域列表不存在剩余空间能够满足待写入数据量要求的存储区域时,可以申请全新存储区域(可以理解为已用空间为0的存储区域)添加到活跃列表,以便利用申请的全新存储区域响应数据写入请求。
进一步地,为了保证存储节点的运行效率,可以控制SMR磁盘存储的并发程度,且为了避免多个Zone碎片的产生,可以为活跃存储区域列表设置列表中存储区域数量上限值。如此,在进行全新存储区域申请前,可以确认活跃存储区域列表中活跃存储区域数量是否大于或等于上限值;若是,则暂时无法申请到全新存储区域,则暂时无法将客户端的数据写入到存储节点中,即空间申请失败,此时存储节点可以内部标记此块SMR磁盘当前繁忙不可用,从而此次写入失败;若否,则正常申请全新存储区域即可。其中,该上限值可以根据存储节点的硬件设备情况等实际情况进行设定,具体在此不做限制。
另外,为提高磁盘利用率,可以在确认活跃存储区域列表存在剩余空间低于下限值的存储区域时,可以将剩余空间低于下限值的存储区域从活跃存储区域列表中剔除掉,即将活跃存储区域列表中已用空间大于或等于下限值对应的预设比例的存储区域从活跃存储区域列表中移除,以提高活跃存储区域列表中存储区域的可用率,并且可以降低活跃存储区域列表中存储区域的数量,以使得在活跃存储区域列表中没有能够满足待写入数据量要求时能够申请全新存储空间而进行待写入数据的存储。其中,预设比例可以根据实际情况进行设定,在此不做限制,例如可为95%或100%。
可以理解的是,在将活跃存储区域列表中已用空间大于或等于下限值对应的预设比例的存储区域从活跃存储区域列表中移除后,该已用空间大于或等于下限值对应的预设比例的存储区域可被设置为不可写入的存储区域,且存储节点可以标记该存储区域的所有空间已用,并可以上报管理节点该存储区域已经写满,以便存储节点和管理节点清楚且准确地知晓SMR磁盘中可用的空间大小。可以理解的是,由于存储节点上报给管理节点的信息不包含其上添加的各个磁盘类型和SMR磁盘中各个存储区域的信息,存储节点在将已用空间大于或等于下限值对应的预设比例的存储区域从活跃存储区域列表中移除后,可以仅向管理节点上报该存储区域对应的存储空间已被占用,如此存储节点可以通过“向管理节点上报存储节点中此次的已用空间量,且此次的已用空间量包括此次从活跃存储区域列表中移除的存储区域中所有未用空间的总量”的方式,使得管理节点知晓该存储节点的已用空间量和未用空间量,且可使得管理节点对磁盘的类型可以无感知、全透明。具体地,存储节点可以在进行心跳上报时设置被移除的Zone空间全部已用,以便于精确化管理SMR磁盘空间。
为进一步提高磁盘利用率,本申请还可提出SMR磁盘中存储区域的复用方案。该复用方案可以包括存储区域的活跃时间管理和/或存储区域中文件的过期删除方案。
其中,存储区域中文件的过期删除方案可以理解为:当Zone内所有数据(block)数据均过期后,存储节点(Datanode)就会回收Zone空间,对应Zone内数据被真正删除,此Zone变为一个全新Zone。其中,数据的过期时间可以根据客户需求等实际情况进行设置,在此不做限制,例如可为30天或15天。
存储区域的活跃时间管理具体可以理解为:当已用存储区域(即已有存储内容的存储区域,例如可为活跃存储区域列表中的存储区域)的使用时间超过复用周期,则该已用存储区域可被设置为不可写入的存储区域,且存储节点可以标记该存储区域的所有空间已用,并可以上报管理节点该存储区域对应的存储空间已经写满,以便存储节点和管理节点清楚且准确地知晓SMR磁盘中可用的空间大小,如此通过复用周期的设置可以使得每一存储区域中文件的时间跨度不会超过复用周期,从而尽量避免存储区域内文件的时间跨度过大,以使得存储区域内所有文件的过期时间大致相同,可以提高Zone空间的回收速率,从而通过存储区域的活跃时间管理和存储区域中文件的过期删除两个维度限制最大程度提升Zone的空间利用率,进而提升SMR磁盘和系统的空间利用率。例如,在通过活跃存储区域列表管理可用存储区域时,在活跃存储区域列表中存在使用时间超过复用周期的存储区域时,可以将超过复用周期的存储区域从活跃存储区域列表移除。其中,每一存储区域的使用时间可以等于当前时间减去存储区域中的所有数据的写入时间中的最早值得到的值。复用周期可以根据实际情况进行设置,在此不做限制,例如可为1天或2天。
在本实施方式中,管理节点只需基于客户端的数据写入请求确定出存储客户端数据的预定数量个存储节点,由预定数量个存储节点中每个存储节点自行确定是否将客户端的数据分配到自身的SMR磁盘中以及将客户端的数据分配到自身的SMR磁盘的哪个存储区域中,如此无需管理节点对所有SMR磁盘的所有存储区域进行管理和维护,如此管理节点可以无视存储节点上的磁盘类型而通过常规的分布式文件管理方法对所有存储节点进行统一管理,可以实现存储节点上磁盘类型对管理节点的全透明、无感知,极大地减轻了管理节点的管理负担,可以提高管理节点的分布式存储效率,并且使得包括管理节点和存储节点的分布式存储系统可以兼容CMR(Conventional Magnetic Recording,传统磁记录磁盘)等其他类型的磁盘。
经实际项目测试,结合存储节点实现Zone空间管理后,分布式文件系统能够直接基于原生SMR磁盘管理通过本申请的分布式存储方法实现数据的写入读取。最终实现分布式文件系统对于SMR新一代磁盘存储介质的支持。并且真正做到管理节点无感知磁盘类型差异,大大简化了分布式文件系统的架构设计。
另外,若存在一存储节点的所确定的用来写入数据的存储磁盘的类型为CMR磁盘或LMR磁盘等,可以通过标准文件系统将客户端传来的数据写入CMR磁盘或LMR磁盘等中,并通过标准文件系统对CMR磁盘或LMR磁盘等中的文件进行管理。
为便于存储节点对其上加载的磁盘进行管理,可以在存储节点添加新磁盘时,获取新插入的磁盘类型并存储,以便存储节点基于磁盘类型对磁盘继续管理,以便于存储节点通过节点类型,分别管理CMR和SMR等各种类型的磁盘,并向上对管理节点透明,管理节点并不感知数据写入哪种类型的磁盘。具体地,用户可以在存储节点的分布式文件系统web管理界面添加磁盘时标记磁盘类型,如此分别通过标准文件系统和裸Zone管理系统,响应分布式系统对象文件(object)数据切片(block)的写入,以最终实现分布式文件系统管理节点对CMR和SMR节点的无感知纳管。
此外,由于分布式存储系统不可避免地会发生磁盘和分布式节点的故障,导致一些文件对应对象和数据块的损坏和缺失,基于此,可以扫描并确认分布式存储系统中对象和数据块的状态,并且设定对损坏和/或缺失的数据块进行恢复的方案,以提升分布式文件系统的容错能力,保障文件完整性。
在恢复方案中,存储节点可以周期性扫描所述第一存储节点的磁盘上所有数据块的状态,并上报其上的数据块状态,以便管理节点基于数据块状态确定数据块所属对象和/或文件的状态。具体地,管理节点可基于一存储节点的所有数据块中每一数据块的状态及其余存储节点上存储的与每一数据块所属对象相同的数据块的状态,确认该存储节点上每一数据块对应对象及文件的状态。
可选地,管理节点可以基于一对象中损坏和/或缺失的数据块的数量确定对象中损坏和/或缺失的数据块是否可恢复;若可恢复,可将对象以及对象所属文件标记为待恢复;若不可恢复,可将对象以及对象所属文件标记为损坏,以通过标记区分能够恢复的数据和不能恢复的数据,从而便于恢复方案的实施。
具体地,在对象中损坏和/或缺失的数据块的数量小于或等于预设值时,将对象及其对应的文件的状态标记为待恢复;在对象的损坏数据块个数大于预设值时,将对象及其对应的文件的状态标记为损坏。
其中,在对象的数据块是通过纠删码技术获得的情况下,即对象被切分为N+M(纠删码)个数据块(block)的情况下,预设值可以等于M。
其中,恢复的方案可以包括:管理节点在一对象因数据块损失或缺失而导致该对象状态为待恢复的情况下,从分布式存储系统的所有存储节点中确定出目标存储节点;控制目标存储节点恢复对象中的损坏数据块和/或缺失数据块,以使目标存储节点控制本轮的对象数据恢复流程,如此通过该恢复方案可以实现数据块级别的数据恢复,且可以在管理节点不感知CMR和SMR等不同类型磁盘区别的前提下,实现了基于SMR裸盘管理的文件恢复功能,简化了系统架构设计。
其中,控制目标存储节点恢复对象中的损坏数据块和/或缺失数据块的步骤可以包括:管理节点将对象中所有数据块的存储节点信息和状态发送给目标存储节点,以使目标存储节点基于存储节点信息读取到对象的未损坏数据块,并基于未损坏数据块恢复出对象的目标数据块。
具体地,在目标存储节点恢复对象中的损坏数据块和/或缺失数据块的过程中,目标存储节点会控制存储损坏数据块和/或缺失数据块的存储节点删除损坏数据块和/或缺失数据块及其相关映射数据(例如损坏数据块和/或缺失数据块与存储区域的映射关系),且可将损坏数据块和/或缺失数据块的状态标记为删除;从未损坏的数据块所在存储节点读取未损坏的数据块;基于未损坏数据块恢复出对象的目标数据块。
在读取未损坏的数据块的过程中,相应存储节点可以根据未损坏数据块和磁盘的对应关系确定未损坏数据块存储在哪种类型的磁盘中;若未损坏数据块存储在SMR磁盘中,存储节点可以根据未损坏数据库和存储区域的对应关系确定未损坏数据块的存储区域,进而从未损坏数据块的存储区域读取未损坏数据块;若未损坏数据块存储在CMR等其他类型磁盘中,存储节点可通过标准文件系统从CMR等其他类型磁盘读取到未损坏数据块。
其中,在对象的数据块是通过纠删码技术获得的情况下,目标存储节点可基于未损坏数据块并通过纠删码的异或计算恢复出对象的目标数据块。
恢复出对象的目标数据块后,可以将恢复出的对象的目标数据块写入到分布式存储系统的存储节点中。
为便于恢复方案的实施,管理节点可以先基于对象中待恢复数据块的数量确定出相应数量的存储节点,以便目标存储节点恢复出对象的待恢复数据块后,目标存储节点可以通过步骤S104和步骤S105将待恢复数据块一一对应地写入到所确定的相应数量的存储节点中。其中,待恢复数据块的数量可以等于上述的相应数量。且比较优选的是,所确定的相应数量的存储节点可以包括目标存储节点。
此外,在客户端请求写入到存储节点的数据是对象(object)的数据块(即对象的分片),且文件包括若干个对象的情况下,object可为默认大小,object的block也可是默认大小(例如256MB)。
当然,在其他实施例中,为充分利用各个存储节点上SMR磁盘的Zone内空间,可以允许文件所属第一个object为可变大小,例如可以基于存储节点上SMR磁盘的Zone内剩余空间确定文件所属第一个object的大小。具体地,客户端可以基于至少一个存储节点各自的所选取的存储区域容量确定文件的第一个对象的大小,并基于大小从文件切换出第一个对象,然后将所述第一个对象分成预定数量个数据块。
另外,假设本轮object所选择的多个Zone用于写入操作,且多个Zone中剩余空间最小的一个Zone使用空间大于第二比例时,存储节点可通知客户端,以让客户端进行下一个object的空间预申请操作,用于实现文件的连续写入。当文件的所有数据全部写入到分布式存储系统的情况下,即文件关闭时,管理节点根据实际写入文件长度,更新最终的object个数。当存在预申请object后没有写入的场景时,管理节点直接删除对应object元数据信息。第二比例可根据实际情况进行设定,例如可为95%或80%。
对于分布式存储系统中的第一存储节点,其实现分布式存储方法的步骤请参阅图6,图6是本申请分布式存储方法中第一存储节点的工作流程示意图。
S201:第一存储节点响应于客户端的数据写入请求,确定用来写入数据的存储磁盘。
其中,数据写入请求是客户端响应于管理节点确定的存储客户端的数据的预定数量个存储节点包括第一存储节点而下达的。
S202:响应于存储磁盘为叠瓦式磁记录盘,第一存储节点从叠瓦式磁记录盘中的可用存储区域中选取至少一个存储区域,将客户端传来的数据写入到所选取的存储区域。
从叠瓦式磁记录盘的活跃存储区域列表中选取一个能够存储客户端传来的数据的存储区域,将客户端传来的数据写入到所选取的存储区域;其中,活跃存储区域列表由能够响应数据写入操作的存储区域组成。
进一步地,可以确定叠瓦式磁记录盘的活跃存储区域列表中是否存在能够存储数据的存储区域;若存在,执行从叠瓦式磁记录盘的活跃存储区域列表中选取一个能够存储数据的存储区域,将数据写入到所选取的存储区域的步骤;若不存在,将叠瓦式磁记录盘中的一个全新存储区域加入到活跃存储区域列表中,并将全新存储区域作为所选取的存储区域。
进一步地,若不存在,将叠瓦式磁记录盘中的一个全新存储区域加入到活跃存储区域列表中,可包括:若不存在,则确认活跃存储区域列表大小是否大于或等于上限值;若大于或等于,则写入失败;若小于,则执行将叠瓦式磁记录盘中的一个全新存储区域加入到活跃存储区域列表中,并将全新存储区域作为所选取的存储区域的步骤。
在将客户端传来的数据写入到所选取的存储区域后,可以存储数据和所选取的存储区域及其所属磁盘的映射关系。具体可将映射关系存储于叠瓦式磁记录盘的传统磁记录分区中;或可将映射关系存储于叠瓦式磁记录盘的传统磁记录分区和内存中。
而且,在将客户端传来的数据写入到所选取的存储区域后,向管理节点汇报数据的相关信息和/或第一存储节点的存储空间信息。
此外,在分布式存储方法以数据块为单位进行存储的情况下,第一存储节点还可周期性扫描第一存储节点的磁盘上所有数据块的状态;还可向管理节点汇报第一存储节点上所有数据块的状态,以使管理节点基于所有数据块中每一数据块的状态及其余存储节点上存储的与每一数据块相关的数据块的状态,确认每一数据块对应对象及文件的状态。具体地,在一个对象的损坏数据块个数小于或等于预设值时,将对象及其对应的文件的状态标记为待恢复;在一个对象的损坏数据块个数大于预设值时,将对象及其对应的文件的状态标记为损坏。
本实施方式中上述步骤与图3所示实施例中的相关步骤类似,具体不再赘述。第一存储节点响应于客户端的数据写入请求,确定用来写入数据的存储磁盘,数据写入请求是客户端响应于管理节点确定的存储客户端的数据的预定数量个存储节点包括第一存储节点而下达的;响应于存储磁盘为叠瓦式磁记录盘,第一存储节点从叠瓦式磁记录盘中的可用存储区域中选取至少一个存储区域,将客户端传来的数据写入到所选取的存储区域;如此管理节点只需基于客户端的数据写入请求确定出存储客户端数据的预定数量个存储节点,由预定数量个存储节点中每个存储节点自行确定是否将客户端的数据分配到自身的SMR磁盘中以及将客户端的数据分配到自身的SMR磁盘的哪个存储区域中,如此无需管理节点对所有SMR磁盘的所有存储区域进行管理和维护,如此管理节点可以无视存储节点上的磁盘类型而通过常规的分布式文件管理方法对所有存储节点进行统一管理,可以实现存储节点上磁盘类型对管理节点的全透明、无感知,极大地减轻了管理节点的管理负担,可以提高管理节点的分布式存储效率,并且使得包括管理节点和存储节点的分布式存储系统可以兼容CMR等其他类型的磁盘。
对于分布式存储系统中的客户端,其实现分布式存储方法的步骤请参阅图7,图7是本申请分布式存储方法中客户端的工作流程示意图。
S301:客户端向管理节点发出数据存储请求,以使管理节点基于数据存储请求确定出分布式存储系统中的预定数量个存储节点;
S302:客户端向预定数量个第一存储节点发起数据写入。
客户端向预定数量个第一存储节点发起数据写入,以在预定数量个存储节点中的至少一个存储节点中的用来写入数据的存储磁盘为叠瓦式磁记录盘的情况下,至少一个存储节点从各自的叠瓦式磁记录盘中的可用存储区域中选取至少一个用来写入客户端传来的数据的存储区域。
客户端向预定数量个存储节点发起数据写入后可包括:基于至少一个存储节点各自的所选取的存储区域容量确定文件的第一个对象的大小,并基于大小从文件切换出第一个对象;将第一个对象分成预定数量个数据块;将预定数量个数据块分别发送给预定数量个存储节点,以使预定数量个存储节点分别将对应的数据块写入并存储。
进一步地,在预定数量个存储节点各自的第一个对象的数据写入量均大于或等于第二比例时,从文件切分出第一个对象的下一个对象并作为当前对象;基于当前对象向管理节点发出数据存储请求,以将当前对象分成的预定数量个数据块一一对应地存储到分布式存储系统中的与当前对象对应的预定数量个第二存储节点。
如果在当前对象不为文件的最后一个对象的情况下,响应于预定数量个第二存储节点各自的当前对象的数据写入量均大于或等于第二比例时,从文件切分出当前对象的下一个对象并作为当前对象,并返回执行基于当前对象向管理节点发出数据存储请求,以将当前对象分成的预定数量个数据块一一对应地存储到分布式存储系统中的与当前对象对应的预定数量个第二存储节点的步骤。
本实施方式中上述步骤与图3所示实施例中的相关步骤类似,具体不再赘述。客户端向管理节点发出数据存储请求,以使管理节点基于数据存储请求确定出分布式存储系统中的预定数量个存储节点;客户端向预定数量个第一存储节点发起数据写入,以在预定数量个存储节点中的至少一个存储节点中的用来写入数据的存储磁盘为叠瓦式磁记录盘的情况下,至少一个存储节点从各自的叠瓦式磁记录盘中的可用存储区域中选取至少一个用来写入客户端传来的数据的存储区域;如此管理节点只需基于客户端的数据写入请求确定出存储客户端数据的预定数量个存储节点,由预定数量个存储节点中每个存储节点自行确定是否将客户端的数据分配到自身的SMR磁盘中以及将客户端的数据分配到自身的SMR磁盘的哪个存储区域中,如此无需管理节点对所有SMR磁盘的所有存储区域进行管理和维护,如此管理节点可以无视存储节点上的磁盘类型而通过常规的分布式文件管理方法对所有存储节点进行统一管理,可以实现存储节点上磁盘类型对管理节点的全透明、无感知,极大地减轻了管理节点的管理负担,可以提高管理节点的分布式存储效率,并且使得包括管理节点和存储节点的分布式存储系统可以兼容CMR等其他类型的磁盘。
对于分布式存储系统中的管理节点,其实现分布式存储方法的步骤请参阅图8,图8是本申请分布式存储方法中管理节点的工作流程示意图。
S401:管理节点响应于客户端的数据存储请求,确定出分布式存储系统中的预定数量个存储节点;
S402:向客户端告知预定数量个存储节点。
可以向客户端告知预定数量个存储节点,以使客户端向预定数量个存储节点发起数据写入,并在预定数量个存储节点中的至少一个存储节点中的用来写入数据的存储磁盘为叠瓦式磁记录盘的情况下,至少一个存储节点从各自的叠瓦式磁记录盘中的可用存储区域中选取至少一个用来写入客户端传来的数据的存储区域。
其中,管理节点可以从各个存储节点获取各个存储节点上的所有数据块的状态;然后基于数据块和对象的映射关系,确定每一对象的所有数据块的状态,进而确认每一对象及其对应文件的状态。
进一步地,在一对象的状态为待恢复的情况下,从分布式存储系统的所有存储节点中确定出一个目标存储节点;
控制目标存储节点恢复对象中的损坏数据块。
其中,控制目标存储节点恢复对象中的损坏数据块,可包括:将对象中所有数据块的存储节点信息和状态发送给目标存储节点,以使目标存储节点基于存储节点信息读取到对象的未损坏数据块,并基于未损坏数据块恢复出对象的目标数据块。
本实施方式中上述步骤与图3所示实施例中的相关步骤类似,具体不再赘述。管理节点响应于客户端的数据存储请求,确定出分布式存储系统中的预定数量个存储节点;向客户端告知预定数量个存储节点;如此管理节点只需基于客户端的数据写入请求确定出存储客户端数据的预定数量个存储节点,由预定数量个存储节点中每个存储节点自行确定是否将客户端的数据分配到自身的SMR磁盘中以及将客户端的数据分配到自身的SMR磁盘的哪个存储区域中,如此无需管理节点对所有SMR磁盘的所有存储区域进行管理和维护,如此管理节点可以无视存储节点上的磁盘类型而通过常规的分布式文件管理方法对所有存储节点进行统一管理,可以实现存储节点上磁盘类型对管理节点的全透明、无感知,极大地减轻了管理节点的管理负担,可以提高管理节点的分布式存储效率,并且使得包括管理节点和存储节点的分布式存储系统可以兼容CMR等其他类型的磁盘。
请参阅图9,图9是本申请电子设备20一实施方式的结构示意图。本申请电子设备20包括处理器22,处理器22用于执行指令以实现本申请上述任一实施方式的方法及任意不冲突的组合所提供的方法。
处理器22还可以称为CPU(Central Processing Unit,中央处理单元)。处理器22可能是一种集成电路芯片,具有信号的处理能力。处理器22还可以是通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器,或者该处理器22也可以是任何常规的处理器等。
电子设备20还可进一步包括存储器21,用于存储处理器22运行所需的指令和数据。
请参阅图10,图10为本申请实施方式中计算机可读存储介质的结构示意图。本申请实施例的计算机可读存储介质30存储有指令/程序数据31,该指令/程序数据31被执行时实现本申请上述方法任一实施例以及任意不冲突的组合所提供的方法。其中,该指令/程序数据31可以形成程序文件以软件产品的形式存储在上述存储介质30中,以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式方法的全部或部分步骤。而前述的存储介质30包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质,或者是计算机、服务器、手机、平板等设备。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (14)
1.一种分布式存储方法,其特征在于,分布式存储系统包括管理节点和至少一个存储节点,所述方法应用于第一存储节点,所述方法包括:
响应于客户端发送的数据写入请求,确定用来写入数据的存储磁盘,所述数据写入请求是所述客户端响应于管理节点确定的存储所述客户端的数据的预定数量个存储节点包括所述第一存储节点而下达的;
响应于所述存储磁盘为叠瓦式磁记录盘,从所述叠瓦式磁记录盘中的可用存储区域中选取至少一个存储区域,将所述客户端传来的数据写入到所选取的存储区域。
2.根据权利要求1所述的存储方法,其特征在于,所述从所述叠瓦式磁记录盘中的可用存储区域中选取至少一个存储区域,将所述客户端传来的数据写入到所选取的存储区域,包括:
从所述叠瓦式磁记录盘的活跃存储区域列表中选取一个能够存储所述客户端传来的数据的存储区域,将所述客户端传来的数据写入到所选取的存储区域;
其中,所述活跃存储区域列表由能够响应数据写入操作的存储区域组成。
3.根据权利要求2所述的存储方法,其特征在于,所述从所述叠瓦式磁记录盘中的可用存储区域中选取至少一个存储区域,将所述客户端传来的数据写入到所选取的存储区域,包括:
确定所述叠瓦式磁记录盘的活跃存储区域列表中是否存在能够存储所述数据的存储区域;
若存在,执行所述从所述叠瓦式磁记录盘的活跃存储区域列表中选取一个能够存储所述数据的存储区域,将所述数据写入到所选取的存储区域的步骤;
若不存在,将所述叠瓦式磁记录盘中的一个全新存储区域加入到活跃存储区域列表中,并将所述全新存储区域作为所述所选取的存储区域。
4.根据权利要求3所述的存储方法,其特征在于,所述若不存在,将所述叠瓦式磁记录盘中的一个全新存储区域加入到活跃存储区域列表中,包括:
若不存在,则确认所述活跃存储区域列表大小是否大于或等于上限值;
若大于或等于,则写入失败;
若小于,则执行所述将所述叠瓦式磁记录盘中的一个全新存储区域加入到活跃存储区域列表中,并将所述全新存储区域作为所述所选取的存储区域的步骤。
5.根据权利要求2所述的存储方法,其特征在于,所述方法还包括:
将使用时间超过复用周期的存储区域从所述活跃存储区域列表移除;和/或,响应于所述所选取的存储区域中的已用空间大于或等于预设比例,将所述所选取的存储区域从所述活跃存储区域列表移除;
若所述叠瓦式磁记录盘中有过期存储区域,其中,所述过期存储区域内存储的所有数据均已过期,删除所述过期存储区域中的所有数据,以将所述过期存储区域变为全新存储区域。
6.根据权利要求1所述的存储方法,其特征在于,所述将所述客户端传来的数据写入到所选取的存储区域,之后包括:
存储所述数据和所选取的存储区域及其所属磁盘的映射关系;和/或,
向管理节点汇报所述数据块的相关信息和/或所述第一存储节点的存储空间信息。
7.一种分布式存储方法,其特征在于,分布式存储系统包括管理节点和至少一个存储节点,所述方法应用于客户端,所述方法包括:
向管理节点发出数据存储请求,以使所述管理节点基于所述数据存储请求确定出所述分布式存储系统中的预定数量个存储节点;
向所述预定数量个第一存储节点发起数据写入,以在所述预定数量个存储节点中的至少一个存储节点中的用来写入数据的存储磁盘为叠瓦式磁记录盘的情况下,所述至少一个存储节点从各自的叠瓦式磁记录盘中的可用存储区域中选取至少一个用来写入所述客户端传来的数据的存储区域。
8.根据权利要求7所述的存储方法,其特征在于,所述向所述预定数量个存储节点发起数据写入,之后包括:
基于所述至少一个存储节点各自的所选取的存储区域容量确定文件的第一个对象的大小,并基于所述大小从所述文件切换出所述第一个对象;
将所述第一个对象分成预定数量个数据块;
将所述预定数量个数据块分别发送给所述预定数量个存储节点,以使所述预定数量个存储节点分别将对应的数据块写入并存储。
9.根据权利要求8所述的存储方法,其特征在于,所述将所述预定数量个数据块分别发送给所述预定数量个存储节点,以使所述预定数量个存储节点分别将对应的数据块写入并存储,包括:
在所述预定数量个存储节点各自的第一个对象的数据写入量均大于或等于第二比例时,从所述文件切分出第一个对象的下一个对象并作为当前对象;基于所述当前对象向所述管理节点发出数据存储请求,以将所述当前对象分成的预定数量个数据块一一对应地存储到分布式存储系统中的与所述当前对象对应的预定数量个第二存储节点;
所述将所述预定数量个数据块分别发送给所述预定数量个存储节点,以使所述预定数量个存储节点分别将对应的数据块写入并存储,之后包括:
在所述当前对象不为所述文件的最后一个对象的情况下,响应于所述预定数量个第二存储节点各自的所述当前对象的数据写入量均大于或等于所述第二比例时,从所述文件切分出当前对象的下一个对象并作为当前对象,并返回执行所述基于所述当前对象向所述管理节点发出数据存储请求,以将所述当前对象分成的预定数量个数据块一一对应地存储到分布式存储系统中的与所述当前对象对应的预定数量个第二存储节点的步骤。
10.一种分布式存储方法,其特征在于,分布式存储系统包括管理节点和至少一个存储节点,所述方法应用于所述管理节点,所述方法包括:
响应于客户端的数据存储请求,确定出分布式存储系统中的预定数量个存储节点;
向所述客户端告知所述预定数量个存储节点,以使所述客户端向所述预定数量个存储节点发起数据写入,并在所述预定数量个存储节点中的至少一个存储节点中的用来写入数据的存储磁盘为叠瓦式磁记录盘的情况下,所述至少一个存储节点从各自的叠瓦式磁记录盘中的可用存储区域中选取至少一个用来写入所述客户端传来的数据的存储区域。
11.根据权利要求10所述的存储方法,其特征在于,所述方法还包括:
从各个存储节点获取各个存储节点上的所有数据块的状态;
基于数据块和对象的映射关系,确定每一对象的所有数据块的状态,进而确认每一对象及其对应文件的状态;
在一对象的状态为待恢复的情况下,从所述分布式存储系统的所有存储节点中确定出一个目标存储节点;
控制所述目标存储节点恢复所述对象中的损坏数据块。
12.根据权利要求11所述的存储方法,其特征在于,所述控制所述目标存储节点恢复所述对象中的损坏数据块,包括:
将所述对象中所有数据块的存储节点信息和状态发送给所述目标存储节点,以使所述目标存储节点基于所述存储节点信息读取到所述对象的未损坏数据块,并基于所述未损坏数据块恢复出所述对象的目标数据块。
13.一种电子设备,其特征在于,所述电子设备包括处理器,所述处理器用于执行指令以实现权利要求1-12中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有指令/程序数据,所述指令/程序数据用于被执行以实现权利要求1-12中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211154101.5A CN115617264A (zh) | 2022-09-21 | 2022-09-21 | 分布式存储方法及装置 |
PCT/CN2023/118948 WO2024061108A1 (en) | 2022-09-21 | 2023-09-15 | Distributed storage systems and methods thereof, device and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211154101.5A CN115617264A (zh) | 2022-09-21 | 2022-09-21 | 分布式存储方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115617264A true CN115617264A (zh) | 2023-01-17 |
Family
ID=84858773
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211154101.5A Pending CN115617264A (zh) | 2022-09-21 | 2022-09-21 | 分布式存储方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN115617264A (zh) |
WO (1) | WO2024061108A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116346826A (zh) * | 2023-05-30 | 2023-06-27 | 工业富联(佛山)创新中心有限公司 | 数据库节点部署方法、装置、电子设备及存储介质 |
WO2024061108A1 (en) * | 2022-09-21 | 2024-03-28 | Zhejiang Dahua Technology Co., Ltd. | Distributed storage systems and methods thereof, device and storage medium |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10768820B2 (en) * | 2017-11-16 | 2020-09-08 | Samsung Electronics Co., Ltd. | On-demand storage provisioning using distributed and virtual namespace management |
CN109407976B (zh) * | 2018-09-21 | 2021-09-14 | 联想(北京)有限公司 | 一种分布式存储方法及分布式存储装置 |
KR102067630B1 (ko) * | 2019-02-01 | 2020-01-17 | 배용대 | 접근 제어 기반 데이터 분산 저장 시스템 및 방법 |
CN112579557A (zh) * | 2019-09-27 | 2021-03-30 | 北京沃东天骏信息技术有限公司 | 请求响应方法、装置、系统、计算机系统和可读存储介质 |
CN113672175A (zh) * | 2021-08-09 | 2021-11-19 | 浙江大华技术股份有限公司 | 分布式对象存储方法、装置和设备及计算机存储介质 |
CN115617264A (zh) * | 2022-09-21 | 2023-01-17 | 浙江大华技术股份有限公司 | 分布式存储方法及装置 |
-
2022
- 2022-09-21 CN CN202211154101.5A patent/CN115617264A/zh active Pending
-
2023
- 2023-09-15 WO PCT/CN2023/118948 patent/WO2024061108A1/en unknown
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024061108A1 (en) * | 2022-09-21 | 2024-03-28 | Zhejiang Dahua Technology Co., Ltd. | Distributed storage systems and methods thereof, device and storage medium |
CN116346826A (zh) * | 2023-05-30 | 2023-06-27 | 工业富联(佛山)创新中心有限公司 | 数据库节点部署方法、装置、电子设备及存储介质 |
CN116346826B (zh) * | 2023-05-30 | 2023-08-04 | 工业富联(佛山)创新中心有限公司 | 数据库节点部署方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2024061108A1 (en) | 2024-03-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101137299B1 (ko) | 스냅샷을 제공하는 파일 시스템에 대한 계층적 저장 관리 | |
CN108733761B (zh) | 一种数据处理方法装置及系统 | |
US10558565B2 (en) | Garbage collection implementing erasure coding | |
CN115617264A (zh) | 分布式存储方法及装置 | |
CN106951375B (zh) | 在存储系统中删除快照卷的方法及装置 | |
US9037828B2 (en) | Transferring storage resources between snapshot storage pools and volume storage pools in a data storage system | |
CN113722275B (zh) | 对象存储空间管理方法、装置、服务器及存储介质 | |
CN113672175A (zh) | 分布式对象存储方法、装置和设备及计算机存储介质 | |
US20100262802A1 (en) | Reclamation of Thin Provisioned Disk Storage | |
EP3076307A1 (en) | Method and device for responding to a request, and distributed file system | |
CN106201355A (zh) | 数据处理方法和装置以及存储系统 | |
JP2011197945A (ja) | コントローラ、データ記憶装置、及びプログラム | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
US11436102B2 (en) | Log-structured formats for managing archived storage of objects | |
CN105760113A (zh) | 基于nand闪存的高速存储设备及文件管理方法 | |
CN110147203B (zh) | 一种文件管理方法、装置、电子设备及存储介质 | |
JP2005050024A (ja) | 計算機システムおよびプログラム | |
CN113377292B (zh) | 一种单机存储引擎 | |
CN113704217A (zh) | 一种分布式持久性内存文件系统中元数据及数据组织架构方法 | |
US8082230B1 (en) | System and method for mounting a file system on multiple host computers | |
CN111435286B (zh) | 一种数据存储方法、装置和系统 | |
CN113419897A (zh) | 一种文件处理方法、装置、电子设备及其存储介质 | |
CN114780043A (zh) | 基于多层缓存的数据处理方法及装置、电子设备 | |
CN114153392A (zh) | 一种对象存储数据存储管理方法、装置及设备 | |
CN116991336B (zh) | 分布式全闪对象存储系统的gc方法及电子设备、存储介质 |
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 |