信息存储处理方法

文档序号:8445374阅读:528来源:国知局
信息存储处理方法
【技术领域】
[0001] 本发明涉及网络存储,特别涉及一种大数据存储处理方法。
【背景技术】
[0002] 在大规模存储系统中,为了提高存储系统的可靠性、改善IO性能以及满足海量数 据存储需求,将多个存储集群联合起来,形成统一的存储设备,例如将数据分散存储到集群 中的不同磁盘上以保证并行性,并采用冗余校验机制,在保证数据安全性的同时可获得大 容量和高数据传输率,对于顺序读写数据的存储系统,一般对数据传输带宽要求不苛刻,但 对数据可靠性、存储空间要求较高。即使考虑视频回放、备份恢复等对带宽的额外需求,采 用存储集群时,也存在着严重的性能浪费,同时伴随着严重的能源浪费和磁盘损耗,为了计 算校验数据,数据写入需要额外的读写开销和延时,降低了存储集群的吞吐能力。另一方 面,当向存储集群写入的数据块随机时,磁盘就需要寻址到新的数据位置,此时,随机读写 传输性能比顺序读写传输性能更低。

【发明内容】

[0003] 为解决上述现有技术所存在的问题,本发明提出了一种信息存储处理方法,包 括:
[0004] 将非顺序的读写请求地址映射到连续的实际地址空间,在缓存中缓存并构造与存 储集群条块对齐的写数据,对物理地址顺序化的写请求进行聚合或拆分,在内存缓存区内 组织成为与存储集群的条块对齐的写请求,以使写请求在存储集群上覆盖完整的条块。
[0005] 优选地,所述在缓存中缓存并构造与存储集群条块对齐的写数据,包括采用非易 失性RAM镜像内存缓存区内的写请求,并且进一步包括:
[0006] 运行一个对齐写请求的驱动程序,该程序包括接收线程和发送线程和写请求队 列,其中;
[0007] 接收线程用于监控和接收应用程序发送给存储集群的写请求,首先进行地址转 换,转换为物理空间内连续的写请求,并将其加入到写请求队列中;所述发送线程用于当写 请求队列不为空时从写请求队列中取出并处理写请求;
[0008] 首先,通过读取存储集群配置文件获得存储集群的参数,该参数包括条块单位、成 员磁盘数,再由条块单位乘以成员磁盘数,获得条块大小,可条块单位和成员磁盘数;
[0009] 将写请求表示为(buf,cnt,〇ff),其中buf为用户空间缓存区指针,指向写数据的 起始地址;cnt为写数据块的大小;off是偏移量,是用户数据写入设备文件的起始位置;
[0010] 发送线程创建一个发送缓存区数组,记作bufsend[M],其中M为大于1的正整数, 缓存区bufsend[i] (0 <i〈M)的大小等于存储集群的条块大小,记为STSize;获取缓存区 bufsend[i]缓存的字节数filled[i],以及空闲字节数empty[i];
[0011] 发送线程首先从bufsend[M]中获得空闲缓存区bufsend[i],若没有则等待,对于 bufsend[i],初始empty[i]为STSize,filled[i] = 0,然后按如下流程处理写请求队列中 的与请求:
[0012] 缓存区bUfsend[i]填满后,发送线程将其中的数据发送给存储集群,对存储集 群条块的整体写入,对齐驱动程序监控应用程序对设备文件的打开与关闭操作,进行现 场保护与恢复;当应用程序关闭设备文件、发送线程最后一次向存储集群写数据时,在 bufsend[i]中的数据写入存储集群的同时,记录本次写操作的off和cnt值;当设备文件 再次打开时,根据记录的off和cnt值,进行现场恢复,然后进入正常的写请求处理流程。
[0013] 本发明相比现有技术,具有以下优点:
[0014] 本发明提出了一种存储方法,在写入磁盘过程中避免了因生成校验数据而产生的 额外读写开销,通过数据的顺序写入有效减少了寻址操作,提高了存储性能。
【附图说明】
[0015] 图1是根据本发明实施例的信息存储处理方法的流程图。
【具体实施方式】
[0016] 下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描 述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权 利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节 以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中 的一些或者所有细节也可以根据权利要求书实现本发明。
[0017] 本发明的一方面提供了一种信息存储处理方法,以提高顺序数据存储中存储集群 的写入性能。图1是根据本发明实施例的方法流程图。
[0018] 本发明利用区段映射进行地址转换,将非顺序的读写请求地址映射到连续的地址 空间,以实现连续写入。特别适合顺序数据存储中的大块数据的地址转换;利用基于缓存的 存储集群写优化存储架构,在缓存中缓存并构造与存储集群条块对齐的写数据,然后整个 条块写入存储集群,实现对存储集群的完全写。
[0019] 在写数据地址转换和对齐写数据过程中,首先引入虚拟地址、物理地址的定义。虚 拟地址是应用程序发来的读写请求地址;物理地址是数据在存储集群存储空间内的实际地 址。地址转换过程实现虚拟地址到物理地址的映射,即将非顺序(可能部分顺序)的虚拟 地址映射为连续的物理地址,并记录映射关系到地址转换表。经过地址转换后,写操作在物 理地址空间内完全顺序化。
[0020] 对齐写数据是对物理地址顺序化的写请求进行聚合或拆分,在内存缓存区内组织 成为与存储集群条块对齐的写请求,即1个写请求在存储集群上恰好覆盖1个或多个完整 的条块。为了防止掉电导致缓存区内数据丢失,采用非易失性RAM镜像内存缓存区内的写 请求。
[0021] 在本发明的区段映射中实现地址转换,以每次写操作的写区段为单位进行地址映 射,主要数据结构如下。
[0022] 1)映射元数据:开多式为(Vistart,Pistart,Leni,next),描述一个映射区段,Vistart, PistartAeivnext分别为映射区段i的虚拟起始地址、物理起始地址区段长度和相邻映射元 数据索引,外存数据结构简称元数据;
[0023] 2)映射存储区:外存中映射元数据的存储区段;
[0024] 3)地址转换表:记录每个虚拟地址对应的元数据索引(index),外存数据结构。
[0025] 地址转换时,先根据虚拟地址从地址转换表获得元数据索引,然后在映射存储区 由索引值获得元数据,并根据元数据进行区段地址转换。
[0026] 地址转换时可以从虚拟区段(Vstart,VEnd)中的Vsta^ljVEnd,其中Vstart为虚拟区段 的虚拟起始地址,ViEnd为虚拟区段的虚拟结束地址,根据虚拟地址逐个查询,最坏情况是查 询所有块的虚拟地址。
[0027] 为了进一步提高地址转换效率,可以考虑引入LSM树进行映射区段查询。在内存 中建立映射元数据的LSM树,用(ViStart,ViEnd,pimrta)表示叶子节点,其中Vstart为区段i的虚 拟起始地址,ViEnd为区段i的虚拟结束地址,pimeta是指向元数据(ViStal^PistartAeivnext) 的指针(已读入内存)。
[0028] 父节点的关键字是所有子树中的最大关键字,每个叶子节点只包含两个关键字, 表示一个顺序区段。查找时如果查找值位于某个区段则查找成功,否则可由其父节点的关 键字,确定其相邻区段,映射按虚拟地址由低到高的顺序排列在链表中(由映射插入规则, 虚拟区段不会相交)。
[0029] 设请求k的虚拟地址区段为(Vkstart,VkEnd),利用LSM树查询映射区段的过程如下: [0030] 1)分别查找Vkstart,VkEnd在LSM树中的位置;
[0031] 2)将Vkstart,VkEnd之间所有存在的映射作为要查找的映射。
[0032] 为了防止LSM树过大,优选地可设定LSM树的最大节点数,当超过该最大节点数时 便构建一棵新的LSM树,查找时先根据虚拟地址确定所在的LSM树再进行查找。
[0033] 在数据写入请求对齐方面,顺序数据存储中为了实现对存储集群的完全写,需要 运行一个对齐写请求的驱动程序,主要包括2个线程和1个写请求队列,2个线程分别是接 收和发送线程。
[0034] 1)接收线程:监控和接收应用程序发送给存储集群的写请求,首先进行上述地址 转换,转换为物理空间内连续的写请求,并将其加入到写请求队列中。
[0035] 2)发送线程:当写请求队列不为空时从写请求队列中取出并处理写请求。
[0036] 首先,需要获取存储集群的参数,包括条块单位、成员磁盘数,再由条块单位乘以 成员磁盘数,获得条块大小。可通过读取存储集群配置文件获得条块单位和成员磁盘数。
[0037] 设写请求表示为(buf,cnt,off
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1