CN113806314A - 一种数据存储方法、装置、计算机存储介质及系统 - Google Patents
一种数据存储方法、装置、计算机存储介质及系统 Download PDFInfo
- Publication number
- CN113806314A CN113806314A CN202010542353.XA CN202010542353A CN113806314A CN 113806314 A CN113806314 A CN 113806314A CN 202010542353 A CN202010542353 A CN 202010542353A CN 113806314 A CN113806314 A CN 113806314A
- Authority
- CN
- China
- Prior art keywords
- data
- operation information
- storage
- semantic
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 111
- 238000013500 data storage Methods 0.000 title claims abstract description 69
- 238000005538 encapsulation Methods 0.000 claims abstract description 71
- 238000004458 analytical method Methods 0.000 claims abstract description 6
- 238000012545 processing Methods 0.000 claims description 29
- 230000008569 process Effects 0.000 claims description 27
- 238000004806 packaging method and process Methods 0.000 claims description 21
- 230000001360 synchronised effect Effects 0.000 claims description 16
- 238000007726 management method Methods 0.000 claims description 15
- 238000004590 computer program Methods 0.000 claims description 7
- 239000000126 substance Substances 0.000 claims description 5
- 238000006243 chemical reaction Methods 0.000 abstract description 11
- 238000010586 diagram Methods 0.000 description 14
- 230000008901 benefit Effects 0.000 description 10
- 230000003321 amplification Effects 0.000 description 9
- 238000003199 nucleic acid amplification method Methods 0.000 description 9
- 239000007787 solid Substances 0.000 description 7
- 238000002955 isolation Methods 0.000 description 6
- 238000013461 design Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000002085 persistent effect Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000002688 persistence Effects 0.000 description 3
- 238000013403 standard screening design Methods 0.000 description 3
- 238000013523 data management Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000002747 voluntary effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据存储方法、装置、计算机存储介质及系统,该方法应用于分布式存储系统,通过基于预设模型对待处理数据进行语义封装,得到语义封装信息;对所述语义封装信息进行解析,得到多个数据类操作信息;将所述多个数据类操作信息对应分发给多个数据执行模块;控制所述多个数据执行模块对应执行所述多个数据类操作信息,以存储所述待处理数据;这样,通过语义封装和解析能够实现存储事务的无损执行,实现了前端存储对象到后端存储对象无损转化,避免了其中的语义损失;能够实现单体对象存储设备跨越多个大容量设备和高速缓存设备,减少了集群中对象存储设备数量,提高了集群稳定性。
Description
技术领域
本申请涉及云计算技术领域,尤其涉及一种数据存储方法、装置、计算机存储介质及系统。
背景技术
Ceph分布式文件系统伴随着统一存储的战略目标发展至今,已经得到了越来越多的运用。作为当前最热门的几大分布式存储系统之一,Ceph分布式文件系统具备了各类数据冗余保护策略,使得存储安全能够得到保证,Ceph分布式文件系统具备高扩展性、高可用性与高性能,包括块存储、对象存储与文件存储,是当前分布式存储的首选解决方案。基于提供这些服务的统一存储战略,Ceph存储系统采用可靠、自治、分布式对象存储(ReliableAutonomic Distributed Object Store,RADOS)结构,RADOS能够利用运行在每个个体节点上的管理软件可以扩展到成千上万的硬件设备,RADOS是Ceph分布式存储系统一个完整的部分,即RADOS定义了Ceph内部将不同服务的不同数据都转化为对象数据并使用本地对象存储引擎(ObjectStore)进行存储。
Ceph分布式文件系统能够提供基于块存储、对象存储和文件存储的用户服务,但是,在系统的后端,所有的数据都会转化为对象存储的形式最终实现储存。其中,对象存储的数据均为非结构化数据,如图片、文档、视频、表单等。在进行对象存储时,对象(object)是系统中数据存储的基本单位,一个对象实际上就是文件的数据和一组属性信息(MetaData)的集合,这些属性信息可以定义基于文件和磁盘阵列(Redundant Arrays ofIndependent Disks,RAID)参数;对象可以通过与存储系统通信维护自己的属性,能够实现自我管理。
ObjectStore是Ceph分布式存储系统中最重要的概念之一,它封装了所有对底层存储的读写(Input&Output,IO)操作,所有IO请求在客户端发出,在信息层统一解析后会被设备层分发到各个处理机,每个处理机都拥有一个队列,一个线程池会对每个队列进行处理。当一个在处理机队列里的IO被提出后,该 IO请求会被根据类型和相关附带参数进行处理。如果是读请求会通过ObjectStore提供的应用程序接口(Application ProgrammingInterface,API)获得相应的内容,如果是写请求也会利用ObjectStore提供的事务API将所有写操作组合成一个原子事务提交给ObjectStore。ObjectStore通过接口对上层提供不同的隔离级别,目前处理机只采用了串行化隔离级别,保证读写的顺序性。
但是,当前的Ceph分布式文件系统仍然存在以下缺点,比如:文件系统无法跨越物理位置、卷管理增加了整体系统的设计复杂性、文件系统无法向更高层次发展等等,导致数据存储的性能和效率偏低。
发明内容
本申请在于提出一种数据存储方法、装置、计算机存储介质及系统,使得分布式存储系统能够实现无写放大的存储方式,从而提升数据存储的性能和效率。
为达到上述目的,本申请的技术方案是这样实现的:
第一方面,本申请实施例提供了一种数据存储方法,应用分布式存储系统,该方法包括:
基于预设模型对待处理数据进行语义封装,得到语义封装信息;
对所述语义封装信息进行解析,得到多个数据类操作信息;
将所述多个数据类操作信息对应分发给多个数据执行模块;
控制所述多个数据执行模块对应执行所述多个数据类操作信息,以存储所述待处理数据。
第二方面,本申请实施例提供了一种数据存储装置,应用于分布式存储系统,该数据存储装置包括封装单元、解析单元、分发单元和执行单元;其中,
封装单元,配置为基于预设模型对待处理数据进行语义封装,得到语义封装信息;
解析单元,配置为对所述语义封装信息进行解析,得到多个数据类操作信息;
分发单元,配置为将所述多个数据类操作信息对应分发给多个数据执行模块;
执行单元,配置为控制所述多个数据执行模块对应执行所述多个数据类操作信息,以存储所述待处理数据。
第三方面,本申请实施例提供了一种数据存储装置,该数据存储装置包括:存储器和处理器;其中,
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,执行如第一方面中所述方法的步骤。
第四方面,本申请实施例提供了一种计算机存储介质,该计算机存储介质存储有数据存储程序,所述数据存储程序被至少一个处理器执行时实现如第一方面中所述方法的步骤。
第五方面,本申请实施例提供了一种分布式存储系统,该分布式存储系统至少包括如第二方面或第三方面所述的数据存储装置。
本申请提供了一种数据存储方法、装置、计算机存储介质及系统,该方法应用于分布式存储系统,包括:基于预设模型对待处理数据进行语义封装,得到语义封装信息;对所述语义封装信息进行解析,得到多个数据类操作信息;将所述多个数据类操作信息对应分发给多个数据执行模块;控制所述多个数据执行模块对应执行所述多个数据类操作信息,以存储所述待处理数据;这样,通过语义封装和解析能够实现存储事务的无损执行,实现了前端存储对象到后端存储对象无损转化;能够实现单体对象存储设备跨越多个大容量设备和高速缓存设备,减少了集群中对象存储设备数量,提高了集群稳定性;避免了其中的语义损失与性能损失;避免了存储过程中的写放大,提高了存储效率;通过多个数据执行模块对不同种类数据进行分别存储,利用内存缓存与高速设备缓存提供了更好的元数据性能存储性能。
附图说明
图1为相关技术方案提供的一种分布式存储系统的结构示意图;
图2为相关技术方案中提供的一种FileStore的结构示意图;
图3为本申请实施例提供的一种数据存储方法的流程示意图;
图4为本申请实施例提供的一种ObjectStore的结构示意图;
图5为本申请实施例提供的另一种数据存储方法的流程示意图;
图6为本申请实施例提供的又一种数据存储方法的流程示意图;
图7为本申请实施例提供的一种数据存储方法的应用架构示意图;
图8为本申请实施例提供的一种数据存储装置的结构示意图;
图9为本申请实施例提供的另一种数据存储装置的结构示意图;
图10为本申请实施例提供的一种数据存储装置的硬件结构示例;
图11为本申请实施例提供的一种系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
对于Ceph存储系统而言,一般以事务(transaction)为命令的执行单位,事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为ACID(原子性、一致性、隔离性和持久性)属性,只有具备这四种属性的操作才能称之为一个事务。具体的,这四种属性的含义如下:(1)原子性,事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行;(2)一致性,事务在完成时,必须使所有的数据都保持一致状态,在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性;事务结束时,所有的内部数据结构都必须是正确的;(3)隔离性,由并发事务所作的修改必须与任何其它并发事务所作的修改隔离,事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据,这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同;(4)持久性,事务完成之后,它对于系统的影响是永久性的,该修改即使出现系统故障也将一直保持。
请参见图1,其示出了相关技术提供的一种ObjectStore存储引擎示意图,如图1所示,ObjectStore作为Ceph分布式文件存储系统的后端存储引擎,封装了下层存储的所有IO操作,向上层OSD(Object Storage Device,对象存储设备)提供对象及事务语义的接口;其中,FileStore亦即文件系统存储引擎,主要用于将ObjectStore对象存储本身的语义操作转化为对文件系统存储操作。目前,FileStore中现支持三种后端文件系统XFS(一种高性能的文件存储系统)、 BTRFS(Butter FS,一种写时复制文件系统)和ZFS(Zettabyte FileSystem,动态文件系统);另外,BlueStore同样是Ceph分布式存储系统支持的一种存储引擎,本质是一种用户态的存储系统,能够独立实现一套逻辑管理裸盘。
对于三种后端文件系统XFS、BTRFS和ZFS,以及BlueStore存储引擎,都无法避免要将一个对象的原子性操作(包含对象数据,对象属性,对象扩展元数据与对象索引&集合元数据)产生的信息分开存放,这是减少开销的做法,也是对Ceph对象来说最好的做法。基于此,FileStore目前最常使用传统的XFS 等日志型文件系统作为后端存储,但是XFS无法很好的提供ObjectStore事务一致性支持,这也是FileStore必须引入FileJournal(用于保证实务操作原子性的模块)来保证事务操作原子性的原因,这种做法造成了大量的写放大,文件系统本身也产生了很多不必要的日志;同时,对于ObjectStore对象属性操作仍需要用到基于普通文件系统如XFS的数据库。另外,这些缺点同样是BlueStore的缺点,使得BlueStore的应用也受到限制。
另外,无论是XFS、BTRFS的FileStore还是BlueStore都没有解决对Ceph分布式存储系统下大容量集群中产生的一个问题,即OSD数量过多。这三类存储引擎都基于单盘或最多双盘,一个主机会拥有相当多数量的OSD,当集群需要足够多的同一命名空间有效容量时,会需要大量OSD与OSD进程,复杂度和PAXOS(分布式一致协议)压力都大大提高。现有技术中一般靠磁盘阵列避免这一点,但阵列带来了新的问题:一是引入阵列意味着性能受阵列卡/控制器限制;二是对于OSD来说,建立在阵列上实际与BCache(一种缓存模式)等缓存模式产生了冲突;三是阵列带来的管理和冗余模式的新复杂度。
ZFS结合了文件系统与设备管理,使传统文件系统无法跨越数据物理位置,卷管理增加了设计复杂性和文件系统无法向更高层次发展的缺陷得到了解决。 ZFS文件系统是一个革命性的全新的文件系统,它从根本上改变了文件系统的管理方式,这个文件系统的特色和其带来的好处至今没有其他文件系统可以与之媲美,ZFS被设计成强大的、可升级并易于管理的。ZFS目前被称为“最后的文件系统”,也被称为“文件系统的终极展现方式”。
ZFS作为一种写时拷贝事务模型的事务型文件系统,本身其实是可以经由改造全面支持ObjectStore事务处理操作的。然而,由于XFS加入的先例,ZFS 加入过程使用其ZPL(ZFS POSIX Layer)与FileStore的后端接口简单结合完成,请参见图2,其示出了相关技术方案中提供的一种FileStore的结构示意图,如图2所示,这种生硬的结合方式导致ZFS的FileStore仍受限于旧有XFS式的接口处理方式,FileStore与ZFS的生硬结合造成了以ZFS为ObjectStore后端存储文件系统的传统使用方式,在目前显得效率低下,性能低下。
值得注意的是,在本申请中,ZFSStore是ObjectStore的后端,在ZFSStore和ObjectStore中都存在Object(对象,数据存储的单位)和transaction(事务,操作的单位)的概念,但是ObjectStore中的Object和transaction和ZFSStore中的Object和transaction的内涵并不完全一样;除此之外,对于一个transaction 来说,还包括专门用于保证操作原子性的子操作,一般称之为Transaction OP。
基于此,下述ObjectStore中Object的概念与ZFS中的Object概念是不同的,本申请主要包括如下几个概念:
在Ceph层面上的概念:
ZFSStore:作为ObjectStore的新型后端存储引擎,负责对ObjectStore下述的transaction进行初步语义转换与分发;
Transaction OP:ObjectStore事务类操作,主要保证transaction的原子性;
Object OP:ObjectStore存储到ZFSStore的数据类操作;
Object Metadata OP:Object数据的元数据类操作;
Omap OP:Object的扩展元数据类操作;
Coll OP:Object的索引数据,集合数据类操作;
在ZFS层面的上概念:
ZFS-Pool:一个OSD ObjectStore使用的后端资源池,本身包含多个大容量设备与高速缓存设备,是ZFS中一个文件系统的基本资源概念;
ZFS-ARC:ZFS在ARC(Automatic Resource Compilation)算法基础上设计了可变大小的逻辑且较之ARC算法的缓存页,ZFS-ARC基于下层设备逻辑的块状态以缓冲(buffer)块为单位来实现缓存;
L2ARC:ZFS-ARC二级缓存设备,通常用来加速读缓存,使用NVME或 SAS SSD作为缓存设备,其中NVME和SAS均是固态硬盘(Solid State Disk, SSD)的接口协议;
CollARC:基于ZFS-ARC优化的持久型ARC内存缓存用来缓存所有Coll类数据,CollARC为本申请新增设计。
ZPL:全称为ZFS POSIX Layer,ZFS提供为上层处理POSIX协议类操作的抽象。
ZAP:全称为ZFS Attribute Processor,处理键值对对象存储操作的模块,主要将文件属性处理为Omap,Object Metadata等对象数据信息,与文件转化的 Object进行ZFS内部的关联索引与处理。
ZFS-Object:ZFS为实现写时拷贝事务模型技术,引入Object对象及对象的附属数据(参考对象存储,也可参考Ceph中ObjectStore本身)将上层POSIX 或Volume或libzfs等不同语义数据进行转译,其中,POSIX、Volume和libzfs均为数据语义格式,作为内部存储过程实际使用的属性形式。
DMU:全称为Data Management Unit,相当于中央处理器的内存管理单元。ZFS用来负责连接上述ZFS-Object,也是ZFS-Object-Offset等信息与物理块的块指针。例如ZPL-DMU过程接口将文件系统Inode(文件的属性信息)与文件直接转化为object再将其索引连接块指针。
SPA:全称为Storage Pool Allocator,负责分配并释放实际的存储空间,负责处理DMU的分配与释放请求,负责发起读写请求。
ZFS transaction group:ZFS的事务处理层面,依托于DMU模块,DMU将上层各类语义单个操作转化为多个object各类操作,但会封装为单个transaction 以保证原子性,此模块负责维持三类transaction group队列,分别为同步,开放,停顿三种状态的group,在同步类的transaction可以进行小块数据合并处理操作以此提高事务处理效率。
ZSTL:全称为ZFSStore Transaction Layer,用来转译ZFSStore transaction 操作,同时ZSTL实现基于ObjectStore逻辑的transaction捆绑操作。
ZIL:全称为ZFS Intent Log,ZFS中类似日志写高速缓存的概念,区别是写入数据仅在断电恢复后产生读取,其他任意状况都不会被读取;其次写入裸块,其缓存关系由DMU模块控制,不包含元数据信息。
基于此,本申请提供了一种数据存储方法,该方法应用于分布式存储系统,通过基于预设模型对待处理数据进行语义封装,得到语义封装信息;对所述语义封装信息进行解析,得到多个数据类操作信息;将所述多个数据类操作信息对应分发给多个数据执行模块;控制所述多个数据执行模块对应执行所述多个数据类操作信息,以存储所述待处理数据;这样,通过语义封装和解析能够实现存储事务的无损执行,实现了前端存储对象到后端存储对象无损转化,避免了其中的语义损失与性能损失;能够实现单体对象存储设备跨越多个大容量设备和高速缓存设备,减少了集群中对象存储设备数量,提高了集群稳定性;避免了存储过程中的写放大,提高了存储效率;通过多个数据执行模块对不同种类数据进行分别存储,利用内存缓存与高速设备缓存提供了更好的元数据性能存储性能。
在本申请的一实施例中,参见图3,其示出了本申请实施例提供的一种数据存储方法的流程示意图。如图3所示,该方法可以包括:
S101:基于预设模型对待处理数据进行语义封装,得到语义封装信息;
需要说明的是,本实施例中所提供的数据存储方法应用于分布式存储系统。在本申请中,主要是将该数据存储方法用于Ceph分布式存储系统。参见图4,其示出了本申请实施例提供的一种ObjectStore的结构示意图,如图4所示,在本申请的Ceph分布式存储系统中,ObjectStore的后端可以同时支持FileStore、BlueStore和ZFSStore,具体采用哪一种后端需要根据具体的使用环境和硬件设备决定。
需要说明的是,对于Ceph分布式存储系统而言,需要将不同服务的不同数据都转化为对象数据并使用本地对象存储引擎ObjectStore进行存储的,所以本实施例所提供的数据存储方法本质上是ObjectStore后端的数据存储方法。对于Ceph分布式存储系统而言,在关于数据管理方面的具体命令都是以事务的形式呈现的,也就是说,待处理数据和语义封装信息均是以transaction的形式呈现的。
ObjectStore是Ceph分布式存储系统中最重要的概念之一,它封装了所有对底层存储的IO操作,所有IO请求在客户端发出,在信息层统一解析后会被设备层分发到各个处理机,每个处理机都拥有一个队列,一个线程池会对每个队列进行处理。当一个在处理机队列里的IO被提出后,该IO请求会被根据类型和相关附带参数进行处理。如果是读请求会通过ObjectStore提供的API获得相应的内容,如果是写请求也会利用ObjectStore提供的事务API将所有写操作组合成一个原子事务提交给ObjectStore。ObjectStore通过接口对上层提供不同的隔离级别,目前处理机只采用了串行化隔离级别,保证读写的顺序性。
对于写请求,ObjectStore需要将组成的原子事务发送至后端的文件系统,最终实现数据的存储,本申请所述的数据存储方法实际是对于这个后端的文件系统而言的。该文件存储系统拥有一套独立的命令执行体系,因此,虽然ObjectStore和该文件存储系统中都存在操作对象的概念,但是其并不是完全一致的,所以当该文件存储系统接收到待处理数据后,需要先基于预设模型对其进行语义的封装,转换为该文件存储系统通用的命令形式。也就是说,待处理数据本质上是指基于ObjectStore架构的transaction,而封装后的语义封装信息本质上是基于该文件存储系统结构的transaction。
ObjectStore后端的文件存储系统可以采用ZFS,因此,在一些实施例中,所述预设模型至少包括动态文件系统ZFS管理模型。
需要说明的是:ZFS文件系统是一个革命性的全新的文件系统,它从根本上改变了文件系统的管理方式,这个文件系统的特色和其带来的好处至今没有其他文件系统可以与之媲美,ZFS被设计成强大的、可升级并易于管理的。ZFS 用“存储池”的概念来管理物理存储空间。在此之前,文件系统都是构建在物理设备之上的,为了管理这些物理设备,并为数据提供冗余,“卷管理”的概念提供了一个单设备的映像。但是这种设计增加了复杂性,同时无法使文件系统向更高层次发展,因为文件系统不能跨越数据的物理位置。
ZFS完全抛弃了“卷管理”,不再创建虚拟的卷,而是把所有设备集中到一个存储池中来进行管理。“存储池”描述了存储的物理特征(设备的布局,数据的冗余等等),并扮演一个能够创建文件系统的专门存储空间。从此,文件系统不再局限于单独的物理设备,而且文件系统还允许物理设备把自带的那些文件系统共享到这个“存储池”中,而使用者不再需要预先规划好文件系统的大小,因为文件系统可以在“存储池”的空间内自动的增大。当增加新的存储介质时,所有“存储池”中的所有文件系统能立即使用新增的空间,而不需要额外的操作。在很多情况下,“存储池”扮演了一个虚拟内存。
同时,ZFS是基于写时拷贝事务模型技术的文件系统,所有文件系统中的块指针都包括256位的能在读时被重新校验的关于目标块的校验和。含有活动数据的块从来不被覆盖,而是分配一个新块,并把修改过的数据写在新块上,所有与该块相关的元数据块都被重新读、分配和重写。为了减少该过程的开销,多次读写更新被归纳为一个事件组,并且在必要的时候使用日志来同步写操作。
具体地,为了在ZFS中实现写时拷贝事务模型技术,需要引入Object对象及对象的附属数据,需要将上层POSIX或Volume或libzfs等不同语义数据进行转译,作为内部存储过程实际使用的属性形式,其中,PVolume、libzfs均是Ceph分布式文件系统中的语义标准。所以对于本实施例所述的数据存储方法来说,在接收到ObjectStore的数据命令(如入队queue,执行do,同步sync,提交apply等)后,需要先对其进行语义封装,得到语义封装信息,相当于将ObjectStore的操作逻辑转化为本实施例所述的数据存储方法的操作逻辑,以便于后续的处理。
也就是说,由于ObjectStore后端的文件存储系统采用ZFS,相应地,预设模型对应为动态文件系统(Zettabyte File System,ZFS)管理模型,通过该预设模型,能够将基于ObjectStore的transaction转化为基于ZFS的transaction。
需要说明的是,本实施例中所提供的数据存储方法主要应用了写时拷贝事务模型技术,写时拷贝的核心思想是懒惰处理多个实体的自愿请求,在多个实体之间共享某些资源,直到有实体需要对资源进行修改时,才真正为该实体分配私有的资源。写时拷贝具有以下两个明显的优点:(1)减少了分配和复制大量资源带来的瞬间延迟;(2)减少了不必要的资源分配。
S102:对所述语义封装信息进行解析,得到多个数据类操作信息;
需要说明的是,Ceph分布式存储系统会将不同服务的不同数据都转化为对象数据进行存储,也就是说语义封装信息中包含有具体的对象数据,而对象数据实际上是具体数据和属性信息的集合,而这些不同种类的数据需要通过不同的处理过程,所以需要对语义封装信息进行解析,从而得到多个数据类操作信息,然后对多个数据类操作信息进行不同的处理。
进一步地,对象数据可以细分为四类不同的数据,所以,在一些实施例中,步骤S102具体可以包括:
对所述语义封装信息进行解析,得到第一数据对应的第一数据类操作信息、第二数据对应的第二数据类操作信息、第三数据对应的第三数据类操作信息和第四数据对应的第四数据类操作信息;其中,所述第一数据用于指示对象的待存储数据,所述第二数据用于指示对象的索引数据和集合数据,所述第三数据用于指示对象的元数据,所述第四数据用于指示对象的扩展元数据;
相应地,所述将所述多个数据类操作信息对应分发给多个数据执行模块,包括:
需要说明的是:通过对语义封装信息的进一步解析,可以得到对象的待存储数据类操作(Object OP)、元数据类操作(Object Metadata OP)、扩展元数据类操作(Omap OP)、索引数据和集合数据类操作(Coll OP)。其中,对象的待存储数据指的是ObjectStore存储到ZFSStore的数据。
S103:将所述多个数据类操作信息对应分发给多个数据执行模块;
需要说明的是,在经过分类之后,数据类操作信息被分发给相应的数据执行模块进行执行,最终在实体设备分配的存储空间上进行存储。由于多个数据类操作信息的处理过程并不相同,所以需要将所述多个数据类操作信息对应分发给多个数据执行模块,这也提高了数据存储的效率。其中,数据执行模块与数据类操作信息的对应关系是综合考虑了Ceph分布式存储系统、写时拷贝事务模型以及实体设备等得到的,实质上包含了对现有体系内多种接口的改进,以使得多种数据类操作能够通过不同的路径最终得到存储。
由于数据操作信息包括第一数据类操作信息、第二数据类操作信息、第三数据类操作信息和第四数据类操作信息,所以步骤S103,具体可以包括:
将第一数据类操作信息分发给第一数据执行模块;其中,第一数据执行模块用于执行第一数据的存储;
将第二数据类操作信息分发给第二数据执行模块;其中,第二数据执行模块用于执行第二数据的存储;
将第三数据类操作信息和第四数据类操作信息分发给第三数据执行模块;其中,第三数据执行模块用于将所述第三数据和所述第四数据与所述第一数据进行关联索引与处理。
需要说明的是,对于第一数据类操作信息,即Object OP,下发第一数据执行模块,一般是ZFS DMU驱动模块;对于第二数据类操作信息,即Coll OP,下发第二数据执行模块直接进行缓存,在现有技术的ZFS中,并不存在第二数据执行模块,是本申请针对调用率较高的对象的索引数据和集合数据(Coll类数据)专门设计的,在本申请中称之为CollARC模块;对于第三数据类操作和第四数据类操作,即Object Metadata OP和Omap OP,均下发第三数据执行模块进行处理,一般是ZAP驱动处理。
S104:控制所述多个数据执行模块对应执行所述多个数据类操作信息,以存储所述待处理数据。
需要说明的是,通过多个数据执行模块对应完成所述多个数据类操作信息,从而完成待处理数据的存放,使得ObjectStore与后端的文件系统完美融合,增加数据存放的效率,增加分布式存储系统的性能。
由于数据操作信息包括第一数据类操作信息、第二数据类操作信息、第三数据类操作信息和第四数据类操作信息,所以步骤S104,具体可以包括:
控制第一数据执行模块将所述第一数据存储到预设存储层,以执行所述第一数据类操作信息;
控制第二数据执行模块存储所述第二数据,以执行所述第二数据类操作信息;
控制第三数据执行模块处理所述第三数据和所述第四数据,以及控制第一数据执行模块将处理后的所述第三数据和所述第四数据存储到预设存储层,以执行所述第三数据类操作信息和所述第四数据类操作信息。
需要说明的是,对于第一数据类操作信息,第一数据执行模块将Object类数据存储到预设存储层,即分布式数据存储层(HDDs);具体地,对于Object 类数据,由ZFS DMU驱向SPA(SPA管理者分布式系统的存储层)申请存储空间,然后将Object类数据存储在预设存储层中。
需要说明的是,对于第二数据类操作信息,由于第二数据类操作信息的数据对象会被频繁调用,为了简化调用过程,所以由第二数据执行模块直接进行缓存,而不会送入预设存储层进行存储;具体地,对于Coll类数据,由CollARC模块直接进行存储。
还需要说明的是,对于第三数据类操作信息和第四数据类操作信息,其中的数据对象都与第一数据类操作的数据对象密切关联,无法单独进行存放,所以最终是与Object类数据一起存储到预设存储层中的。具体地,对于Meta/Omap类数据,由ZAP驱动处理后送入ZFS DMU驱动,最终存储于预设存储层中。
在一些实施例中,虽然CollARC能够对Coll类数据进行缓存,但其本质是一个执行模块,所以存储空间有限,所以仍然需要一个固定存储空间存放Coll类数据,所以,在所述通过第二数据执行模块将Coll类数据进行缓存之后,所述方法还包括:
控制所述第二数据执行模块对所述第二数据添加缓存标识;
当满足预设条件时,基于所述缓存标识,控制所述第二数据执行模块将所述第二数据存储到预设缓存空间。
需要说明的是,由于Coll类数据是调用频率较高的数据,而且与Object 类数据的联系相对不那么紧密,所以对其进行单独存放;为了增加Coll类数据的调用速度,将Coll类数据存放于基于ARC算法的高速缓存中(ZFS-ARC)。在第二数据执行模块缓存Coll类数据时,会基于ZFS-ARC添加持久性缓存标识,之后,在ZFS Pool的OSD启动后从设备中读取后持久性缓存于ZFS-ARC 中,实现了Coll类数据地持久化存储。
还需要说明的是,在安装了固态硬盘(Solid State Disk或Solid State Drive,SSD)的情况下,可以利用固态硬盘作为二级缓存设备,即L2ARC,此时,可以将Coll类数据存放在作为L2ARC的固态硬盘中。
对于分布式存储系统,可以由不同的设备提供存储空间,在一些实施例中如果系统中存在高速设备,比如固态硬盘等,那么所述多个数据执行模块还可以包括高速模块,所以骤S103,还可以包括:
将所述第一数据类操作信息分发给高速模块;其中,所述高速模块用于快速执行所述第一数据类操作信息;
相应地,步骤S104,还可以包括:
控制所述高速模块将第一数据存储于高速设备中,以执行所述第一数据类操作信息。
需要说明的是,高速设备的含义为不同于系统原有的存储逻辑且能够实现高速读写过程的设备。以固态硬盘为例,此时Object数据可以通过ZIL驱动(相当于高速模块)存储到ZIL SSDs(相当于高速设备)中,这种途径要比经由 ZFS DMU途径的存储速度快很多,是一种高速存储的方式。
还需要说明的是:ZIF模块的作用是ZFS中类似日志写高速缓存的概念,主要区别是写入数据仅在断电恢复后产生读取,其他任意状况都不会被读取;其次写入裸块,其缓存关系由DMU模块控制,不包含元数据信息。也就是说, ZIL仅作为高速写数据缓存,不需要提供给Ceph系统读取数据的功能,故不需要具备与元数据等的关联,其关联将在最终落盘HDD时由DMU完成。
由于语义封装信息本身是一个transaction,所以其必须具有原子性,也就是说多种数据类操作信息必须保证都被操作完成或者都没有被操作,因此,在一些实施例中,所述方法还包括:
对所述语义封装信息进行解析,得到事务类操作信息;其中,事务类操作用于保证所述多个数据类操作的原子性;
将所述事务类操作信息分发给事务执行模块;
控制所述事务执行模块执行所述事务类操作信息,以保证所述多个数据类操作的原子性。
需要说明的是,事务类操作即为Transaction OP,主要用于保证语义封装信息的原子性,具体是将Object OP、Object Metadata OP、Omap OP和Coll OP 四类操作进行捆绑,使得这四类操作要么都被操作完成要么都没有被操作,从而保证语义封装信息的原子性。
还需要说明的是:事务类操作由事务执行模块进行完成,事务执行模块也是本申请单独设立的,称之为ZSTL模块,能够解析事务类操作并且实现基于ObjectStore逻辑的写类与同步类的捆绑操作。
综上所述,本实施例提供的数据存储方法,主要特点如下:
(1)利用ZFS transaction机制实现的ObjectStore transaction无写放大施行方式;
(2)利用ZFS文件系统内建高速设备缓存机制(ARC和L2ARC与ZIL) 实现的ObjectStore元数据高速缓存,以及实现此过程的ZFS内部模块(DMU) 针对上层ObjectStore的优化方案与算法;
(3)利用ZFS内部数据形式Object实现的ObjectStore对象与对象元数据到ZFS-Object的无损转化;
(3)设计ZSTL模块承担ZFSStore transaction对ZFS transaction group的转译处理,实现对小块写transaction合并以使ZIO写请求合并的逻辑与算法;
(4)为使用户态ZFSStore得以正常使用而对ZFS模块进行的驱动化与内存空间透传改造。
相比较于现有的分布式存储解决方案ZFS FileStore与BlueStore相比,具有以下优点:
(1)实现了transaction无损执行,避免了写放大与journal盘的浪费。
(2)基于ZFS Pool特性,实现单个OSD扩容,缩容这种现有OSD都不具备的功能;
(3)真正实现单OSD跨越多个大容量设备和高速缓存设备,舍弃BCache, Raid(BCache和Raid是现有技术常用的缓存模式)等复杂易冲突模式,减少了集群OSD数量,提高了集群稳定性;
(4)实现了ObjectStore对象到ZFS-Object无损转化,避免了原来为经过 VFS而从Object-File-Object的转化过程,避免了其中的语义损失与性能损失;
(5)为ZFSStore特别优化的ZFS缓存逻辑与算法,利用内存缓存与高速设备缓存,比旧有使用基于文件系统的数据库来存储元数据提供更强大的ObjectStore元数据性能。
本申请提供了一种数据存储方法,该方法应用于分布式存储系统,通过基于预设模型对待处理数据进行语义封装,得到语义封装信息;对所述语义封装信息进行解析,得到多个数据类操作信息;将所述多个数据类操作信息对应分发给多个数据执行模块;控制所述多个数据执行模块对应执行所述多个数据类操作信息,以存储所述待处理数据;这样,通过语义封装和解析能够实现存储事务的无损执行,实现了前端存储对象到后端存储对象无损转化,避免了其中的语义损失与性能损失;能够实现单体对象存储设备跨越多个大容量设备和高速缓存设备,减少了集群中对象存储设备数量,提高了集群稳定性;避免了存储过程中的写放大,提高了存储效率;通过多个数据执行模块对不同种类数据进行分别存储,利用内存缓存与高速设备缓存提供了更好的元数据性能存储性能。
在本申请的另一实施例中,参见图5,其示出了本申请实施例提供的另一种数据存储方法的流程示意图,如图5所示,在步骤S101之后,所述方法还可以包括:
S201:确定所述语义封装信息对应的任务种类;
需要说明的是,将接收到的操作命令转化为语义封装信息后,就获得了很多单个的transaction;根据transaction的实质内容可以将transaction分为三类;也就是说,系统中维持着三类transaction group队列,分别为同步,开放,停顿三种状态的group。所以,当获得语义封装信息后,需要确定语义封装信息的任务种类,然后将其插入到对应的任务队列中,等待后续执行。
S202:基于所确定的任务种类将所述语义封装信息插入对应的任务队列;其中,所述任务队列包括同步队列、开放队列和停顿队列;
需要说明的是,根据任务种类将语义封装信息插入相应的队列,从而使得后续模块能够对语义封装信息进行正确处理。
S203:在所述同步队列中,判断是否存在待合并处理的多个语义封装信息;
在这里,对于步骤S203来说,如果判断结果为是,则执行步骤S204。
需要说明的是,在同步队列中,有些命令是可以合并操作的,这样能够明显提高事务的处理效率,也会降低设备的压力。所以在同步队列中,通过判断是否存在待合并处理的多个语义封装信息,从而决定是否需要将多个语义封装信息进行合并处理。
S204:对所述多个语义封装信息进行合并处理。
需要说明的是,通过对所述多个语义封装信息进行合并,即实现对小块写transaction合并以使写请求合并的逻辑与算法,可以减少系统的读写压力,提高系统的处理速度和计算能力,显著提高事务的处理效率。
本申请实施例提供了一种数据存储方法,对前述实施例的具体实现进行了详细阐述,从中可以看出,通过语义封装和解析能够实现存储事务的无损执行,实现了前端存储对象到后端存储对象无损转化,避免了其中的语义损失与性能损失;能够实现单体对象存储设备跨越多个大容量设备和高速缓存设备,减少了集群中对象存储设备数量,提高了集群稳定性;避免了存储过程中的写放大,提高了存储效率;通过多个数据执行模块对不同种类数据进行分别存储,利用内存缓存与高速设备缓存提供了更好的元数据性能存储性能。
在本申请提供的又一实施例中,参见图6,其示出了本申请实施例提供的又一种数据存储方法的流程示意图,如图6,该数据存储方法可以包括:
S301:将transaction类操作进行语义二次封装,并将封装后的transaction 解析得到Transaction Op和Object/Coll/Omap/Meta四类操作;
需要说明的是,该数据存储方法应用于分布式存储系统,参见图7,其示出了本申请实施例提供的一种数据存储方法的应用架构示意图,如图7所示,ObjectStore下发操作后,ZFSStore将会对transaction类操作(如入队queue,执行do,同步sync,提交apply等)进行二次封装,即将基于ObjectStore逻辑的 transaction转化为基于ZFSStore逻辑的transaction,以使得后续模块能够解析这些命令。
还需要说明的是:当ZFSStore完成语义封装后,还需要对得到的transaction 进行解析,得到Transaction Op和Object/Coll/Omap/Meta四类操作,其中 Object/Coll/Omap/Meta四类操作是对象的不同种数据类操作,而Transaction Op 是事务类操作,用来保证Object/Coll/Omap/Meta四类操作的原子性;
S302:将Transaction Op通过循环缓冲区透传ZSTL模块,并分发处理 Object/Coll/Omap/Meta四类操作;
需要说明的是,将Transaction Op通过循环缓冲区(ring buffer)透传至ZSTL 模块,即Transaction Op主要由ZSTL模块进行执行,具体地,ZSTL模块基于ObjectStore逻辑对Object/Coll/Omap/Meta四类操作进行捆绑,从而保证transaction的原子性。
S303:将解析出的Object类操作直接下发ZFS DMU驱动模块,或者在ZFS Pool中具备ZIL SSDs时开启写缓存下发ZIL驱动;
需要说明的是:对于Object类数据,存在两种存储途径,一种是直接下发 ZFS DMU驱动模块;一种是在ZFS Pool中具备ZIL SSDs时开启写缓存下发 ZIL驱动。也就是说,如果系统内安装了高速的固态硬盘,那么Object类数据可以通过后一种存储途径实现高速缓存。
S304:实现CollARC模块,缓存访问密度频繁的Coll类数据;
需要说明的是,对于Coll类数据,由CollARC模块进行缓存,缓存基于 ZFS-ARC添加持久性缓存标识,在ZFS Pool的OSD启动后从设备中读取后持久性缓存于ZFS-ARC中,通过ring buffer实现透传。
S305:将Meta/Omap类操作下发ZAP驱动处理。
需要说明的是,对于Meta或者Omap类数据,由ZAP驱动(对对象存储操作的模块,主要将文件属性处理为Omap,Object Metadata等进行处理,与文件转化的Object类数据进行ZFS内部的关联索引与处理,最终与Object类数据一起存放到预设存储层。
综上所述,本实施例提供了一种数据存储方法,其对应的系统架构相对于现有技术具有以下改进:(1)为ZFSStore改造ZFS模块,使其能够在性能和语义上更适合作为ObjectStore后端;(2)改造多个模块接口驱动,实现与内存透传和用户态驱动;(3)添加ZSTL模块,解析ZFSStore transaction并实现基于ObjectStore逻辑的写类与同步类transaction在group中的捆绑操作,以使DMU 或ZIL合并写操作减少磁盘IOPS(Input/Output Operations Per Second,吞吐量) 压力;(4)DMU逻辑进一步优化,在上层操作语义方面仅对ZAP(一种存储机制)对象类型数据进行ARC读缓存逻辑,非上层操作则还包含ZFS文件系统本身元数据;(5)提供了DMU优化另一种模式,实现可选Object对象大小在限度范围内时(例如4KB以内)于ARC的读缓存优化。
本申请实施例提供了一种数据存储方法,对前述实施例的具体实现进行了详细阐述,从中可以看出,通过语义封装和解析能够实现存储事务的无损执行,实现了前端存储对象到后端存储对象无损转化,避免了其中的语义损失与性能损失;能够实现单体对象存储设备跨越多个大容量设备和高速缓存设备,减少了集群中对象存储设备数量,提高了集群稳定性;避免了存储过程中的写放大,提高了存储效率;通过多个数据执行模块对不同种类数据进行分别存储,利用内存缓存与高速设备缓存提供了更好的元数据性能存储性能。
本申请的再一实施例中,参见图8,其示出了本申请实施例提供的一种数据存储装置40的组成结构图,如图8所示,该数据存储装置应用于分布式存储系统,包括封装单元401、解析单元402、分发单元403和执行单元404;其中,
封装单元401,配置为基于预设模型对待处理数据进行语义封装,得到语义封装信息;
解析单元402,配置为对所述语义封装信息进行解析,得到多个数据类操作信息;
分发单元403,配置为将所述多个数据类操作信息对应分发给多个数据执行模块;
执行单元404,配置为控制所述多个数据执行模块对应执行所述多个数据类操作信息,以存储所述待处理数据。
参见图9,其示出了本申请实施例提供的另一种数据存储装置40的组成结构图,如图9所示,在上述方案的基础上,该数据存储装置40还包括事务单元 405,配置为对所述语义封装信息进行解析,得到事务类操作信息;其中,事务类操作用于保证所述多个数据类操作的原子性;将所述事务类操作信息分发给事务执行模块;控制所述事务执行模块执行所述事务类操作信息,以保证所述多个数据类操作的原子性。
在上述实施例中,该解析单元402,具体配置为对所述语义封装信息进行解析,得到第一数据对应的第一数据类操作信息、第二数据对应的第二数据类操作信息、第三数据对应的第三数据类操作信息和第四数据对应的第四数据类操作信息;其中,所述第一数据用于指示对象的待存储数据,所述第二数据用于指示对象的索引数据和集合数据,所述第三数据用于指示对象的元数据,所述第四数据用于指示对象的扩展元数据;
相应地,该分发单元403,具体配置为将第一数据类操作信息分发给第一数据执行模块;其中,第一数据执行模块用于执行第一数据的存储;将第二数据类操作信息分发给第二数据执行模块;其中,第二数据执行模块用于执行第二数据的存储;将第三数据类操作信息和第四数据类操作信息分发给第三数据执行模块;其中,第三数据执行模块用于将所述第三数据和所述第四数据与所述第一数据进行关联索引与处理。
在上述实施例中,该执行单元404,具体配置为控制第一数据执行模块将所述第一数据存储到预设存储层,以执行所述第一数据类操作信息;控制第二数据执行模块存储所述第二数据,以执行所述第二数据类操作信息;控制第三数据执行模块处理所述第三数据和所述第四数据,以及控制第一数据执行模块将处理后的所述第三数据和所述第四数据存储到预设存储层,以执行所述第三数据类操作信息和第四数据类操作信息。
在上述实施例中,该执行单元404,还可以配置为控制所述第二数据执行模块对所述第二数据添加缓存标识;当满足预设条件时,基于所述缓存标识,控制所述第二数据执行模块将所述第二数据存储到预设缓存空间。
在上述实施例中,该分发单元403,还可以配置为将所述第一数据类操作信息分发给高速模块;其中,所述高速模块用于快速执行所述第一数据类操作信息;所述执行单元404,还可以配置为控制所述高速模块将第一数据存储于高速设备中,以执行对所述第一数据类操作信息。
如图9所示,在上述方案的基础上,该数据存储装置40还包括队列单元 406,配置为确定所述语义封装信息对应的任务种类;基于所确定的任务种类将所述语义封装信息插入对应的任务队列;其中,所述任务队列包括同步队列、开放队列和停顿队列。
如图9所示,在上述方案的基础上,该数据存储装置40还包括合并单元 407,配置为在所述同步队列中,判断是否存在待合并处理的多个语义封装信息;当存在待合并处理的多个语义封装信息时,对所述多个语义封装信息进行合并处理。
在上述方案中,所述预设模型至少包括动态文件系统ZFS管理模型。
可以理解地,在本实施例中,“单元”可以是部分电路、部分处理器、部分程序或软件等等,当然也可以是模块,还可以是非模块化的。而且在本实施例中的各组成部分可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
所述集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
因此,本实施例提供了一种计算机存储介质,该计算机存储介质存储有数据存储程序,所数据存储程序被至少一个处理器执行时实现前述实施例中任一项所述的方法的步骤。
基于上述的一种数据存储装置40的组成以及计算机存储介质,参见图10,其示出了本申请实施例提供的一种数据存储装置40的具体硬件结构示例,可以包括:通信接口501、存储器502和处理器503;各个组件通过总线系统804 耦合在一起。可理解,总线系统504用于实现这些组件之间的连接通信。总线系统804除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图10中将各种总线都标为总线系统504。其中,通信接口501,用于在与其他外部网元之间进行收发信息过程中,信号的接收和发送;
存储器502,用于存储能够在处理器503上运行的计算机程序;
处理器503,用于在运行所述计算机程序时,执行:
基于预设模型对待处理数据进行语义封装,得到语义封装信息;
对所述语义封装信息进行解析,得到多个数据类操作信息;
将所述多个数据类操作信息对应分发给多个数据执行模块;
控制所述多个数据执行模块对应执行所述多个数据类操作信息,以存储所述待处理数据。
可以理解,本申请实施例中的存储器502可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM, DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double DataRate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步链动态随机存取存储器(Synchronous link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请描述的系统和方法的存储器502旨在包括但不限于这些和任意其它适合类型的存储器。
而处理器503可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器503中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器503可以是通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(APPlication Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器502,处理器503读取存储器 502中的信息,结合其硬件完成上述方法的步骤。
可以理解的是,本申请描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(APPlication Specific Integrated Circuits,ASIC)、数字信号处理器 (DigitalSignal Processing,DSP)、数字信号处理设备(DSP Device,DSPD)、可编程逻辑设备(Programmable Logic Device,PLD)、现场可编程门阵列(Field- Programmable GateArray,FPGA)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。
对于软件实现,可通过执行本申请所述功能的模块(例如过程、函数等) 来实现本申请所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。
可选地,作为另一个实施例,处理器503还配置为在运行所述计算机程序时,执行前述实施例中任一项所述的方法的步骤。
基于上述数据存储装置40的组成以及硬件结构示例,参见图11,其示出了本申请实施例提供的一种分布式存储系统60的组成结构示意图。如图11所示,该分布式存储系统60至少包括前述实施例中任一项所述的数据存储装置 40,通过语义封装和解析能够实现存储事务的无损执行,实现了前端存储对象到后端存储对象无损转化,避免了其中的语义损失与性能损失;能够实现单体对象存储设备跨越多个大容量设备和高速缓存设备,减少了集群中对象存储设备数量,提高了集群稳定性;避免了存储过程中的写放大,提高了存储效率;通过多个数据执行模块对不同种类数据进行分别存储,利用内存缓存与高速设备缓存提供了更好的元数据性能存储性能。
以上所述,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
需要说明的是,在本申请中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。
本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的产品实施例。
本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (13)
1.一种数据存储方法,其特征在于,应用于分布式存储系统,所述方法包括:
基于预设模型对待处理数据进行语义封装,得到语义封装信息;
对所述语义封装信息进行解析,得到多个数据类操作信息;
将所述多个数据类操作信息对应分发给多个数据执行模块;
控制所述多个数据执行模块对应执行所述多个数据类操作信息,以存储所述待处理数据。
2.根据权利要求1所述的数据存储方法,其特征在于,在所述基于预设模型对待处理数据进行语义封装,得到语义封装信息之后,所述方法还包括:
对所述语义封装信息进行解析,得到事务类操作信息;其中,事务类操作用于保证所述多个数据类操作的原子性;
将所述事务类操作信息分发给事务执行模块;
控制所述事务执行模块执行所述事务类操作信息,以保证所述多个数据类操作的原子性。
3.根据权利要求2所述的数据存储方法,其特征在于,所述对所述语义封装信息进行解析,得到多个数据类操作信息,包括:
对所述语义封装信息进行解析,得到第一数据对应的第一数据类操作信息、第二数据对应的第二数据类操作信息、第三数据对应的第三数据类操作信息和第四数据对应的第四数据类操作信息;其中,所述第一数据用于指示对象的待存储数据,所述第二数据用于指示对象的索引数据和集合数据,所述第三数据用于指示对象的元数据,所述第四数据用于指示对象的扩展元数据;
相应地,所述将所述多个数据类操作信息对应分发给多个数据执行模块,包括:
将第一数据类操作信息分发给第一数据执行模块;其中,第一数据执行模块用于执行第一数据的存储;
将第二数据类操作信息分发给第二数据执行模块;其中,第二数据执行模块用于执行第二数据的存储;
将第三数据类操作信息和第四数据类操作信息分发给第三数据执行模块;其中,第三数据执行模块用于将所述第三数据和所述第四数据与所述第一数据进行关联索引与处理。
4.根据权利要求3所述的数据存储方法,其特征在于,所述控制所述多个数据执行模块对应执行所述多个数据类操作信息,包括:
控制第一数据执行模块将所述第一数据存储到预设存储层,以执行所述第一数据类操作信息;
控制第二数据执行模块存储所述第二数据,以执行所述第二数据类操作信息;
控制第三数据执行模块处理所述第三数据和所述第四数据,以及控制第一数据执行模块将处理后的所述第三数据和所述第四数据存储到预设存储层,以执行所述第三数据类操作信息和所述第四数据类操作信息。
5.根据权利要求4所述的数据存储方法,其特征在于,在所述控制第二数据执行模块存储所述对象的索引数据和集合数据类之后,所述方法还包括:
控制所述第二数据执行模块对所述第二数据添加缓存标识;
当满足预设条件时,基于所述缓存标识,控制所述第二数据执行模块将所述第二数据存储到预设缓存空间。
6.根据权利要求3所述的数据存储方法,其特征在于,所述多个数据执行模块还包括高速模块;所述将所述多个数据类操作信息对应分发给多个数据执行模块,包括:
将所述第一数据类操作信息分发给高速模块;其中,所述高速模块用于快速执行所述第一数据类操作信息;
相应地,所述控制所述多个数据执行模块对应执行所述多个数据类操作信息,包括:
控制所述高速模块将第一数据存储于高速设备中,以完成对所述第一数据类操作信息的执行。
7.根据权利要求1所述的数据存储方法,其特征在于,在所述基于预设模型对待处理数据进行语义封装,得到语义封装信息之后,所述方法还包括:
确定所述语义封装信息对应的任务种类;
基于所确定的任务种类将所述语义封装信息插入对应的任务队列;其中,所述任务队列包括同步队列、开放队列和停顿队列。
8.根据权利要求7所述的数据存储方法,其特征在于,在所述基于所确定的任务种类将所述语义封装信息插入对应的任务队列之后,所述方法还包括:
在所述同步队列中,判断是否存在待合并处理的多个语义封装信息;
当存在待合并处理的多个语义封装信息时,对所述多个语义封装信息进行合并处理。
9.根据权利要求1-8任一项所述的数据存储方法,其特征在于,所述预设模型至少包括动态文件系统ZFS管理模型。
10.一种数据存储装置,其特征在于,应用于分布式存储系统,所述数据存储装置包括封装单元、解析单元、分发单元和执行单元;其中,
所述封装单元,配置为基于预设模型对待处理数据进行语义封装,得到语义封装信息;
所述解析单元,配置为对所述语义封装信息进行解析,得到多个数据类操作信息;
所述分发单元,配置为将所述多个数据类操作信息对应分发给多个数据执行模块;
所述执行单元,配置为控制所述多个数据执行模块对应执行所述多个数据类操作信息,以存储所述待处理数据。
11.一种数据存储装置,其特征在于,所述数据存储装置包括:存储器和处理器;其中,
所述存储器,用于存储能够在所述处理器上运行的计算机程序;
所述处理器,用于在运行所述计算机程序时,执行如权利要求1至9任一项所述方法的步骤。
12.一种计算机存储介质,其特征在于,所述计算机存储介质储存有数据存储程序,所述数据存储程序被至少一个处理器执行时实现如权利要求1至9任一项所述方法的步骤。
13.一种分布式存储系统,其特征在于,所述分布式存储系统至少包括如权利要求10或权利要求11所述的一种数据存储装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010542353.XA CN113806314B (zh) | 2020-06-15 | 2020-06-15 | 一种数据存储方法、装置、计算机存储介质及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010542353.XA CN113806314B (zh) | 2020-06-15 | 2020-06-15 | 一种数据存储方法、装置、计算机存储介质及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113806314A true CN113806314A (zh) | 2021-12-17 |
CN113806314B CN113806314B (zh) | 2024-01-26 |
Family
ID=78892344
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010542353.XA Active CN113806314B (zh) | 2020-06-15 | 2020-06-15 | 一种数据存储方法、装置、计算机存储介质及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113806314B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070156763A1 (en) * | 2005-12-30 | 2007-07-05 | Jian-Hong Liu | Storage management system and method thereof |
US20140115244A1 (en) * | 2012-10-18 | 2014-04-24 | Oracle International Corporation | Apparatus, system and method for providing a persistent level-two cache |
KR20150003689A (ko) * | 2014-08-28 | 2015-01-09 | 성균관대학교산학협력단 | 메모리 저장 장치, 데이터베이스를 위한 트랜잭션 기능을 지원하는 방법 및 메모리 시스템 |
KR101731606B1 (ko) * | 2016-01-12 | 2017-04-28 | (주) 글루시스 | 디지털 포렌식 기술을 이용한 cow 기반 파일 시스템의 데이터 복구 방법 |
US20180203870A1 (en) * | 2017-01-18 | 2018-07-19 | Tegile Systems, Inc. | Persistent File Handle Object Container Memory Expiry |
CN108491290A (zh) * | 2018-03-28 | 2018-09-04 | 新华三技术有限公司 | 一种数据写入方法及装置 |
CN110100229A (zh) * | 2017-01-06 | 2019-08-06 | 甲骨文国际公司 | 利用文件系统层次结构和语义的低延时直接云访问 |
-
2020
- 2020-06-15 CN CN202010542353.XA patent/CN113806314B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070156763A1 (en) * | 2005-12-30 | 2007-07-05 | Jian-Hong Liu | Storage management system and method thereof |
US20140115244A1 (en) * | 2012-10-18 | 2014-04-24 | Oracle International Corporation | Apparatus, system and method for providing a persistent level-two cache |
KR20150003689A (ko) * | 2014-08-28 | 2015-01-09 | 성균관대학교산학협력단 | 메모리 저장 장치, 데이터베이스를 위한 트랜잭션 기능을 지원하는 방법 및 메모리 시스템 |
KR101731606B1 (ko) * | 2016-01-12 | 2017-04-28 | (주) 글루시스 | 디지털 포렌식 기술을 이용한 cow 기반 파일 시스템의 데이터 복구 방법 |
CN110100229A (zh) * | 2017-01-06 | 2019-08-06 | 甲骨文国际公司 | 利用文件系统层次结构和语义的低延时直接云访问 |
CN110192176A (zh) * | 2017-01-06 | 2019-08-30 | 甲骨文国际公司 | 云对象存储库中受保证的文件系统层次结构数据完整性 |
US20180203870A1 (en) * | 2017-01-18 | 2018-07-19 | Tegile Systems, Inc. | Persistent File Handle Object Container Memory Expiry |
CN108491290A (zh) * | 2018-03-28 | 2018-09-04 | 新华三技术有限公司 | 一种数据写入方法及装置 |
Non-Patent Citations (4)
Title |
---|
O. RODEH; A. TEPERMAN等: "zFS - a scalable distributed file system using object disks", 20TH IEEE/11TH NASA GODDARD CONFERENCE ON MASS STORAGE SYSTEMS AND TECHNOLOGIES, 2003. (MSST 2003). PROCEEDINGS * |
张敏: "基于对象存储文件系统研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, pages 137 - 30 * |
罗莎;鄂海红;宋美娜;黎燕;: "对象存储研究综述", 新型工业化, no. 11 * |
胡永奎;杜祝平;方圆;: "基于对象的文件系统I/O分析与评测", 计算机应用与软件, no. 03 * |
Also Published As
Publication number | Publication date |
---|---|
CN113806314B (zh) | 2024-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7228399B2 (en) | Control method for storage device controller system, and storage device controller system | |
US8086603B2 (en) | Using LUN type for storage allocation | |
US9182912B2 (en) | Method to allow storage cache acceleration when the slow tier is on independent controller | |
US9424314B2 (en) | Method and apparatus for joining read requests | |
US20170031631A1 (en) | Storage device and method of operating the same | |
EP2979187B1 (en) | Data flush of group table | |
CN105408875B (zh) | 在存储器接口上的分布式过程执行和文件系统 | |
KR102263357B1 (ko) | 분산 파일시스템 환경에서 사용자 수준 dma i/o를 지원하는 시스템 및 그 방법 | |
US9389787B2 (en) | System and method for simulating a persistent byte addressable storage device on a persistent block addressable storage device | |
CN109375568A (zh) | 一种多源数据实时采集装置 | |
EP4369171A1 (en) | Method and apparatus for processing access request, and storage device and storage medium | |
WO2015156000A1 (ja) | 計算機システム、データの検査方法及び計算機 | |
CN113703672A (zh) | 一种超融合系统及其io请求下发方法、物理服务器 | |
KR102471966B1 (ko) | 스토리지 노드 기반의 키-값 스토어를 이용하는 데이터 입출력 방법 | |
CN115344200A (zh) | 一种基于NVMe接口的存储系统 | |
CN111176566B (zh) | 一种支持queue命令的eMMC读写控制方法及存储介质 | |
CN113806314B (zh) | 一种数据存储方法、装置、计算机存储介质及系统 | |
US9069821B2 (en) | Method of processing files in storage system and data server using the method | |
US20190182137A1 (en) | Dynamic data movement between cloud and on-premise storages | |
US20240168876A1 (en) | Solving submission queue entry overflow using metadata or data pointers | |
US20220342605A1 (en) | System and Method for Improving SCSI Scale Support by Implementing Kernel-Endpoints Instead of Per Volume Interface | |
US11748369B2 (en) | Separation of logical and physical storage in a distributed database system | |
US20240152476A1 (en) | Data access method and related device | |
WO2011072611A1 (zh) | 一种服务器及其访问卷的方法 | |
KR102254501B1 (ko) | 부분 순서 보장 기반의 입출력 스케줄러 및 그 방법 |
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 |