CN117827082A - 数据存储系统 - Google Patents
数据存储系统 Download PDFInfo
- Publication number
- CN117827082A CN117827082A CN202211204981.2A CN202211204981A CN117827082A CN 117827082 A CN117827082 A CN 117827082A CN 202211204981 A CN202211204981 A CN 202211204981A CN 117827082 A CN117827082 A CN 117827082A
- Authority
- CN
- China
- Prior art keywords
- data
- mapping table
- module
- metadata
- fingerprint
- 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
- 238000013500 data storage Methods 0.000 title claims abstract description 35
- 238000013507 mapping Methods 0.000 claims abstract description 217
- 238000005192 partition Methods 0.000 claims abstract description 138
- 238000007726 management method Methods 0.000 claims abstract description 63
- 230000015654 memory Effects 0.000 claims abstract description 53
- 230000006835 compression Effects 0.000 description 13
- 238000007906 compression Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 238000000034 method Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据存储系统,包括第一模块和第二模块;在第一模块的容量小于元数据整体所需存储空间的情况下,第一模块用于存储元数据中全局头、逻辑单元管理区、物理空间管理区和内容指纹映射表的数据,以及元数据中逻辑地址映射表的部分或全部数据;第二模块用于存储元数据中指纹结点分区的数据,或,第二模块用于存储元数据中逻辑地址映射表的部分数据,以及元数据中指纹结点分区的数据。本发明提供的系统,通过为元数据分区,将元数据拆分为多个分区分别存储以适配不同设备的内存配置,确保访问元数据的次数最少以提升整体IO性能,并且较少的内存对IO性能的影响稳定可控,降低了元数据存储对于内存容量的需求。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种数据存储系统。
背景技术
全闪存阵列(ALL Flash Array,AFA)相比传统的存储介质具有较高的IOPS(Input/Output Operations Per Second,每秒输入/输出数),在数据存储领域得到了广泛的应用。
在全闪存阵列写入数据的过程中,一般采用追加写的方式。在此工作原理下,每个IO(Input Output,输入输出)命令,都需要通过元数据中相关表项查找物理地址。为了保证读写性能,一些厂商采用了全内存方案,即,将元数据的相关表项全部存入内存。但是元数据通常很大,元数据会占用大量的内存空间,而内存的成本很高,厂商需要为此付出高昂的代价。而如果直接将元数据存入数据库,虽然降低了内存成本,但是如此一来便很难对于元数据中各表项进行准确预期,导致读写效率低下。
发明内容
本发明提供一种数据存储系统,用以解决现有技术中全闪存阵列下元数据的全内存存储成本高的缺陷。
本发明提供一种数据存储系统,包括第一模块和第二模块;
在所述第一模块的容量小于元数据整体所需存储空间的情况下,所述第一模块用于存储所述元数据中全局头、逻辑单元管理区、物理空间管理区和内容指纹映射表的数据,以及所述元数据中逻辑地址映射表的部分或全部数据;
所述第二模块用于存储所述元数据中指纹结点分区的数据,或,所述第二模块用于存储所述元数据中逻辑地址映射表的部分数据,以及所述元数据中指纹结点分区的数据。
根据本发明提供的数据存储系统,在所述第一模块的容量小于所述元数据整体所需存储空间,且大于等于所述元数据中第一优先级分区下数据所需存储空间的情况下,所述内容指纹映射表的全部数据,或所述内容指纹映射表的全部数据以及所述逻辑地址映射表的部分或全部数据存储于所述第一模块;
在所述第一模块的容量小于所述元数据中第一优先级分区下数据所需存储空间的情况下,所述内容指纹映射表的第一部分数据存储于所述第一模块,所述内容指纹映射表的第二部分数据以及所述逻辑地址映射表的全部数据存储于所述第二模块;
所述全局头、所述逻辑单元管理区、所述物理空间管理区和所述内容指纹映射表属于所述第一优先级分区。
根据本发明提供的数据存储系统,在所述第一模块的容量小于元数据整体所需存储空间的情况下,所述第一模块还用于存储所述逻辑地址映射表和指纹结点分区中预留空间大小的数据,所述预留空间的大小基于所述第一模块在存储所述第一优先级分区下数据后剩余的存储空间大小确定。
根据本发明提供的数据存储系统,所述预留空间大小的数据包括所述元数据在所述指纹结点分区中的冲突结点的数据;所述冲突结点为所述内容指纹映射表中Hash地址冲突的内容指纹结点。
根据本发明提供的数据存储系统,所述预留空间大小的数据是基于所述逻辑地址映射表和所述指纹结点分区的数据的历史访问记录,从所述逻辑地址映射表和所述指纹结点分区的数据中划分得到的。
根据本发明提供的数据存储系统,所述逻辑地址映射表的数据和所述内容指纹映射表的数据以索引结构存储。
根据本发明提供的数据存储系统,所述逻辑地址映射表包括一级映射表、二级映射表和三级映射表,所述一级映射表用于存储逻辑单元号到逻辑地址区段的映射关系,所述二级映射表用于存储逻辑地址区段到内容指纹结点索引的映射关系,所述三级映射表用于存储内容指纹结点索引到内容指纹结点的映射关系。
根据本发明提供的数据存储系统,所述指纹结点分区包括指纹信息、物理地址信息、压缩后数据长度、引用计数和内容指纹结点索引。
根据本发明提供的数据存储系统,在所述第一模块的容量大于等于元数据整体所需存储空间的情况下,所述第一模块用于存储所述元数据中全局头、逻辑单元管理区、物理空间管理区、内容指纹映射表、逻辑地址映射表和指纹结点分区的数据。
根据本发明提供的数据存储系统,所述第一模块和所述第二模块为不同类型的存储介质,所述第一模块为内存。
本发明提供的数据存储系统,通过为元数据分区,将元数据拆分为多个分区分别存储以适配不同设备的内存配置,确保访问元数据的次数最少以提升整体IO性能,并且较少的内存对IO性能的影响稳定可控,降低了元数据存储对于内存容量的需求。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的数据存储系统的结构示意图;
图2是本发明提供的指纹结点分区的结构示意图;
图3是本发明提供的索引结构示意图;
图4是本发明提供的逻辑地址映射表的结构示意图;
图5是本发明提供的内容指纹映射表的结构示意图。
附图标记:
10:第一模块;11:全局头;12:逻辑单元管理区;
13:物理空间管理区;14:内容指纹映射表;
20:第二模块;21:逻辑地址映射表;22:指纹结点分区。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
相较于传统的磁盘介质,全闪存阵列AFA具备速度快,耗电低,省空间等显而易见的优势,在数据存储领域得到了广泛的应用。在全闪存阵列写入数据的过程中,一般采用追加写的方式,即,将数据写入一个新空白逻辑块,而不对旧数据进行覆盖写;同时把上层下发的数据分成固定块大小实现数据去重和压缩功能,以实现容量超供;对于已经写过但是无效的空间,通过垃圾回收功能回收空间。基于上述追加写的方式,主机写请求的数据具体在存储空间的哪个位置将无法直接用计算来获得,而需要基于内容寻址,因此需要大量的元数据来保存逻辑地址到内容指纹(HASH值)的映射关系,以及内容指纹到物理地址的映射关系。而无论是读数据或者写数据,都需要通过元数据中相关表项查找物理地址。
为了保证性能,一些厂商会使用全内存方案,即,将元数据的相关表项都存在内存中,如此一来针对元数据的访问速度得以保证,对于IO性能的影响可忽略不计。但是元数据会占用大量的内存空间,导致这些厂商的设备配置的内存都很高。
考虑到内存的高昂成本,也有一些厂商不会大规模配置内存,转而使用数据库来保存元数据,以牺牲性能的代价来节省成本。如此一来,很难针对性减少访问元数据的次数。且由于内存通常作为一级缓存,上述方式很难对元数据的各表项进行准确预取,导致效率低下,影响IOPS性能。
针对上述问题,本发明提供了一种数据存储系统,以实现元数据存储。图1是本发明提供的数据存储系统的结构示意图,如图1所示,该系统包括第一模块10和第二模块20;
在所述第一模块10的容量小于元数据整体所需存储空间的情况下,所述第一模块10用于存储所述元数据中全局头11、逻辑单元管理区12、物理空间管理区13和内容指纹映射表14的数据,以及所述元数据中逻辑地址映射表21的部分或全部数据;
所述第二模块20用于存储所述元数据中指纹结点分区22的数据,或,所述第二模块20用于存储所述元数据中逻辑地址映射表21的部分数据,以及所述元数据中指纹结点分区22的数据。
具体地,数据存储系统至少包括两个存储介质,即第一模块10和第二模块20,其中第一模块10是相较于第二模块20具备更高读写效率的存储介质,例如第一模块10可以是动态随机存取存储器(Dynamic Random Access Memory,DRAM),第二模块20可以是固态硬盘(Solid State Disk,SSD)或者非易失性双列直插式内存模块(non-volatile dual in-line memory module,NVDIMM),本发明实施例对此不作具体限定。
单从读写效率方向考虑而不计成本,将写入全闪存阵列AFA的数据的元数据的相关表项全部存入内存是最优方案。但是实际应用时,受限于可投入的成本,内存能够为元数据存储提供的存储空间通常是有限的。对应在本发明实施例中,读写效率更优的第一模块10可提供给元数据的存储空间,即第一模块10的容量也是有限的。因此,可能存在第一模块10无法存储元数据的所有相关表项的情况,即第一模块10的容量小于元数据整体所需存储空间的情况。此时,需要将元数据中的部分相关表项存入第二模块20。
为了保障元数据在基于第一模块10和第二模块20进行存储时的整体IO性能,本发明实施例对于元数据的相关表项进行了整理划分,划分后的元数据可以包括如下六个分区,即,全局头11、逻辑单元管理区12、物理空间管理区13、逻辑地址映射表21、内容指纹映射表14和指纹结点分区22。
其中,全局头11用于存储所支持的逻辑单元号(Logical Unit Number,LUN)的个数,以及包括逻辑单元管理区12、物理空间管理区13、逻辑地址映射表21、内容指纹映射表14和指纹结点分区22在内的各分区的首地址和长度;
逻辑单元管理区12用于存储每个逻辑单元号LUN的索引号、条带大小和状态,数据去重分块大小,压缩配置,物理空间起始地址、物理空间长度,逻辑地址映射表21地址、逻辑地址映射表21长度,内容指纹映射表14起始地址,内容指纹映射表14长度;
物理空间管理区13用于存储每个逻辑单元号LUN的物理容量占用情况,以bitmap的形式体现,其中每个bit代表一个去重分块大小;
逻辑地址映射表21用于存储每个逻辑单元号LUN的逻辑空间地址到内容指纹的映射关系;
内容指纹映射表14用于存储基于内容指纹的Hash表,目的是获取内容指纹到物理地址的映射关系;
指纹结点分区22用于存储内容指纹结点的信息,以及内容指纹(Hash)结点索引,此处的内容指纹结点的信息包括指纹信息、物理地址信息、压缩后数据长度和引用计数。可以理解的是,指纹结点分区22结合了元数据中的所有关键映射内容,其余各分区仅需指向指纹结点分区22即可,由此避免了元数据的重复冗余存储。
完成上述分区之后,可以针对上述各个分区所需占用的存储空间,以及数据IO读写对于元数据各分区的访问频次、短期内访问内容的集中程度、查找时需要加载的分区表项范围等进行分析,从而能够优先将占用空间大、访问频次低的分区表项从第一模块10移至第二模块20存储,次优先将部分顺序存储、非全局性查找的分区表项从第一模块10移至第二模块20存储,而尽量将访问频次高、占用内存小以及需要全局查找的分区表项,保留在第一模块10中存储。
而根据对上述各分区的分析来看,全局头11和逻辑单元管理区12所需占用的存储空间很小,几乎可以忽略不计,且数据IO读写需要经常访问此两者以获取地址转换方法,因此,需要将全局头11和逻辑单元管理区12存储在第一模块10内,物理空间管理区13需要频繁更新,且所需占用的存储空间也比较小,因此,可以将物理空间管理区13也存储在第一模块10内,从而为全局头11、逻辑单元管理区12和物理空间管理区13提供高效的读写性能。
内容指纹映射表14需要全表查询,所需占用的存储空间较前述全局头11、逻辑单元管理区12和物理空间管理区13大所需占用的存储空间,但是远小于逻辑地址映射表21和指纹结点分区22所需占用的存储空间,因此,在第一模块10的容量允许的情况下,需要将内容指纹映射表14也存储在第一模块10内,从而为内容指纹映射表14提供高效的读写性能。
逻辑地址映射表21所需占用的存储空间较大,且逻辑映射表的数据通常是范围内集中,指纹结点分区22所需占用的存储空间最大,且指纹结点分区22的数据通常以追加写的方式记录,可作合并处理,并且逻辑地址映射表21和指纹结点分区22均可部分查找,此两者皆属于所需占用的存储空间较大而访问频次较低、可以顺序存储、非全局性查找的表项,因此在第一模块10的容量不足以支持元数据整体存储的情况下,可以优先考虑将逻辑地址映射表21存储在第一模块10,或者至少将逻辑地址映射表21中的一部分数据存储在第一模块10,另一部分数据存储在第二模块20,从而尽量优先为逻辑地址映射表21提供高效的读写性能。可以理解的是,在第一模块10存储了逻辑地址映射表21的全部数据的情况下,第二模块20内不存在逻辑地址映射表21的数据,在第一模块10仅存储了逻辑地址映射表21的部分数据的情况下,第二模块20内存储逻辑地址映射表21的另外部分数据,因此在图1中,第二模块20内的逻辑地址映射表21以虚线框的形式表示。此外,为应对第一模块10的容量不足的情况,可以将指纹结点分区22存至第二模块20。
即,针对上述元数据分区的情况,在第一模块10的容量小于元数据整体所需存储空间的情况下,可以将元数据中全局头11、逻辑单元管理区12、物理空间管理区13和内容指纹映射表14的数据,以及元数据中逻辑地址映射表21的部分或全部数据,存入第一模块10,从而优先保证全局头11、逻辑单元管理区12、物理空间管理区13和内容指纹映射表14的读写性能,而将元数据中指纹结点分区22的数据,或将元数据中指纹结点分区22的数据以及逻辑地址映射表21的部分数据存入第二模块20,降低了元数据存储对于第一模块10的容量要求,保证了元数据的整体IO性能不会出现较大波动。
本发明实施例提供的系统,通过为元数据分区,将元数据拆分为多个分区分别存储以适配不同设备的内存配置,确保访问元数据的次数最少以提升整体IO性能,并且较少的内存对IO性能的影响稳定可控,降低了元数据存储对于内存容量的需求。
基于上述实施例,上述各分区所需存储空间的计算,需要应用超供倍数和压缩比。其中,超供倍数为去重压缩后可以向上层提供的有效可用容量与实际物理容量的比值;压缩比为压缩算法压缩前的数据长度与压缩后的数据长度的平均比值。
由此,各分区所需存储空间的计算方式如下:
逻辑地址映射表所需存储空间=超供倍数*(物理容量大小/分块大小)*指纹结点索引大小;
内容指纹映射表所需存储空间=(物理容量大小/分块大小)*压缩比*指纹结点索引大小;
指纹结点分区所需存储空间=指纹结点大小*(物理容量大小/分块大小)*压缩比;
物理空间管理区所需存储空间=(物理容量大小/分块大小)*压缩比/8;
基于此,对各分区的空间占用情况、访问次数、存储顺序性和查找范围等进行分析,得到如下表格:
逻辑地址映射表 | 内容指纹映射表 | 指纹结点分区 | |
空间占用比例 | 22.10% | 8.80% | 68.90% |
写访问次数 | 2(读1次写1次) | 2(读1次写1次) | 1至n+2 |
读访问次数 | 1 | 0 | 1 |
存取顺序性 | 大部分顺序 | 完全随机 | 顺序 |
查找范围 | 部分 | 全局范围 | 部分 |
上表中,n为Hash冲突链长度。
其中,空间占用比例是在假定压缩比为2,超供倍数为5;指纹结点大小为39字节;索引大小为5字节的情况下计算得到的。
针对写访问次数的确定,需要写命令下来,根据上层的LBA(Logical BlockAddress,逻辑区块地址),在逻辑地址映射表21中查找指纹结点索引是否有效,若有效,说明是覆盖写,若无效说明是新写入;然后根据数据块计算的Hash值在内容指纹映射表14中确定是否重复,若重复需要修改指纹结点分区22中的引用计数,若不重复,需要新增指纹结点分区22;若冲突,则需要顺着指纹结点的索引去追加到最后一个。完成更新内容指纹映射表14和逻辑地址映射表21的表项;
针对读访问次数的确定,是直接在逻辑地址映射表21中找到索引,再根据索引在指纹结点分区22中查找;
针对存取顺序性的确定,根据上层的业务情况,逻辑映射表通常都是范围内大部分顺序访问,夹杂着部分随机;因此逻辑地址映射表21通常根据上层的卷及其上应用决定的;内容指纹映射表14是有内容决定的,分散到整个Hash表空间,因此是完全随机的;指纹结点分区22的指纹结点是顺序追加存入;
针对查找范围的确定,从写命令流程可以知晓,基于内容Hash值去重查找是全局查找的;逻辑地址映射表21可以根据逻辑地址直接定位位置;指纹结点分区22可以根据指纹结点索引直接定位。
基于上述情况可知,全局头11、逻辑单元管理区12所占用空间可忽略不计,IO需经常访问获取地址转换方法,物理空间管理区13需要频繁更新,占用空间也不多,此三者在存储时的优先级最高;内容指纹映射表14需全表查询,占用空间不算大,优先级次之;逻辑地址映射表21的数据通常是范围内集中,优先级再次之;内容指纹结点分区22的数据,会以追加写的方式记录,可合并处理,优先级最低。
针对上述各分区的优先级排序可知,在第一模块10容量有限的情况下,可以优选存储优先级高的各分区的数据,而将优先级低的分区的数据存入第二模块20。
例如,在第一模块10容量有限的情况下,将逻辑地址映射表21和内容指纹结点分区22的数据存入第二模块20,可以节省第一模块91%的使用量。
可以理解的是,除了第一模块10和第二模块20,该数据存储系统中还可以设置第三模块,第三模块的读写效率低于第二模块20,在第一模块10和第二模块20的容量总和不足以满足元数据整体的存储需求的情况下,可以将根据元数据中各分区的优先级,对应第一、第二、第三模块多级存储。
基于上述任一实施例,所述全局头11、所述逻辑单元管理区12、所述物理空间管理区13和所述内容指纹映射表14属于第一优先级分区。
具体地,结合上一实施例中针对元数据的各个分区的分析可知,全局头11、逻辑单元管理区12和物理空间管理区13需要被频繁访问或者更新,所以在各分区中的处于最高的优先级,应优先存储在第一模块10中,而全局头11、逻辑单元管理区12和物理空间管理区13所需占用的存储空间很小,因此可以默认存储在第一模块10中。
剩余的三个分区,即内容指纹映射表14、逻辑地址映射表21和指纹结点分区22,其中内容指纹映射表14相较逻辑地址映射表21和指纹结点分区22所需占用的存储空间较小,且内容指纹映射表14需要全表查询,所以内容指纹映射表14在各分区中的优先级高于逻辑地址映射表21和指纹结点分区22,在第一模块10存在可存储空间的情况下,默认优先存储内容指纹映射表14的数据。
基于此,可以对元数据的各个分区进行优先级划分,此处全局头11、逻辑单元管理区12、物理空间管理区13和内容指纹映射表14应优选存储在第一模块10,因此上述四个分区属于第一优先级分区。
基于此,第一模块10的容量小于元数据整体所需存储空间的情况,具体可以划分为两种情况,一种是第一模块10的容量小于元数据整体所需存储空间,且大于等于元数据中第一优先级分区下数据所需存储空间的情况,此时第一优先级分区下各分区的数据均可以存储至第一模块10;另一种情况是第一模块10的容量不仅小于元数据整体所需存储空间,还小于元数据中第一优先级分区下数据所需存储空间的情况,此时第一优先级分区下各分区的数据无法全部存储至第一模块10。
针对其中的一种情况,即在第一模块10的容量小于元数据整体所需存储空间,且大于元数据中第一优先级分区下数据所需存储空间的情况下,内容指纹映射表14的全部数据,或内容指纹映射表14的全部数据以及逻辑地址映射表21的部分或全部数据存储于第一模块10。
可以理解的是,此种情况下,第一模块10的容量大于等于全局头11、逻辑单元管理区12、物理空间管理区13和内容指纹映射表14四者所需的存储空间之和,因此可以存储元数据中全局头11、逻辑单元管理区12、物理空间管理区13和内容指纹映射表14的数据,此时内容指纹映射表14的全部数据均可存储于第一模块10,并且,如果第一模块10中仍有剩余存储空间,还可以将逻辑地址映射表21的全部或者部分数据存储与第一模块10,相应地,第二模块20仅需存储指纹结点分区22的数据,或存储指纹结点22的数据以及逻辑地址映射表21的部分数据,而无需存储内容指纹映射表14的数据。
针对其中的另一种情况,即在第一模块10的容量小于元数据中第一优先级分区下数据所需存储空间的情况下,内容指纹映射表14的第一部分数据存储于第一模块10,内容指纹映射表14的第二部分数据以及逻辑地址映射表21的全部数据存储于所述第二模块20。
可以理解的是,此种情况下,第一模块10的容量小于全局头11、逻辑单元管理区12、物理空间管理区13和内容指纹映射表14四者所需的存储空间之和,即,在第一模块10已经存储了全局头11、逻辑单元管理区12和物理空间管理区13的数据的情况下,第一模块10的容量不足以存储内容指纹映射表14的全部数据,此时需要将内容指纹映射表14的全部数据划分为两个部分,即第一部分和第二部分,并且将内容指纹映射表14的第一部分数据存入第一模块10,而剩余未被第一模块10存储的部分,即内容指纹映射表14的第二部分数据则存入第二模块20。此外,由于逻辑地址映射表21的优先级较内容指纹映射表14更低,在第一模块10已不足以完整存储内容指纹映射表14的情况下,逻辑地址映射表21的全部数据均存储于第二模块20。
本发明实施例提供的系统,细化了不同设备的内存配置下元数据的存储方式,有助于进一步优化元数据存储的可靠性,保证全闪存阵列下的IO性能。
基于上述任一实施例,在第一模块的容量小于元数据整体所需存储空间的情况下,第一模块还用于存储所述逻辑地址映射表和指纹结点分区中预留空间大小的数据,所述预留空间的大小基于所述第一模块在存储所述第一优先级分区下数据后剩余的存储空间大小确定。
具体地,在第一模块的容量小于元数据整体所需存储空间的情况下,元数据中逻辑地址映射表和指纹结点分区的数据需要存入第二模块。而为了便于第二模块内逻辑地址映射表和指纹结点分区的数据读写,第一模块中还预留了一部分空间,用于存储逻辑地址映射表和指纹结点分区中的部分数据,即,第一模块还用于存储逻辑地址映射表和指纹结点分区中预留空间大小的数据。
此处的预留空间,是用于实现逻辑地址映射表和指纹结点分区中数据的合并下发和读取,数据的合并下发和读取,能够有效降低对于第二模块的访问频次,从而进一步提高全闪存阵列下的IO性能。
可以理解的是,数据的合并下发和读取所需的存储空间并不大,因此预留空间的大小也可以基于第一模块在存储完成第一优先级分区下数据后剩余的存储空间大小确定,例如在第一模块的容量小大于等于元数据中第一优先级分区下数据所需存储空间的情况下,预留空间的大小可以视第一模块剩余的存储空间大小而定;又例如在第一模块的容量小于元数据中第一优先级分区下数据所需存储空间的情况下,预留空间的大小可以压缩至最小限定,从而尽量将第一模块的存储空间留给第一优先级分区下的数据。
基于上述任一实施例,所述预留空间大小的数据包括所述元数据在所述指纹结点分区中的冲突结点的数据;所述冲突结点为内容指纹映射表中Hash地址地址冲突的内容指纹结点。
具体地,内容指纹结点的信息可以按照顺序存储在指纹结点分区中,如此一来元数据的合并刷新和回收也能更加便捷。此处,考虑到Hash冲突的情况,即通过内容指纹映射表所得的内容指纹(Hash)结点索引重复的情况,可以将Hash地址冲突的内容指纹节点记为冲突节点,并将冲突结点的数据置入第一模块中的预留空间,保证冲突结点的拉链查找的便利性。
进一步地,图2是本发明提供的指纹结点分区的结构示意图,如图2所示,在第一模块的预留空间中存储冲突结点的数据时,可以尽可能的把同一链上的冲突结点靠近存放,便于一次访问下级存储元数据设备即可获取,并且,同一链上的冲突结点也不能存储过近,否则无法共享冲突空间,需要增加预留才能够确保不会二次访问。基于此,可以将预留空间和原存储空间放在一次读写块大小内,此处读写块的大小可以是去重分块大小或其整数倍,或者可以是阵列条带大小;另外,若存在下级阵列缓存,可定义为一个cache块大小,地址对齐,预留比例可以根据Hash算法以及映射表空间确定,例如可以是20%-50%。
基于上述任一实施例,所述预留空间大小的数据是基于所述逻辑地址映射表和所述指纹结点分区的数据的历史访问记录,从所述逻辑地址映射表和所述指纹结点分区的数据中划分得到的。
具体地,逻辑地址映射表和指纹结点分区的数据的历史访问记录,用于反映逻辑地址映射表和指纹结点分区中的数据近期是否被访问,基于此,即可从逻辑地址映射表和指纹结点分区的数据中,划分出最近访问的逻辑地址映射表和指纹结点分区的数据,并优先将此部分数据存入第一模块的预留空间内,从而为后续读取提供便利。
此外,在第一模块的容量小于元数据中第一优先级分区下数据所需存储空间的情况下,存储于第一模块中的内容指纹映射表的第一部分数据,是从内容指纹映射表空间划分的连续的一部分,由于映射表的访问的全随机的,相较于上述逻辑地址映射表和指纹结点分区的数据划分方式,针对内容指纹映射表的数据划分不按照最近访问地址处理。
基于上述任一实施例,所述逻辑地址映射表的数据和所述内容指纹映射表的数据以索引结构存储。
具体地,为减少元数据实际在内存中的存储空间,需要对于映射表项的大小进行精简,对此,本发明实施例中将全局指针全部替换为索引,通过索引分段管理的形式进行逻辑地址映射表的数据和内容指纹映射表的数据存储。图3是本发明提供的索引结构示意图,如图3所示,索引仅需5个字节即可表示,相较于需要占用8个字节的全局指针,索引结构存储的数据显然可以降低对于存储空间的需求大小。
图3示出的索引分段结构中,1个字节的index下,包含了1个结点有效bit位、2个压缩算法bit位、1个预留bit位、4个bit一级索引;4个字节的offset表示二级索引。此外,逻辑地址映射表和内容指纹映射表中的指针结点也替换为单向索引,由此可以从16个字节压缩为5个字节。
可以理解的是,指纹结点分区结合了元数据中的所有关键映射内容,逻辑地址映射表和内容指纹映射表仅需使用索引指向指纹结点分区即可,由此避免了元数据的重复冗余存储。
基于上述任一实施例,图4是本发明提供的逻辑地址映射表的结构示意图,如图4所示,所述逻辑地址映射表包括一级映射表、二级映射表和三级映射表,所述一级映射表用于存储逻辑单元号到逻辑地址区段的映射关系,所述二级映射表用于存储逻辑地址区段到内容指纹结点索引的映射关系,所述三级映射表用于存储内容指纹结点索引到内容指纹结点的映射关系。
具体地,在索引分段管理形式下,一级映射表用于存储逻辑单元号LUN id到逻辑地址区段LBA区段的映射关系,二级映射表用于存储逻辑地址区段LBA区段到内容指纹结点索引的映射关系,三级映射表用于存储内容指纹结点索引到内容指纹结点的结点内容的映射关系,即,通过索引分段管理下的共三级的映射表,即可实现逻辑空间地址到内容指纹的映射关系。如图4所述的线性存储结构,无需存储上层LBA,且每个内容指纹结点均仅需5个字节大小的索引即可实现,能够进一步提高存储空间的有效利用率。
基于上述任一实施例,图5是本发明提供的内容指纹映射表的结构示意图,如图5所示,内容指纹映射表同样仅需要存储索引结点,即图5中示出的段索引0至m;映射表的空间可以按物理容量大小取接近质数进行划分;针对其中的冲突结点,例如指纹结点1和指纹结点90,可以使用链地址法,由此确保映射表的容量固定。并且,冲突结点在指纹结点分区中可以根据索引拉链查找。
基于上述任一实施例,所述指纹结点分区包括指纹信息、物理地址信息、压缩后数据长度、引用计数和指纹结点索引。
具体地,指纹结点分区用于存储内容指纹结点的信息,以及内容指纹结点索引,此处的内容指纹结点的信息包括指纹信息、物理地址信息、压缩后数据长度和引用计数。可以理解的是,指纹结点分区结合了元数据中的所有关键映射内容,其余各分区仅需指向指纹结点分区即可,由此避免了元数据的重复冗余存储。
基于上述任一实施例,在所述第一模块的容量大于等于元数据整体所需存储空间的情况下,所述第一模块用于存储所述元数据中全局头、逻辑单元管理区、物理空间管理区、内容指纹映射表、逻辑地址映射表和指纹结点分区的数据。
具体地,上述两个模块的设置,在第一模块的容量大于等于元数据整体所需存储空间的情况下,同样适用。此时,可以将元数据的各个分区均存入第一模块,即使用全内存方式,把所有表项都放在内存处理。可以理解的是,此时的第一模块无需再为逻辑地址映射表和指纹结点分区预留空间,预留空间的大小可以设置为0,以避免额外占用空间。
基于上述任一实施例,所述第一模块和所述第二模块为不同类型的存储介质,所述第一模块为内存。
具体地,在第一模块为内存的情况下,第二模块可以是读写效率低于第一模块的其他类型的内存,即通过第一模块和第二模块构建多级缓存,将元数据各分区中优先级较高的存入第一模块,优先级较低的存入第二模块;例如,第一模块为DRAM内存,第二模块为NVDIMM。
此外,在第一模块为内存的情况下,第二模块可以是外存储器,例如第一模块为DRAM内存,第二模块为高速耐写性SSD。
基于上述任一实施例,针对于全闪存阵列,元数据的存储策略如下:
数据存储系统内设置有第一模块和第二模块,其中第一模块即控制器内存,在第一模块的容量大于等于元数据整体所需存储空间的情况下,即控制器内容容量满足全内存方式需求的情况下,将元数据整体存入第一模块,此时针对指纹结点映射表的预留空间长度为0;
在第一模块的容量小于元数据整体所需存储空间的情况下,即控制器内存不满足全内存方式需求,此时需要根据上述各分区的优先级,从高到低,把各分区的数据分别存入第一模块和第二模块:
具体在第一模块的容量小于元数据整体所需存储空间,且大于元数据中第一优先级分区下数据所需存储空间的情况下,即,在满足全局头、逻辑单元管理区、物理空间管理区和内容指纹映射表所需内存的情况下:
如果第二模块为存储阵列,且控制器有阵列缓存,可以复用阵列的读写缓存,则无需在第一模块中预留空间,可以直接复用阵列的读写缓存用于合并处理逻辑地址映射表及指纹结点分区的数据;
如果第二模块非存储阵列,或者控制器无阵列缓存,则第一模块中需要预留空间,用于保存逻辑地址映射表和指纹结点分区的数据;预留空间根据第一模块的剩余情况来确定,主要用于合并下发和读取。
具体在第一模块的容量小于元数据中第一优先级分区下数据所需存储空间的情况下,即第一模块的容量不满足存储内容指纹映射表所需内容的情况下:
最小限度地在第一模块设置预留空间,给予最近访问的指纹结点分区和逻辑地址映射表,用于合并下发,其余第一模块的容量全部给予内容指纹映射表;第一模块仅能存储内容指纹映射表的第一部分,具体在读写时,如果能命中第一模块中的第一部分就使用第一模块中存储的第一部分,如果不能命中,则直接往下层获取第二模块中存储的内容指纹映射表的第二部分。
本发明实施例提供的数据存储系统下的元数据存储策略,解绑了全闪存阵列的高内存配置,可以根据客户的成本需求来配置内存容量,同时该元数据的分区方式也极大地降低了内存的容量,通过自动适配最佳的缓存策略,确保访问元数据的次数最少以提升整体IO性能,并且较少的内存情况下,不会出现性能波动较大的情况。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种数据存储系统,其特征在于,包括第一模块和第二模块;
在所述第一模块的容量小于元数据整体所需存储空间的情况下,所述第一模块用于存储所述元数据中全局头、逻辑单元管理区、物理空间管理区的和内容指纹映射表的数据,以及所述元数据中逻辑地址映射表的部分或全部数据;
所述第二模块用于存储所述元数据中指纹结点分区的数据,或,所述第二模块用于存储所述元数据中逻辑地址映射表的部分数据,以及所述元数据中指纹结点分区的数据。
2.根据权利要求1所述的数据存储系统,其特征在于,
在所述第一模块的容量小于所述元数据整体所需存储空间,且大于等于所述元数据中第一优先级分区下数据所需存储空间的情况下,所述内容指纹映射表的全部数据,或所述内容指纹映射表的全部数据以及所述逻辑地址映射表的部分或全部数据存储于所述第一模块;
在所述第一模块的容量小于所述元数据中第一优先级分区下数据所需存储空间的情况下,所述内容指纹映射表的第一部分数据存储于所述第一模块,所述内容指纹映射表的第二部分数据以及所述逻辑地址映射表的全部数据存储于所述第二模块;
所述全局头、所述逻辑单元管理区、所述物理空间管理区和所述内容指纹映射表属于所述第一优先级分区。
3.根据权利要求2所述的数据存储系统,其特征在于,
在所述第一模块的容量小于元数据整体所需存储空间的情况下,所述第一模块还用于存储所述逻辑地址映射表和指纹结点分区中预留空间大小的数据,所述预留空间的大小基于所述第一模块在存储所述第一优先级分区下数据后剩余的存储空间大小确定。
4.根据权利要求3所述的数据存储系统,其特征在于,所述预留空间大小的数据包括所述元数据在所述指纹结点分区中的冲突结点的数据;所述冲突结点为所述内容指纹映射表中Hash地址冲突的内容指纹结点。
5.根据权利要求3所述的数据存储系统,其特征在于,
所述预留空间大小的数据是基于所述逻辑地址映射表和所述指纹结点分区的数据的历史访问记录,从所述逻辑地址映射表和所述指纹结点分区的数据中划分得到的。
6.根据权利要求1至5中任一项所述的数据存储系统,其特征在于,所述逻辑地址映射表的数据和所述内容指纹映射表的数据以索引结构存储。
7.根据权利要求6所述的数据存储系统,其特征在于,
所述逻辑地址映射表包括一级映射表、二级映射表和三级映射表,所述一级映射表用于存储逻辑单元号到逻辑地址区段的映射关系,所述二级映射表用于存储逻辑地址区段到内容指纹结点索引的映射关系,所述三级映射表用于存储内容指纹结点索引到内容指纹结点的映射关系。
8.根据权利要求1至5中任一项所述的数据存储系统,其特征在于,所述指纹结点分区包括指纹信息、物理地址信息、压缩后数据长度、引用计数和内容指纹结点索引。
9.根据权利要求1至5中任一项所述的数据存储系统,其特征在于,在所述第一模块的容量大于等于元数据整体所需存储空间的情况下,所述第一模块用于存储所述元数据中全局头、逻辑单元管理区、物理空间管理区、内容指纹映射表、逻辑地址映射表和指纹结点分区的数据。
10.根据权利要求1至5中任一项所述的数据存储系统,其特征在于,所述第一模块和所述第二模块为不同类型的存储介质,所述第一模块为内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211204981.2A CN117827082A (zh) | 2022-09-29 | 2022-09-29 | 数据存储系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211204981.2A CN117827082A (zh) | 2022-09-29 | 2022-09-29 | 数据存储系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117827082A true CN117827082A (zh) | 2024-04-05 |
Family
ID=90504502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211204981.2A Pending CN117827082A (zh) | 2022-09-29 | 2022-09-29 | 数据存储系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117827082A (zh) |
-
2022
- 2022-09-29 CN CN202211204981.2A patent/CN117827082A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303596B2 (en) | Read-write control method for memory, and corresponding memory and server | |
US10922235B2 (en) | Method and system for address table eviction management | |
US10067881B2 (en) | Compression and caching for logical-to-physical storage address mapping tables | |
CN110347336B (zh) | 一种基于nvm与ssd混合存储结构的键值存储系统 | |
JP6678230B2 (ja) | ストレージ装置 | |
US20050015557A1 (en) | Nonvolatile memory unit with specific cache | |
US8954656B2 (en) | Method and system for reducing mapping table size in a storage device | |
CN107066393A (zh) | 提高地址映射表中映射信息密度的方法 | |
US20060294118A1 (en) | Skip list with address related table structure | |
US8621134B2 (en) | Storage tiering with minimal use of DRAM memory for header overhead | |
CN107817945B (zh) | 一种混合内存结构的数据读取方法和系统 | |
CN114546296B (zh) | 一种基于zns固态硬盘的全闪存系统和地址映射方法 | |
JP6323445B2 (ja) | ストレージ装置と方法及びプログラム | |
CN110968269A (zh) | 基于scm与ssd的键值存储系统及读写请求处理方法 | |
CN103942161A (zh) | 只读缓存的去冗余系统及方法以及缓存的去冗余方法 | |
KR102321346B1 (ko) | 대용량 ssd 장치를 위한 데이터 저널링 방법 | |
CN114416646A (zh) | 一种层级存储系统的数据处理方法及装置 | |
CN111857582B (zh) | 一种键值存储系统 | |
KR20160121819A (ko) | 이종 메모리 기반 데이터 관리 장치 | |
US10482012B1 (en) | Storage system and method of operating thereof | |
CN111338569A (zh) | 一种基于直接映射的对象存储后端优化方法 | |
CN115079957B (zh) | 请求处理方法、装置、控制器、设备及存储介质 | |
CN108804571B (zh) | 一种数据存储方法、装置以及设备 | |
CN117827082A (zh) | 数据存储系统 | |
US10877698B2 (en) | Semiconductor device for managing cold addresses of nonvolatile memory device |
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 |