CN117076413B - 一种支持多协议互通的对象多版本存储系统 - Google Patents
一种支持多协议互通的对象多版本存储系统 Download PDFInfo
- Publication number
- CN117076413B CN117076413B CN202311332973.0A CN202311332973A CN117076413B CN 117076413 B CN117076413 B CN 117076413B CN 202311332973 A CN202311332973 A CN 202311332973A CN 117076413 B CN117076413 B CN 117076413B
- Authority
- CN
- China
- Prior art keywords
- version
- block
- protocol
- data
- storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004891 communication Methods 0.000 claims description 6
- 238000012217 deletion Methods 0.000 claims description 5
- 230000037430 deletion Effects 0.000 claims description 5
- 239000012634 fragment Substances 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 3
- 238000013500 data storage Methods 0.000 abstract description 2
- 241000760358 Enodes Species 0.000 description 22
- 239000008186 active pharmaceutical agent Substances 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000000034 method Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 241001475178 Dira Species 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- LXMSZDCAJNLERA-ZHYRCANASA-N spironolactone Chemical compound C([C@@H]1[C@]2(C)CC[C@@H]3[C@@]4(C)CCC(=O)C=C4C[C@H]([C@@H]13)SC(=O)C)C[C@@]21CCC(=O)O1 LXMSZDCAJNLERA-ZHYRCANASA-N 0.000 description 2
- 241001362551 Samba Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
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/18—File system types
- G06F16/1873—Versioning file systems, temporal file systems, e.g. file system supporting different historic versions 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to 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/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- 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
- G06F16/1824—Distributed file systems implemented using Network-attached Storage [NAS] architecture
- G06F16/183—Provision of network file services by network file servers, e.g. by using NFS, CIFS
-
- 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/188—Virtual file systems
- G06F16/192—Implementing virtual folder structures
-
- 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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/23—Updating
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
本发明提供了一种支持多协议互通的对象多版本存储系统,属于数据存储技术领域,本发明中对象的数据结构分为高层元数据、底层元数据,和对象内容三部分。高层元数据保存对象的多版本信息,并以Key‑Value对的形式保存在分布式KV数据库中;底层元数据以数据块的形式保存在块存储上,并以写时拷贝的方式更新。对象内容以数据块的形式保存在块存储上,并以日志结构方式更新。在上述对象元数据基础上,本发明把对象存储S3协议中的多版本功能特性和NFS/SMB中的文件快照特性关联起来以实现对象多版本功能,在此基础上,进一步实现了支持协议互通的对象存储的整体系统架构。
Description
技术领域
本发明属于数据存储技术领域,具体涉及一种支持多协议互通的对象多版本存储系统。
背景技术
对象存储是一种专门用于存储大规模非结构化数据的存储方式,并随着云计算、大数据等技术的发展,日益受到人们的关注。在不同的场景中,上层应用通常需要使用不同的存储访问协议来访问对象存储,如S3、NFS、SMB等,并且希望用不同的访问协议来访问同一份数据。把这种多种存储协议同时访问同一份数据的数据访问方式,称为多协议互通。对象存储系统中,如何支持多协议互通是一个技术难点。
现有的多数对象存储产品通常只支持和S3相兼容的RESTful API访问方式;或者在不同的存储池上支持不同的协议。这些对象存储通常无法支持多种存储协议同时访问同一份数据。这将导致上层应用在使用过程中需要在不同的存储协议之间进行数据转换,增加了系统的复杂度和开发成本。
而在支持多协议互通的对象存储系统中,一般只实现了各个协议中最基本的功能特性,比如创建对象,删除对象,读写对象内容等;而各协议中的多种其他功能特性都受到限制,受限的功能特性或者不被系统支持,或者无法支持协议间互通。在这些受限的功能特性中,多版本是最重要的功能特性之一。多版本功能特性允许用户用相同的对象键值(key)存储对象的多个版本,每个版本有唯一的标识符和时间戳,并且可以按需检索和访问。多版本功能可以帮助用户记录历史数据、保留重要文件的历史版本、轻松恢复误删除的文件等。
在现有的少数支持协议互通的对象存储产品和技术中,往往无法支持多版本功能特性。
发明内容
为了解决在现有的少数支持协议互通的对象存储产品和技术中,无法支持多版本功能特性的问题,本发明提供了一种支持多协议互通的对象多版本存储系统。
为了实现上述目的,本发明提供如下技术方案:
一种支持多协议互通的对象多版本存储系统,包括多个网关节点(101)和多个服务节点,多个网关节点和多个服务节点通过计算机网络设备相互连接和通信;
每个所述网关节点均包括:
S3协议网关,用于提供基于S3 API访问存储系统的服务端点,外部应用能够通过访问S3协议网关上传、下载、删除文件,以及查询系统中文件的信息;
NFS协议网关和SMB协议网关,均与FUSE内核模块连接,用于对外部应用提供虚拟的文件夹,并把虚拟的文件夹映射到Linux操作系统的本地文件夹上;然后通过Linux的FUSE驱动机制,把所述文件夹上接收到的系统调用适配到客户端上;
每个服务节点均包括:
分布式元数据服务端,与所述S3协议网关和FUSE驱动通信连接,用于以Key-Value对的形式保存对象的高层元数据;
对象内容服务端,与所述S3协议网关和FUSE驱动通信连接,用于以RPC远程调用接口的方式对外提供对象的底层元数据和对象内容;
块存储,与对象内容服务端通信连接,用于保存对象内容服务端中的底层元数据和对象内容。
优选地,所述高层元数据保存对象的多版本信息,并以Key-Value对的形式保存在分布式KV数据库中;所述底层元数据以数据块的形式保存在块存储上,并以写时拷贝的方式更新,所述对象内容以数据块的形式保存在块存储上,并以日志结构方式更新。
优选地,所述客户端是嵌入到协议网关或FUSE驱动程序中的程序库,为上层程序逻辑提供能够访问的API接口。
优选地,所述客户端通过RPC远程调用的方法访问服务节点中的分布式元数据服务端来访问对象的高层元数据,并调用对象内容服务端来访问对象的底层元数据以及对象内容的数据块。
优选地,所述客户端对外部提供的API接口分为目录操作和对象操作两大类,目录操作包括创建目录、删除目录、列出目录中内容及目录改名;对象操作包括创建对象、删除对象、打开对象、提交对象、读对象内容及写对象内容。
优选地,所述块存储中的一个存储单位称为一个存储池,所述存储池的物理存储结构为:
存储池物理上划分为多个存储池分片,每个存储池分片由一个iNode卷、若干个Map卷和若干个数据卷构成;存储池分片的各个卷存储在块存储上,存储池分片记录了对象的底层元数据,所述底层元数据包括一个iNode块和若干个Map块,以及若干个数据块。
优选地,在所述NFS协议网关和SMB协议网关的文件存储协议NFS/SMB下,多版本的语义如下:
写入对象时,首先写入到内存中,当上次应用对某个对象调用commit时,客户端把刚才所有写入到内存中的数据持久化到卷上,并生成一个新版本,成为当前版本isLatest=Y,而把原来的当前版本号记录为本版本记录的parent_ver字段;
读取对象时,缺省情况下,如果缓存命中,则读取缓存中的数据;否则读取当前版本中的数据;
读取对象时,如在每个对象的绝对路径后面加上一个/.versions后缀,则能够获取全部版本列表,同时挑选隐藏目录下的某个特定版本访问;
删除对象时,缺省情况下,增加一个新版本,置位删除标记为isLatest=Y,且没有文件内容;
删除对象时,能够删除.versions中特定版本的对象或删除所有版本。
优选地,在对象内容的并发控制语义上,所述客户端首先对对象的绝对路径用一致性哈希计算哈希值;然后根据哈希值把对对象内容的访问操作以RCP远程调用的形式发送到特定的对象内容服务端上;在对象内容服务端上,为每一个特定对象维护一个IO队列,在IO队列中按顺序对所有对象内容进行读写操作。
优选地,所述对象内容服务端在收到对象的commit调用时进行以下操作:
复制一个新的iNode块,作为该对象的一个新版本,新iNode块中的Map地址全部指向原文件版本的Map块;
对内存缓存中的每一个脏数据块,在数据卷中分配一个新的数据块空间,写入脏数据;
按脏数据块所对应的文件逻辑地址,在内存中生成相应的Map块脏块,把所有的脏数据块处理完毕之后,则形成了一个Map块脏块集合;
考虑所述Map块脏块集合,在Map卷中为每一个Map块脏块分配新的Map块空间,并写入脏Map块,之后把新的Map块地址更新到新iNode块中,当所有的Map块脏块写入完毕,则新的iNode块更新完成。
优选地,所述分布式元数据服务端采用分布式KV数据库,所述客户端能够对分布式KV数据库中KV对的读、写、删除以及以range-query的方式批量查询Key列表,并且分布式KV数据库提供两阶段提交2PC的分布式事务的方式,以原子性的方式在一个事务中处理多个KV对;所述客户端从分布式KV数据库的对象版本数据中查询到对象版本的iNodeID之后,在自身缓存中维护已打开对象版本的iNode ID,然后以该iNode ID为索引,到对象内容服务端上去访问对象内容。
本发明提供的支持多协议互通的对象多版本存储系统具有以下有益效果:
本发明中对象的数据结构分为高层元数据、底层元数据和对象内容三部分,对象内容以数据块(block)的形式保存在块存储上,并以日志结构(log-structured)方式更新。在上述对象元数据基础上,本发明把对象存储S3协议中的多版本功能特性和NFS/SMB中的文件快照特性关联起来以实现对象多版本功能,在此基础上,进一步实现了支持协议互通的对象存储的整体系统架构,能够支持对象的多版本存储。
附图说明
为了更清楚地说明本发明实施例及其设计方案,下面将对本实施例所需的附图作简单地介绍。下面描述中的附图仅仅是本发明的部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1的支持多协议互通的对象多版本存储系统的总体框架图;
图2是为客户端到服务节点的访问方式;
图3为对象数据结构的示意图;
图4为存储池的物理存储结构;
图5为对象的完整存储结构;
图6为基于写时拷贝方式的对象写入机制。
具体实施方式
为了使本领域技术人员更好的理解本发明的技术方案并能予以实施,下面结合附图和具体实施例对本发明进行详细说明。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
实施例1
本发明提供了一种支持多协议互通的对象多版本存储系统,具体提供了一种对象存储中的对象多版本数据结构以及相应的持久化存储系统。本发明中,对象的数据结构分为高层元数据、底层元数据和对象内容三部分。高层元数据保存对象的多版本信息,并以Key-Value对的形式保存在分布式KV数据库中;底层元数据以数据块(block)的形式保存在块存储上,并以写时拷贝(Copy-on-write)的方式更新。对象内容以数据块(block)的形式保存在块存储上,并以日志结构(log-structured)方式更新。在上述对象元数据基础上,本发明把对象存储S3协议中的多版本功能特性和NFS/SMB中的文件快照特性关联起来以实现对象多版本功能,在此基础上,进一步实现了支持协议互通的对象存储的整体系统架构。
具体如图1所示,本发明提供的对象存储是一种分布式存储,由多个网关节点101和多个服务节点102构成,网关节点101和服务节点102都是由包括CPU、内存、主板、磁盘和网络接口构成的计算机,运行Linux操作系统。多个网关节点101和多个服务节点102通过计算机网络设备(交换机、路由器等)相互连接和通信。
具体地,网关节点101中包含各种存储协议网关,例如S3协议网关、NFS协议网关和SMB协议网关。这些协议访问网关按其相应的存储协议标准来提供存储服务端点。
S3协议网关提供基于S3 API访问存储系统的服务端点,外部应用可以通过访问S3协议网关上传、下载、删除文件,以及查询系统中文件的信息。S3协议网关本身负责接收请求,对请求进行鉴权、参数校验等工作,然后通过客户端103来访问本发明中的服务节点102,对分布式文件系统内部的数据进行访问或更新。
NFS协议网关和SMB协议网关一般由Linux上的nfs和samba服务来提供。这两种协议网关对外部应用提供虚拟的文件夹,并把虚拟的文件夹映射到Linux操作系统的本地文件夹上。然后,通过Linux的FUSE(file system in user space)机制,把上述本地文件夹上接收到的系统调用适配到客户端103上。
服务节点102为客户端103提供元数据及数据服务,由分布式元数据服务端104、对象内容服务端105和块存储106构成。
分布式元数据服务端104以Key-Value对的形式保存对象的高层元数据。优选地,分布式元数据服务端104采用高性能分布式KV数据库,如TIKV,Cassandra等,这些高性能分布式KV数据库一般具有基于Key-Value对的分布式事务能力,基于特定的并发控制模型(如MVCC)保证在分布式事务中读写多个Key-Value对时的原子性、隔离性、持久性,从而能够保证系统元数据的数据一致性。
对象内容服务端105以RPC远程调用接口的方式对外提供对象的底层元数据和对象内容。对象的底层元数据以iNode为单位,iNode是一个对象的特定版本的对象内容的描述信息(元数据)。iNode中也包含了对象内容的所有数据块的地址信息。通过iNode可以寻址到组成文件内容的数据块,读写或更新这些数据块。
对象内容服务端105中的底层元数据和对象内容最终持久化保存到块存储106上。块存储106一般以“卷”为单位,提供数据块的存储服务。可选的块存储106包括分布式块存储产品,如Ceph,或集中式存储产品,如华为OceanStor等。
图2是客户端到服务节点的访问方式。客户端103是嵌入到协议网关或FUSE驱动程序中的程序库,为上层程序逻辑提供可访问的API接口,可选地,如C++语言的类库,或golang语言的package。客户端103通过RPC远程调用的方法访问服务节点102中的分布式元数据服务端104,即分布式KV数据库服务端来访问对象的高层元数据,并调用对象内容服务端105来访问对象的底层元数据以及对象内容的数据块。对象内容服务端105把数据持久化到块存储106上。
客户端103对外部提供的API接口可以分为目录操作和对象操作两大类,目录操作包括创建目录、删除目录、列出目录中内容(包括子目录和对象)、目录改名(rename)等;对象操作包括创建对象、删除对象、打开对象、提交对象、读对象内容、写对象内容等。
客户端103可以对分布式KV数据库中KV对的读、写、删除以及以range-query的方式批量查询Key列表,并且分布式KV数据库一般提供两阶段提交(2PC)的分布式事务的方式,以原子性的方式在一个事务中处理多个KV对,并保证对象系统目录信息的数据一致性。因此,客户103通过上述操作,既可以完成所有的目录操作,也可以完成对对象元数据和对象版本数据的维护。
客户端103从分布式KV数据库的对象版本数据中查询到对象版本的iNodeID之后,在自身缓存中维护已打开对象版本的iNode ID,然后可以以这个iNode ID为索引,到对象内容服务端105上去访问对象内容。
本发明把提供多协议互通的一个存储单位称为一个存储池,存储池逻辑上划分多个桶(bucket),对象从属于一个桶。图3是对象数据结构的示意图,当存储一张身份证图片时,一个对象(Object)包含数据内容(图片内容的二进制编码数据)、元数据(如文件名、文件类型、所有者、创建时间等)以及唯一的标识符(Object ID)。
传统的文件系统访问方式中,用文件的绝对路径作为索引,来寻址一个目录或对象,比如/dir_a/dir_b/file.ext,整个目录结构构成一颗树状结构。而在对象存储中,用桶和桶内的扁平的Key-Value对的形式保存对象。为了实现多协议互通,需要整合这两种访问方式。
在对象存储传统的S3访问协议中,以bucket、和bucket内的Key,作为对象的逻辑地址。本发明把bucket和bucket内的key用斜杠分隔符串接起来,作为在文件访问协议下的目录或对象绝对路径。例如,某个存储池中,bucket A中的对象dir_a/dir_b/object.txt,在NFS/SMB协议的访问路径为/bucket_A/dir_a/dir_b/object.txt。
本发明中,目录元数据和对象元数据以Key-Value对的形式保存在分布式KV数据库中,并直接用上述目录或对象的访问路径(加上特定前缀)作为Key,而其元数据内容就是Value。比如,对于桶A中的目录项/dir_a/dir_b,对象存储直接以/some_prefix/buck_A_ID/dir_a/dir_b作为Key在分布式KV数据库中保存此目录项。
对于目录项,其全部元数据都保存在分布式KV数据库中;而对于对象,它的对象元数据和版本信息保存在分布式KV数据库中,而每个版本对应的对象内容,以iNode ID为索引,以块的形式保存在分布式块存储106的特定卷上。在分布式KV数据库中保存对象版本号和iNode ID的映射关系;而通过iNode ID可以在卷上访问特定版本的内容。
表1 对象的版本元数据
表1中对象的版本元数据由独立的Key来保存,例如,对于对象/buckA/dirA/idcard.png,其版本元数据的Key是/buckA/dirA/idcrd.png/versions。版本元数据的Value是一张版本列表。表中的每一行记录表示一个版本。其中:
版本号version,是一个从0开始的自增字段。
父版本号parent_ver,是本版本所依赖的上一个版本。
iNode ID,指的是本版本的对象内容的索引号。
isDeleteMarker,指的是删除操作,如果当前版本被删除,则在此记录一个删除标记,而没有文件内容。
isLatest,指的是是否当前版本,各协议在读写对象时,如未指定特定版本号,则使用当前版本。
timestamp,指的是版本创建的时间戳。
在对象存储S3协议中,是以只读存储WORM形式保存数据的。S3协议中的多版本语义下:
写入对象时,如更新的是已经存在的对象,则形成一个新版本(version),成为当前版本(isLatest=Y),而把原来的当前版本号记录为本版本记录的parent_ver字段。
读取对象时,缺省情况下,会读取当前版本。
读取对象时,可获取全部版本列表,并读取特定版本(指定版本号)。
删除对象时,缺省情况下,是在增加一个新版本,置位删除标记为(isLatest=Y),且没有文件内容。
删除对象时,可通过API的参数配置来选择删除对象整体,或删除特定版本。后面这些选项就不是加删除标记了,而是把全部版本或特定版本的对象内容物理删除。
在文件存储协议(NFS/SMB)下,多版本的语义如下:
写入对象(文件)时,首先写入到内存中,本发明客户端103提供了一个commit系统调用,当上次应用对某个对象调用commit时,客户端103把刚才所有写入到内存中的数据持久化到卷上,并生成一个新版本,成为当前版本(isLatest=Y),而把原来的当前版本号记录为本版本记录的parent_ver字段。
读取对象时,缺省情况下,如果缓存命中,则读取缓存中的数据;否则读取当前版本中的数据。
读取对象时,如在每个对象的绝对路径后面加上一个/.versions后缀(可以看做是一个特特殊的隐藏目录),则可以获取全部版本列表。可以挑选此隐藏目录下的某个特定版本访问。
删除对象时,缺省情况下,是在增加一个新版本,置位删除标记为(isLatest=Y),且没有文件内容。
删除对象时,可以删除.versions中特定版本的对象,也可以删除所有版本。
在对象内容的并发控制语义上,客户端103首先对对象的绝对路径用一致性哈希计算哈希值,然后根据哈希值,把对对象内容的访问操作以RCP远程调用的形式发送到特定的对象内容服务端105上。在对象内容服务端105上,为每一个特定对象维护一个IO队列,所有对对象内容的读写操作在IO队列中排序,按顺序进行。
另外,在NFS/SMB的写入对象语义上,当一个客户端103发出写入请求后,而没有commit之前,它会独占该对象的句柄(handle),直到commit后释放句柄。其他客户端103在未获得对象句柄之前,写入请求将被阻塞。
图4描述存储池的物理存储结构。存储池物理上划分为多个分片,分片由一个iNode卷,若干个Map卷和若干个数据卷构成。存储池分片的各个卷存储在分布式块存储106上。存储池分片记录了对象的底层元数据(一个iNode块+若干个Map块),以及对象内容(若干个数据块)。
iNode卷由bitmap块和iNode块构成。bitmap块为4KB大小,固定有16K个块,总长度128MB。iNode块区最多有1G个块,块长度是512B,因此卷的总长度512GB+128MB。iNode块区的iNode块号从0开始编起,每个块表示一个iNode。这个块号也是iNode的唯一ID。逻辑上,Inode块所在的区域最多有1G个inode逻辑块。每个inode块大小为512B,记录1条iNode。因此存储池的一个分片里最多可寻址1G条iNode记录,也就是10亿多个文件。对客户端而言,一条inode记录的逻辑编号是:逻辑池分片号+iNode块号。
优选地,在很多分布式块存储的实现中,卷是按需展开的。因此,虽然iNode卷的总长度是固定的,但是它并不一定实际占用这么多存储空间,而是按需逐步分配实际空间。
iNode块内包含了对象删除标记、创建时间、最新更新时间、对象长度,以及构成对象内容的所有Map块的逻辑地址信息(Map卷编号+Map块号)。
Map卷由bitmap块和Map块区构成,所有的块都是4KB大小。bitmap固定有16K个块,总长度128MB。Map块区也是从0开始编号,最多有1G个Map块。一个Map块用Map卷编号+Map块区编号来寻址。
Map块由若干条等长的Map记录构成,每条Map记录记载了一个数据块的地址(数据块编号+数据块号)。
可选地,对于大文件,Map块分级,比如一级Map块中的每条Map记录记载了一个二级Map块的地址,二级Map块的每条Map记录记载了一个三级Map块的地址,三级Map块的每条Map记录记载数据块地址。一般情况下,分成三级Map块结构,就可以寻址TB级单体文件的所有数据块,在绝大多数场景下已经够用了。
数据卷由bitmap块和数据块区构成,所有的块都是4KB大小。bitmap固定有16K个块,总长度128MB。数据块区也是从0开始编号,最多有1G个数据块。一个数据块用数据卷编号+数据块区编号来寻址。
总结上述描述,图5展示了对象的完整存储结构。对象的高层元数据以Key-Value对的形式保存,并在对象的版本信息表中记录了每一个版本所对应的iNode ID。用这个iNode ID可以在存储池分片上的iNode卷中寻址iNode块。iNode块中通过最多三层Map块的映射结构。
图6展示了对象更新时,增加对象版本的过程。如前所述,客户端103写入或更新对象数据时,对象内容服务端105首先在内存中缓存数据,直到客户端103调用了commit接口时,对象内容服务端105将内存缓存中的数据刷到分布式存储卷上。
对象内容服务端105在收到对象的commit调用时,首先复制一个新的iNode块,作为该对象的一个新版本。这样,新iNode块中的Map地址全部指向原文件版本的Map块。
然后,对内存缓存中的每一个脏数据块,在数据卷中分配一个新的数据块空间,写入脏数据。随后按脏数据块所对应的文件逻辑地址,在内存中生成相应的Map块脏块。把所有的脏数据块处理完毕之后,则形成了一个Map块脏块集合。
下一步,考虑将刚刚生成的Map块脏块集合落盘。在Map卷中,为每一个Map块脏块分配新的Map块空间,写入脏Map块,之后把新的Map块地址更新到新iNode块中。当所有的Map块脏块写入完毕,则新的iNode块也更新完成。
此时,如图6所示,新的iNode块中,实际上只增加了空间来保存更新过的Map块和数据块,而未更新过的Map块和数据块不变。
以上所述实施例仅为本发明较佳的具体实施方式,本发明的保护范围不限于此,任何熟悉本领域的技术人员在本发明披露的技术范围内,可显而易见地得到的技术方案的简单变化或等效替换,均属于本发明的保护范围。
Claims (10)
1.一种支持多协议互通的对象多版本存储系统,其特征在于,包括多个网关节点(101)和多个服务节点(102),多个网关节点(101)和多个服务节点(102)通过计算机网络设备相互连接和通信;
每个所述网关节点(101)均包括:
S3协议网关,用于提供基于S3 API访问存储系统的服务端点,外部应用能够通过访问S3协议网关上传、下载、删除文件,以及查询系统中文件的信息;
NFS协议网关和SMB协议网关,均与FUSE内核模块连接,用于对外部应用提供虚拟的文件夹,并把虚拟的文件夹映射到Linux操作系统的本地文件夹上;然后通过Linux的FUSE驱动机制,把所述本地文件夹上接收到的系统调用适配到客户端(103)上;
每个服务节点(102)均包括:
分布式元数据服务端(104),与所述S3协议网关和FUSE驱动通信连接,用于以Key-Value对的形式保存对象的高层元数据;
对象内容服务端(105),与所述S3协议网关和FUSE驱动通信连接,用于以RPC远程调用接口的方式对外提供对象的底层元数据和对象内容;
块存储(106),与对象内容服务端(105)通信连接,用于保存对象内容服务端(105)中的底层元数据和对象内容。
2.根据权利要求1所述的支持多协议互通的对象多版本存储系统,其特征在于,所述高层元数据保存对象的多版本信息,并以Key-Value对的形式保存在分布式KV数据库中;所述底层元数据以数据块的形式保存在块存储(106)上,并以写时拷贝的方式更新,所述对象内容以数据块的形式保存在块存储(106)上,并以日志结构方式更新。
3.根据权利要求1所述的支持多协议互通的对象多版本存储系统,其特征在于,所述客户端(103)是嵌入到协议网关或FUSE驱动程序中的程序库,为上层程序逻辑提供能够访问的API接口。
4.根据权利要求3所述的支持多协议互通的对象多版本存储系统,其特征在于,所述客户端(103)通过RPC远程调用的方法访问服务节点(102)中的分布式元数据服务端(104)来访问对象的高层元数据,并调用对象内容服务端(105)来访问对象的底层元数据以及对象内容的数据块。
5.根据权利要求4所述的支持多协议互通的对象多版本存储系统,其特征在于,所述客户端(103)对外部提供的API接口分为目录操作和对象操作两大类,目录操作包括创建目录、删除目录、列出目录中内容及目录改名;对象操作包括创建对象、删除对象、打开对象、提交对象、读对象内容及写对象内容。
6.根据权利要求1所述的支持多协议互通的对象多版本存储系统,其特征在于,所述块存储(106)中的一个存储单位称为一个存储池,所述存储池的物理存储结构为:
存储池物理上划分为多个存储池分片,每个存储池分片由一个iNode卷、若干个Map卷和若干个数据卷构成;存储池分片的各个卷存储在块存储(106)上,存储池分片记录了对象的底层元数据,所述底层元数据包括一个iNode块和若干个Map块,以及若干个数据块。
7.根据权利要求6所述的支持多协议互通的对象多版本存储系统,其特征在于,在所述NFS协议网关和SMB协议网关的文件存储协议NFS/SMB下,多版本的语义如下:
写入对象时,首先写入到内存中,当上次应用对某个对象调用commit时,客户端(103)把刚才所有写入到内存中的数据持久化到卷上,并生成一个新版本,成为当前版本isLatest=Y,而把原来的当前版本号记录为本版本记录的parent_ver字段;
读取对象时,缺省情况下,如果缓存命中,则读取缓存中的数据;否则读取当前版本中的数据;
读取对象时,如在每个对象的绝对路径后面加上一个/.versions后缀,则能够获取全部版本列表,同时挑选隐藏目录下的某个特定版本访问;
删除对象时,缺省情况下,增加一个新版本,置位删除标记为isLatest=Y,且没有文件内容;
删除对象时,能够删除.versions中特定版本的对象或删除所有版本。
8.根据权利要求7所述的支持多协议互通的对象多版本存储系统,其特征在于,在对象内容的并发控制语义上,所述客户端(103)首先对对象的绝对路径用一致性哈希计算哈希值;然后根据哈希值把对对象内容的访问操作以RCP远程调用的形式发送到特定的对象内容服务端(105)上;在对象内容服务端(105)上,为每一个特定对象维护一个IO队列,在IO队列中按顺序对所有对象内容进行读写操作。
9.根据权利要求8所述的支持多协议互通的对象多版本存储系统,其特征在于,所述对象内容服务端(105)在收到对象的commit调用时进行以下操作:
复制一个新的iNode块,作为该对象的一个新版本,新iNode块中的Map地址全部指向原文件版本的Map块;
对内存缓存中的每一个脏数据块,在数据卷中分配一个新的数据块空间,写入脏数据;
按脏数据块所对应的文件逻辑地址,在内存中生成相应的Map块脏块,把所有的脏数据块处理完毕之后,则形成了一个Map块脏块集合;
考虑所述Map块脏块集合,在Map卷中为每一个Map块脏块分配新的Map块空间,并写入脏Map块,之后把新的Map块地址更新到新iNode块中,当所有的Map块脏块写入完毕,则新的iNode块更新完成。
10.根据权利要求1所述的支持多协议互通的对象多版本存储系统,其特征在于,所述分布式元数据服务端(104)采用分布式KV数据库,所述客户端(103)能够对分布式KV数据库中KV对的读、写、删除以及以range-query的方式批量查询Key列表,并且分布式KV数据库提供两阶段提交2PC的分布式事务的方式,以原子性的方式在一个事务中处理多个KV对;所述客户端(103)从分布式KV数据库的对象版本数据中查询到对象版本的iNodeID之后,在自身缓存中维护已打开对象版本的iNode ID,然后以该iNode ID为索引,到对象内容服务端(105)上去访问对象内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311332973.0A CN117076413B (zh) | 2023-10-16 | 2023-10-16 | 一种支持多协议互通的对象多版本存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311332973.0A CN117076413B (zh) | 2023-10-16 | 2023-10-16 | 一种支持多协议互通的对象多版本存储系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117076413A CN117076413A (zh) | 2023-11-17 |
CN117076413B true CN117076413B (zh) | 2024-01-26 |
Family
ID=88708441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311332973.0A Active CN117076413B (zh) | 2023-10-16 | 2023-10-16 | 一种支持多协议互通的对象多版本存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117076413B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103036952A (zh) * | 2012-11-30 | 2013-04-10 | 中国电力科学研究院 | 一种企业级异构融合存储管理系统 |
US9135031B1 (en) * | 2010-04-28 | 2015-09-15 | Netapp, Inc. | System and method for determining storage resources of a virtual machine in a virtual server environment |
CN109309711A (zh) * | 2018-08-30 | 2019-02-05 | 中国科学院声学研究所 | 一种虚拟缓存共享方法和系统 |
CN114466083A (zh) * | 2022-01-19 | 2022-05-10 | 北京星辰天合科技股份有限公司 | 支持协议互通的数据存储系统 |
CN116233111A (zh) * | 2022-12-27 | 2023-06-06 | 浪潮云信息技术股份公司 | 一种基于Minio的大文件上传方法 |
CN116594834A (zh) * | 2023-04-12 | 2023-08-15 | 浙江大华技术股份有限公司 | 一种用于多协议服务器的运维数据处理方法及装置 |
-
2023
- 2023-10-16 CN CN202311332973.0A patent/CN117076413B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9135031B1 (en) * | 2010-04-28 | 2015-09-15 | Netapp, Inc. | System and method for determining storage resources of a virtual machine in a virtual server environment |
CN103036952A (zh) * | 2012-11-30 | 2013-04-10 | 中国电力科学研究院 | 一种企业级异构融合存储管理系统 |
CN109309711A (zh) * | 2018-08-30 | 2019-02-05 | 中国科学院声学研究所 | 一种虚拟缓存共享方法和系统 |
CN114466083A (zh) * | 2022-01-19 | 2022-05-10 | 北京星辰天合科技股份有限公司 | 支持协议互通的数据存储系统 |
CN116233111A (zh) * | 2022-12-27 | 2023-06-06 | 浪潮云信息技术股份公司 | 一种基于Minio的大文件上传方法 |
CN116594834A (zh) * | 2023-04-12 | 2023-08-15 | 浙江大华技术股份有限公司 | 一种用于多协议服务器的运维数据处理方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117076413A (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11386044B2 (en) | Tiered storage in a distributed file system | |
US9875029B2 (en) | Network-attached storage enhancement appliance | |
US7860907B2 (en) | Data processing | |
US9208031B2 (en) | Log structured content addressable deduplicating storage | |
US20190370225A1 (en) | Tiered storage in a distributed file system | |
US20100088349A1 (en) | Virtual file system stack for data deduplication | |
EP2615566A2 (en) | Unified local storage supporting file and cloud object access | |
CN110799960A (zh) | 数据库租户迁移的系统和方法 | |
US11625306B2 (en) | Data connector component for implementing data requests | |
US8095678B2 (en) | Data processing | |
US20200285612A1 (en) | Defragmentation for objects within object store | |
EP3814930B1 (en) | System and method for bulk removal of records in a database | |
US8090925B2 (en) | Storing data streams in memory based on upper and lower stream size thresholds | |
US10909091B1 (en) | On-demand data schema modifications | |
CN113986826A (zh) | 存储系统容量使用率估计 | |
GB2440357A (en) | Data storage method | |
CN117076413B (zh) | 一种支持多协议互通的对象多版本存储系统 | |
US8886656B2 (en) | Data processing | |
US8290993B2 (en) | Data processing | |
US20230376461A1 (en) | Supporting multiple fingerprint formats for data file segment |
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 |