CN104750433A - 一种基于scst的缓存设计方法 - Google Patents
一种基于scst的缓存设计方法 Download PDFInfo
- Publication number
- CN104750433A CN104750433A CN201510135293.9A CN201510135293A CN104750433A CN 104750433 A CN104750433 A CN 104750433A CN 201510135293 A CN201510135293 A CN 201510135293A CN 104750433 A CN104750433 A CN 104750433A
- Authority
- CN
- China
- Prior art keywords
- data
- scst
- hard disk
- cache
- buffer
- 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
Abstract
本发明提供一种基于SCST的缓存设计方法,涉及多路控制器存储领域,当SCST模块启动时,首先对缓存区基树进行初始化,建立根节点和子节点进行初始化;当发送端将数据发送至BlockIO时,将数据缓存到缓存区,将缓存区指针保存到基树中;随着缓存数据的增多,需要增加子节点层数,并将下一层的指针保存至上一层子节点中;队列中对叶子节点结构体进行调度管理,将数据写回至硬盘中;刷新硬盘的策略分为两种,第一是基于缓存容量;第二是定时刷新。可以通过SCSI协议对对外提供服务,并且缓存数据通过socket接口对外进行备份,保证了数据安全。
Description
技术领域
本发明提供了一种基于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基树分为根节点和子节点,根节点用于保存树的基本信息并指向第一层的子节点。每个子节点有若干个指针指向数据或其他子节点,可以通过扩大子节点层数将更多的数据保存到基树,完全可以满足存储容量的需求。
叶子节点定义为保存缓存块信息的节点,因此,需要对页内数据进行准确定位并包含用于缓存操作的自旋锁。
缓存区存储
SCST核心层将发送端发送的数据传递至相应的处理句柄,前述对数据结构的设计,将N个连续的磁盘扇区组成一个磁盘逻辑块,大小与缓存块相同。因此,将对磁盘逻辑块的存储转变成对缓存区的存储。
当数据进入SCST中,通过指令将数据分成若干个缓存块,并将缓存块指针保存到基树上,同时将该信息保存到队列中用于IO调度。
刷新策略
将缓存区数据刷新至硬盘中,既要保证缓存数据不能大于缓冲区大小,又要使得缓冲数据不能长时间占用缓冲区,影响硬盘数据完整性。因此,缓存区数据需要刷写到硬盘中,实行两种不同的刷新策略。第一,判断缓存数据容量大于开辟缓存区空间,将若干开辟缓存区空间内的缓存数据刷写到硬盘中。第二,定时刷新策略,设置定时时间,将缓存区空间内的数据全部刷写到硬盘中。
附图说明
图1是SCST结构和BlockIO 缓存管理模块位置图。
图2是缓存刷新策略示意图。
具体实施方式
下面对本发明的内容进行更加详细的阐述:
本发明的无驱动加解密认证通信方案,其具体的实施方式如下:
i.当SCST模块启动时,首先对缓存区基树进行初始化,建立根节点和子节点进行初始化。
ii.当发送端将数据发送至BlockIO时,将数据缓存到缓存区,将缓存区指针保存到基树中。随着缓存数据的增多,需要增加子节点层数,并将下一层的指针保存至上一层子节点中。
iii.队列中对叶子节点结构体进行调度管理,将数据写回至硬盘中。
iv.刷新硬盘的策略分为两种,第一是基于缓存容量;第二是定时刷新。
如图1所示,将该模块与SCST结合,可以实现Block IO的数据缓存,该方案满足系统吞吐量需求。该方案可以用于服务器存储领域,并且可以通过socket进行数据的备份。缓存区设计包括三个部分,第一是数据结构设计;第二是缓存区存储,第三是刷新策略设计。
如图2所示,将缓存区数据刷新至硬盘中,既要保证缓存数据不能大于缓冲区大小,又要使得缓冲数据不能长时间占用缓冲区,影响硬盘数据完整性。因此,缓存区数据需要刷写到硬盘中,实行两种不同的刷新策略。第一,判断缓存数据容量大于开辟缓存区空间,将若干开辟缓存区空间内的缓存数据刷写到硬盘中。第二,定时刷新策略,设置定时时间,将缓存区空间内的数据全部刷写到硬盘中。
Claims (5)
1.一种基于SCST的缓存设计方法,其特征在于,
i.当SCST模块启动时,首先对缓存区基树进行初始化,建立根节点和子节点进行初始化;
ii.当发送端将数据发送至BlockIO时,将数据缓存到缓存区,将缓存区指针保存到基树中;随着缓存数据的增多,需要增加子节点层数,并将下一层的指针保存至上一层子节点中;
iii.队列中对叶子节点结构体进行调度管理,将数据写回至硬盘中;
iv.刷新硬盘的策略分为两种,第一是基于缓存容量;第二是定时刷新。
2.根据权利要求1所述的方法,其特征在于,SCST缓存以控制器主机的主存为存储器。
3.根据权利要求2所述的方法,其特征在于,当数据进入SCST中,通过指令将数据分成若干个缓存块,并将缓存块指针保存到基树上,同时将该信息保存到队列中用于IO调度。
4.根据权利要求1所述的方法,其特征在于,基树分为根节点和子节点,根节点用于保存树的基本信息并指向第一层的子节点;每个子节点有若干个指针指向数据或其他子节点,可以通过扩大子节点层数将更多的数据保存到基树。
5.根据权利要求1所述的方法,其特征在于,基于缓存容量策略,判断缓存数据容量大于开辟缓存区空间,将若干开辟缓存区空间内的缓存数据刷写到硬盘中;定时刷新策略,设置定时时间,将缓存区空间内的数据全部刷写到硬盘中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510135293.9A CN104750433A (zh) | 2015-03-26 | 2015-03-26 | 一种基于scst的缓存设计方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510135293.9A CN104750433A (zh) | 2015-03-26 | 2015-03-26 | 一种基于scst的缓存设计方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104750433A true CN104750433A (zh) | 2015-07-01 |
Family
ID=53590196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510135293.9A Pending CN104750433A (zh) | 2015-03-26 | 2015-03-26 | 一种基于scst的缓存设计方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104750433A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117307A (zh) * | 2015-09-25 | 2015-12-02 | 北京飞杰信息技术有限公司 | 数据实时备份方法及系统 |
CN105138276A (zh) * | 2015-07-14 | 2015-12-09 | 苏州科达科技股份有限公司 | 数据储存方法及数据储存系统 |
CN105183370A (zh) * | 2015-08-13 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种实现双控制器通信的通信方法及通信模型 |
CN106210045A (zh) * | 2016-07-11 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种scst及其数据处理方法 |
CN108897698A (zh) * | 2018-06-29 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种文件数据块寻址方法、系统及设备和存储介质 |
CN109492005A (zh) * | 2018-11-07 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种b+树读缓存方法及相关装置 |
CN113590520A (zh) * | 2021-06-15 | 2021-11-02 | 珠海一微半导体股份有限公司 | Spi系统自动写入数据的控制方法及spi系统 |
CN116540943A (zh) * | 2023-05-19 | 2023-08-04 | 合芯科技有限公司 | 基于分布式文件系统的iscsi服务生成方法、系统及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1690944A (zh) * | 2004-04-21 | 2005-11-02 | 华为技术有限公司 | 一种磁盘阵列系统 |
CN101739220A (zh) * | 2009-02-25 | 2010-06-16 | 浪潮电子信息产业股份有限公司 | 一种多控制器存储阵列的设计方法 |
CN103019893A (zh) * | 2012-11-16 | 2013-04-03 | 华中科技大学 | 一种多盘容错的二维混合盘raid4系统架构及其读写方法 |
-
2015
- 2015-03-26 CN CN201510135293.9A patent/CN104750433A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1690944A (zh) * | 2004-04-21 | 2005-11-02 | 华为技术有限公司 | 一种磁盘阵列系统 |
CN101739220A (zh) * | 2009-02-25 | 2010-06-16 | 浪潮电子信息产业股份有限公司 | 一种多控制器存储阵列的设计方法 |
CN103019893A (zh) * | 2012-11-16 | 2013-04-03 | 华中科技大学 | 一种多盘容错的二维混合盘raid4系统架构及其读写方法 |
Non-Patent Citations (1)
Title |
---|
杨巍: "采用基树的磁盘阵列Cache技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105138276A (zh) * | 2015-07-14 | 2015-12-09 | 苏州科达科技股份有限公司 | 数据储存方法及数据储存系统 |
CN105138276B (zh) * | 2015-07-14 | 2018-05-18 | 苏州科达科技股份有限公司 | 数据储存方法及数据储存系统 |
CN105183370B (zh) * | 2015-08-13 | 2018-07-06 | 浪潮(北京)电子信息产业有限公司 | 一种实现双控制器通信的通信方法及通信模型 |
CN105183370A (zh) * | 2015-08-13 | 2015-12-23 | 浪潮(北京)电子信息产业有限公司 | 一种实现双控制器通信的通信方法及通信模型 |
CN105117307A (zh) * | 2015-09-25 | 2015-12-02 | 北京飞杰信息技术有限公司 | 数据实时备份方法及系统 |
CN105117307B (zh) * | 2015-09-25 | 2018-06-19 | 北京飞杰信息技术有限公司 | 数据实时备份方法及系统 |
CN106210045A (zh) * | 2016-07-11 | 2016-12-07 | 浪潮(北京)电子信息产业有限公司 | 一种scst及其数据处理方法 |
CN108897698A (zh) * | 2018-06-29 | 2018-11-27 | 郑州云海信息技术有限公司 | 一种文件数据块寻址方法、系统及设备和存储介质 |
CN108897698B (zh) * | 2018-06-29 | 2021-10-29 | 郑州云海信息技术有限公司 | 一种文件数据块寻址方法、系统及设备和存储介质 |
CN109492005A (zh) * | 2018-11-07 | 2019-03-19 | 郑州云海信息技术有限公司 | 一种b+树读缓存方法及相关装置 |
CN113590520A (zh) * | 2021-06-15 | 2021-11-02 | 珠海一微半导体股份有限公司 | Spi系统自动写入数据的控制方法及spi系统 |
CN113590520B (zh) * | 2021-06-15 | 2024-05-03 | 珠海一微半导体股份有限公司 | Spi系统自动写入数据的控制方法及spi系统 |
CN116540943A (zh) * | 2023-05-19 | 2023-08-04 | 合芯科技有限公司 | 基于分布式文件系统的iscsi服务生成方法、系统及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104750433A (zh) | 一种基于scst的缓存设计方法 | |
CN107967124B (zh) | 一种分布式持久性内存存储系统及方法 | |
CN101840308B (zh) | 一种分级存储系统及其逻辑卷管理方法 | |
CN104903872B (zh) | 用于自适应持久化的系统、方法和接口 | |
US9298384B2 (en) | Method and device for storing data in a flash memory using address mapping for supporting various block sizes | |
CN102598020B (zh) | 用于改进的数据去重的装置、系统及方法 | |
CN102521147B (zh) | 一种使用高速非易失介质做缓存的管理方法 | |
US8645610B2 (en) | Organizing and managing a memory blade with super pages and buffers | |
CN107967221A (zh) | 具有非易失性存储器的计算系统及其操作方法 | |
US20160253123A1 (en) | NVMM: An Extremely Large, Logically Unified, Sequentially Consistent Main-Memory System | |
US20120290786A1 (en) | Selective caching in a storage system | |
CN104395904A (zh) | 高效的数据对象存储和检索 | |
CN104765575A (zh) | 信息存储处理方法 | |
US20110283046A1 (en) | Storage device | |
KR20140112717A (ko) | 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법 | |
US11755491B2 (en) | Mapping supporting non-sequential writes at sequentially-written memory devices | |
WO2017025039A1 (zh) | 一种面向闪存存储的数据访问方法及其装置 | |
CN107832423B (zh) | 一种用于分布式文件系统的文件读写方法 | |
CN104239234B (zh) | 一种高效的本地缓存管理及读写方法 | |
CN104765574A (zh) | 数据云端存储方法 | |
JP2015026379A (ja) | 磁気ランダムアクセスメモリ(mram)を使用する記憶デバイスのメモリアレイのコントローラ管理 | |
US9558124B2 (en) | Data storage system with passive partitioning in a secondary memory | |
WO2021168020A1 (en) | Sequential read optimization in a memory sub-system that programs sequentially | |
CN109739696B (zh) | 一种双控存储阵列固态硬盘缓存加速方法 | |
JP2020502606A (ja) | 記憶動作待ち行列 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150701 |
|
WD01 | Invention patent application deemed withdrawn after publication |