[发明专利]一种基于SCST的缓存设计方法在审
申请号: | 201510135293.9 | 申请日: | 2015-03-26 |
公开(公告)号: | CN104750433A | 公开(公告)日: | 2015-07-01 |
发明(设计)人: | 张凡凡;陈乃阔;吴登勇;李保来 | 申请(专利权)人: | 浪潮集团有限公司 |
主分类号: | G06F3/06 | 分类号: | G06F3/06;G06F12/08 |
代理公司: | 济南信达专利事务所有限公司 37100 | 代理人: | 姜明 |
地址: | 250101 山东*** | 国省代码: | 山东;37 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 scst 缓存 设计 方法 | ||
技术领域
本发明提供了一种基于SCST的缓存设计方法,用于服务器存储领域,主要涉及多路控制器存储。
背景技术
随着计算机技术、网络技术的快速发展,对于数据存储的可靠性也逐渐得到了重视。现在的存储方式多采用价格较为磁盘组合成为巨大容量的磁盘组,配合数据分散排列的设计,将数据分割为不同的区段,分别进行存储,从而构成了磁盘阵列。这样系统的可靠性瓶颈为磁盘阵列控制器,目前的方式可以采用多路磁盘阵列控制器共享磁盘阵列的方式,这样既可以增加阵列系统的可靠性,又可以通过多路控制器对外进行数据存储服务,提高了存储效率。
现有的基于磁盘阵列存储系统主要是LIO和SCST两种方式,scst是一款开源的企业级ISCSI TARGET系统,SCST经常被用在网络存储架构中。SCST可以作为SCSI目标端中间层子系统作为模块加入到Linux内核中, SCST 为不同类型的目标端驱动程序提供统一的接口,屏蔽不同类型驱动程序的差异性,便于多种目标端驱动程序以统一的方式和底层各种存储设备的连接。SCST的核心模块处于 Linux 存储结构的块设备层之上。SCST支持多种I/O模式,常用的方式为BlockIO和FileIO两种模式。其中,FileIO模式,允许使用文件系统上的文件或者块设备做为虚拟的 SCSI 设备,该模式可以充分利用 Linux 系统的缓存功能;Block IO 模式,绕开系统的 page-缓存直接与块设备进行Block IO。
发明内容
为了解决该问题,本文提出了一种基于SCST的缓存设计方法。本发明通过缓存机制来缓存系统 I/O 数据,由于是块 IO 模式可以绕开文件系统的处理路径,减少 I/O 路径上的额外处理,满足海量阵列存储系统的吞吐量需求。可以通过SCSI协议对对外提供服务,并且缓存数据通过socket接口对外进行备份,保证了数据安全。
本发明用的 SCST 的 BlockIO 模式来处理 I/O 请求的。通过缓存机制来缓存系统 I/O 数据,由于是Block IO 模式可以绕开文件系统的处理路径,减少 I/O 路径上的额外处理,满足海量阵列存储系统的吞吐量需求。本发明主要设计SCST缓存区的数据结构,解决本地Block IO数据存储,并可以按照结构将数据进行读写,将数据备份至其他控制器中。
本发明的技术方案是:
i.当SCST模块启动时,首先对缓存区基树进行初始化,建立根节点和子节点进行初始化。
ii.当发送端将数据发送至BlockIO时,将数据缓存到缓存区,将缓存区指针保存到基树中。随着缓存数据的增多,需要增加子节点层数,并将下一层的指针保存至上一层子节点中。
iii.队列中对叶子节点结构体进行调度管理,将数据写回至硬盘中。
iv.刷新硬盘的策略分为两种,第一是基于缓存容量;第二是定时刷新。
本发明的主要目的在于,提供一种基于SCST的缓存区数据结构和刷新功能设计,将该模块与SCST结合,可以实现Block IO的数据缓存,该方案满足系统吞吐量需求。该方案可以用于服务器存储领域,并且可以通过socket进行数据的备份。缓存区设计包括三个部分,第一是数据结构设计;第二是缓存区存储,第三是刷新策略设计。
Block IO数据结构设计
SCST缓存以控制器主机的主存为存储器。缓存块大小按照内存页面的 4KB 大小设计,缓存块由一个内存页组成。一个缓存块的内容是磁盘上一个逻辑块内容在内存中的映射,缓存块与磁盘逻辑块构成一一映射关系。由于磁盘中一个扇区的大小无法与缓存块形成有效的一一映射关系。因此,需要将缓存块和磁盘扇区逻辑映射关系和大小映射统一,因此将N个连续的磁盘扇区组成一个磁盘逻辑块。这样发起端的SCSI命令可以通过中间层以后形成SCST命令,包含有磁盘逻辑块信息。通过磁盘逻辑块在逻辑上与缓存块一一对应,因此可以将写入磁盘逻辑块的信息保存到缓存块中。
缓存区需要同时保存未写入磁盘的数据和已写入磁盘的数据(加快文件读)。因此,缓存块的逻辑组织采用基树(Radix tree)的方式实现缓存块的快速查找索引,通过树形设计可以动态增减缓存容量。基数上设置标志位确定数据是否写入硬盘。缓存块之间再通过队列来便于插入、删除和调度等管理。
LINUX基树分为根节点和子节点,根节点用于保存树的基本信息并指向第一层的子节点。每个子节点有若干个指针指向数据或其他子节点,可以通过扩大子节点层数将更多的数据保存到基树,完全可以满足存储容量的需求。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浪潮集团有限公司,未经浪潮集团有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510135293.9/2.html,转载请声明来源钻瓜专利网。