CN1545033A - Fc-san存储子系统的lun cache方法 - Google Patents

Fc-san存储子系统的lun cache方法 Download PDF

Info

Publication number
CN1545033A
CN1545033A CNA2003101135328A CN200310113532A CN1545033A CN 1545033 A CN1545033 A CN 1545033A CN A2003101135328 A CNA2003101135328 A CN A2003101135328A CN 200310113532 A CN200310113532 A CN 200310113532A CN 1545033 A CN1545033 A CN 1545033A
Authority
CN
China
Prior art keywords
read
data
lun
cache
submodule
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.)
Granted
Application number
CNA2003101135328A
Other languages
English (en)
Other versions
CN1279455C (zh
Inventor
舒继武
郑纬民
刘天淼
胡长军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tsinghua University
Original Assignee
Tsinghua University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tsinghua University filed Critical Tsinghua University
Priority to CN 200310113532 priority Critical patent/CN1279455C/zh
Publication of CN1545033A publication Critical patent/CN1545033A/zh
Application granted granted Critical
Publication of CN1279455C publication Critical patent/CN1279455C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

FC-SAN存储子系统的LUN CACHE方法属于存储区域网络存储技术领域,其特征在于它是由逻辑单元号高速缓存LUN CACHE模块运行在FC-SAN中I/O处理节点的嵌入式操作系统上来实现的;它使用改进的CACHE替换算法提高高速缓存利用率,使得读写操作能在I/O处理节点中高速缓冲地完成,而不是发送到具体的SCSI设备;使用延迟写的技术使数据更新操作能在后台完成,极大的提高了用户的响应时间;使用读写锁的机制保证多用户之间共享数据的一致性;良好的接口设备设计使得LUN CACHE对用户完全透明。经测试,读写操作性能比不用LUN CACHE有极大提高。

Description

FC-SAN存储系统的LUN CACHE方法
技术领域
FC-SAN存储系统的逻辑单元号高速缓存LUN CACHE方法属于光纤通道——存储区域网络中存储技术的领域
背景技术
在数据存储领域,相对于CPU性能和内存容量以摩尔定律的提高,作为外存的主要设备--硬磁盘却由于机械运动的本质导致性能提高非常有限。与此同时,磁盘存储的密度却每年提高约60%,这一点甚至高于CPU和内存的提高速度。针对容量不断扩大、速度增加非常有限的情况,目前磁盘上全部具有MB级的缓存子系统,以提高磁盘的性能。研究表明,磁盘上的高速缓存能极大的提高磁盘的读写性能。
我们提出的LUN CACHE方法不同于以往的技术,不是将用户发出的命令直接交给磁盘执行,而是将该命令缓存在FC-SAN的I/O节点之上,并根据缓冲区策略分治执行。
发明内容
本发明的目的在于在不降低数据一致性和可靠性的同时提高FC-SAN存储系统的响应速度。本方法的核心在于:使用改进的Cache替换算法提高Cache利用率,使得读写操作能够在Cache中完成,而不是发送到具体的SCSI设备;使用延迟写的技术使得数据更新操作能够在后台完成,极大的提高了用户的响应时间;使用读写锁的机制保证多用户之间共享数据的一致性;以及良好的接口设计使得LUN CACHE完全对用户透明。
本发明的特征在于:它是一种光纤通道——存储区域网络FC-SAN环境下运行在I/O处理节点上的基于逻辑单元号LUN的高速缓存Cache方法,它是由LUN CACHE模块运行在FC-SAN中I/O处理节点的嵌入式操作系统之上来实现的,LUN CACHE模块的结构如下:
接口子模块:它是模拟小型计算机系统接口,与目标模拟器中间层STML同I/O子系统的接口,它设有:
(1)与中间层STML模块的接口,是通过注册由STML模块定义的数据结构Scsi_Target_Template来实现的。
(2)与I/O子系统的接口,是通过调用I/O子系统中的scsi_do_req来实现的。共享锁子模块:设有如下二种逻辑单元号LUN读写锁:
(1)公共的READER-WRITER LOCK,即LUN读写锁:BUFFER LOCK;它是一种当接口子模块从STML模块得到SCSI命令,转发给缓冲区管理子模块之前,必须首先从共享锁子模块获得的逻辑单元号LUN读写锁,否则将转入等待状态。
(2)为每个固定大小的数据块设定的READER-WRITER LOCK,即I/O读写锁,它是一种当缓冲区管理子模块发送给I/O子系统SCSI命令进行实际的物理磁盘存取之前,必须首先从共享锁子模块出获得的I/O读写锁,否则也将转入等待状态。
相应于不同的逻辑单元号LUN读写锁表示为LUN id,读写锁是使用读写锁算法来获得的。
缓冲区管理子模块:它为每一个逻辑单元号LUN建立一个哈希表,把所有STML模块分发的SCSI命令所涉及到的数据保存在LUN CACHE的缓冲区中,它接受来自的STML模块的SCSI命令,从缓冲区或I/O子系统中读写数据。
数据同步子模块:它根据用户访问的频度更新缓冲区的内容,同时把缓冲区中的数据更新到磁盘系统中。
缓冲区数据的更新是在每次LUN CACHE进行实际的I/O读写操作后,用最近最久未使用算法实现的。
磁盘系统数据的更新也在每次LUN CACHE进行缓冲区读写操作后在后台定时的把缓冲区的数据更新到磁盘系统中去的。
初始化和退出子模块:它在LUN CACHE加载时进行启动工作,卸载时进行退出工作,同时申请并初始化内存数据结构。
含有上数子模块的STML模块根据上述LUN CACHE方法依次按一下步骤运行在I/O处理节点的嵌入式操作系统上:
(1)SCSI目标模拟器STML向接口子模块发出SCSI操作;
(2)接口子模块从STML得到SCSI命令后,在转发给缓冲区管理子模块之前,向共享锁子模块申请LUN读写锁,若从共享锁子模块出获得LUN读写锁,便向缓冲区管理子模块发送SCSI命令,否则转入等待状态。
(3)缓冲区管理子模块收到来自STML的SCSI命令,首先从SCSI命令中获取命令读写数据的地址,再根据地址进行缓冲区查找操作,若命令所需要的数据在缓冲区中,则直接在缓冲区中读写数据。读写完毕,把数据结果返回给SCSI目标模拟器,同时,数据同步子模块按规定的时间间隔把缓冲区中的数据更新到磁盘系统中;若在缓冲区中找不到所需的数据,则执行以下步骤。
(4)缓冲区子模块便向共享锁子模块申请I/O读写锁,若从共享锁子模块处得不到I/O读写锁,便转入等待状态;否则执行一下步骤。
(5)缓冲区管理子模块申请到I/O读写锁,便通过接口子模块把SCSI命令传送给SCSI I/O子系统并获得数据,数据读写完毕,便把结果数据返回给SCSI目标模拟器;同时数据同步子模块用最新最久未使用算法去更新缓冲区中的数据。
(6)结束。
所述的读写锁算法,它是通过不同粒度的READER-WRITER锁来实现的:
READER-WRITER锁的数据结构为:
struct RWLock{
struct semaphore rw_sem;//信号量
spinlock_t rw_spin_lock;//共享锁
int flag;//LUN读写锁或者是I/O读写锁位
Target_Scsi_Cmnd*cmnd;//SCSI命令
unsigned int bgblock;//数据段开始长度
unsigned int length;//数据段长度
}
所述的最近最久未使用的算法,它为缓冲区的每个数据块和每个逻辑单元号LUN各设置一个访问次数计数和访问时间标记,每次数据操作都会更新相应的访问次数计数和访问时间标记,当需要更新缓冲区时,它从缓冲区中选出离当前一段时间内访问次数较少,并且所在的逻辑单元号访问次数最少的数据块予以删除。
测试证明:写操作性能大约提高4倍,读操作性能随着负载的增加而提高,到达一定程度后,与没有CACHE的系统接近。
附图说明
图1.海量网络存储器设备的硬件子系统体系结构,Mytinet是一种高速互联技术。
图2.I/O节点硬件子系统模块结构
图3.海量存储系统的模块结构示意图。其中,STML是一个基于软件的可动态调整性能的SCSI命令和任务处理模块。
图4.LUN CACHE的模块结构示意图。
图5.LUN CACHE系统程序流程图。
图6.有无LUN CACHE的读操作性能比较图。
图7.有无LUN CACHE的写操作性能比较图。
具体实施方式
本发明的硬件环境为清华大学海量网络存储设备(简称为TH-MNSM),具体运行在TH-MNSM的I/O处理节点之上。清华大学海量网络存储设备的硬件结构如图1所示。
它主要包括以下部件:
(1)主机节点(HNODE)
控制中心,对系统进行监测、备份等管理。主机节点的硬件子系统包括INTEL CPU、标准的PCI总线、SCSI接口卡、标准的以太网接口卡(HBA)、Myrinet接口卡、硬盘。主机节点可以运行WINDOWS 2000等多种操作系统和WEB服务器软件系统。
(2)I/O处理节点(INODE)
海量网络存储器设备最基本、最重要的部分。主要功能包括数据存储、光纤通道协议处理、SCSI协议处理。I/O处理节点由2-4个INTEL XEON处理器,512M内存、基于PCI总线的主板、Myrinet接口卡、FLASH DISK、光纤通道接口卡、SCSI接口卡组成,具有较高性能。
(3)高密度磁盘阵列(HARRAY)
每个I/O节点采用标准的SCSI卡直接连接目前商用的磁盘阵列,每个I/O节点最大可以连接8个磁盘阵列,最大支持150TB的容量。
(4)基于Myrinet的互联网络
是I/O处理节点与主机节点相互连接的系统互联部件,基于Myrinet的互联网络取代了传统设计中的高速背板。该方式具有经济、可靠等优点。
(5)电源子系统
采用N+1方式的商业化电源。
主机节点采用商业化商用PC机如联想天瑞3130,因此它的结构同PC机器结构相同。每个I/O处理节点的硬件子系统的模块结构如图2所示。
每个I/O节点的主板采用商用的服务器主板如Supermicro(超微)公司X5DA8、X5DAE主板等,所有的CPU采用INTEL公司XEON系列CPU。每个I/O节点包括2个商用的光纤通道HBA,如QLOGIC公司的QLA2310F系列,它们之间可以实现容错备份或者捆绑功能。每个I/O节点包括2-3个商用的SCSI接口卡,如ADAPTEC公司的7XXX系列接口卡,他们连接高密度的磁盘阵列子系统如ISD PinnacleRAID 500。电源子系统采用目前标准的、商用的N+1方式电源如山特公司的3C3系列,FLASH DISK负责存储各种软件,如M-SYSTEMS公司的DOC2000系列。Myrinet接口卡采用Myricom公司的LANai9系列接口卡。
LUN CACHE运行在海量网络存储器中I/O处理节点的嵌入式操作系统之上,海量网络存储器的软件结构示意图及LUN CACHE所在的I/O逻辑位置如图3所示。
根据LUN CACHE在海量网络存储器软件结构的位置,结合海量网络存储器嵌入式操作系统的系统结构特点,我们设计了LUN CACHE的软件结构。如图4所示,LUN CACHE的软件结构包括了:缓冲区管理子模块,共享锁子模块,数据同步子模块,接口子模块,初始化和退出子模块。具体模块的结构及作用详述如下:
接口子模块分为两个部分:
(1)与SCSI目标器中间层的接口。
(2)与I/O子系统的接口。
接口子模块的目的是为了保证LUNCACHE系统不影响整个FC-SAN的I/O路径,使LUNCACHE对用户透明,不影响用户程序的正常运行。在没有LUN CACHE的FC-SAN中,SCSI目标器中间层是与I/O子系统进行交互的,因此LUN CACHE中接口子模块的主要功能就是模拟SCSI目标器中间层与I/O子系统的接口。
与SCSI目标器的接口是通过注册SCSI目标器定义的数据结构Scsi_Target_Template来实现的:
#defineISP_TARGET{\
name:″ISP″,\
detect:isp_detect,\
release:isp_release,\
xmit_response:isp_xmit_response,\
rdy_to_xfer:isp_rdy_to_xfer,\
task_mgmT_fn_done:isp_task_mgmt_done,\
report_aen:isp_report_aen \
}
Scsi_Target_Template my_template=ISP_TARGET;
与I/O子系统的接口是通过调用scsi_do_req函数来实现的,该函数由I/O子系统提供:
void scsi_do_req(Scsi_Request*SRpnt,const void*cmnd,void*buffer,unsigned bufflen,void(*done)(Scsi_Cmhd*),int timeout,int retries)
其中Scsi_Request是Linux定义的数据结构,用来存储SCSI命令,buffer是返回值所填的数据区,bufflen表示该数据区有效数据的长度,done函数是返回函数,当I/O子系统处理完该SCSI命令以后,调用done函数返回给LUN CACHE系统。
FC-SAN是一个多用户共享的存储设备,在增加LUN CACHE后,用户不仅共享磁盘系统,还同时共享Cache系统,为了使系统能正常工作,就必须保证用户数据的一致性。为此我们提出了读写锁机制,与其他的共享锁机制如Sistina公司的GFS中的DLOCK机制不同,我们的读写锁不需要用户增加新的SCSI命令,同时因为采用阻塞机制,不会像DLOCK一样会产生SPIN-LOCK的问题,而且具有较好的可扩展性。
当接口子模块从STML得到SCSI命令,转发给缓冲区管理子模块之前,必须首先从共享锁子模块处获得LUN读写锁,否则将转入等待状态。而当缓冲区管理子模块发送给I/O子系统SCSI命令进行实际物理磁盘存取之前,必须首先从共享锁子模块处获得I/O读写锁,否则也将转入等待状态。获得读写锁的算法见算法A,将在下面具体叙述。
由于缓冲区管理子模块的缓冲区操作主要为内存操作,速度比较快,而实际物理磁盘的存取操作相对很慢,因此对于LUN读写锁与I/O读写锁我们使用了不同的粒度级别的共享锁控制。对于LUN读写锁,我们使用一个公共的READER-WRITER LOCK:BUFFER LOCK进行控制;对于I/O读写锁,我们给每个固定大小的数据块(默认值为16M)设定一个READER-WRITER LOCK。
由于FC-SAN的各个LUN之间的磁盘空间是独立的,各个LUN之间不会产生读写相关的操作,结合这一特点,我们对读写锁进一步细化,给每个读写锁加上LUN id属性,加快了读写锁互斥的判断。
算法A读写锁算法
此算法的核心在于通过不同粒度的READER-WRITER锁,为缓冲区操作和I/O操作提供互斥机制,并且结合LUN判断锁是否互斥。
由于缓冲区操作速度较快,所以采用单一的READER-WRITER锁,以降低存取锁的时间消耗;而I/O操作相对较慢,存取锁的时间与之相比可以忽略,为此针对每个数据块建立一个READER-WRITER锁。
对于READER-WRITER锁,存在以下原则:任何一个锁支持多个SCSI命令同时读,而一个锁仅仅存在一个在线写的SCSI命令。但是每个锁允许多个读写SCSI命令等待执行,如果存在多个SCSI等待命令,则写命令优先于任何一个读命令。
由于FC-SAN中各LUN之间磁盘空间独立,因此对于不同LUN之间的READER-WRITER锁,它们也是完全独立的,即不同的LUN对应不同的锁空间,它们之间不存在交互的关系。
在具体实现上,算法维护一个READER-WRITER锁的数组,根据上面所述READER-WRITER锁的原则决定一个SCSI命令是否获得相应的读写锁,如果未获得则放入等待线程中,直到获得读写锁为止才能进行下一步的操作。
在实际运行中,此算法很好的保证了用户数据的唯一性,同时READER-WRITER锁保证了读操作可以尽可能的并行执行,提高了系统的性能。
缓冲区管理子模块是整个LUN CACHE的核心,所有STML模块分发的SCSI命令所涉及到的数据都可以根据特定的管理策略保存在LUN CACHE的缓冲区中。
缓冲区管理子模块接受来自接口子模块的的SCSI命令,首先从SCSI命令中获取命令读写数据的地址,然后根据地址进行缓冲区查找操作,如果命令所需要的数据在缓冲区中,则直接在缓冲区中读写数据,否则将SCSI命令转发给I/O子系统。
为了加快缓冲区的查找过程,缓冲区使用哈希表组织,同时针对FC-SAN的不同LUN之间磁盘空间相互独立这一特点,对于不同LUN,为每个LUN建立一个哈希表,这样可以大大的提高查找缓冲区的速度。
数据同步子模块的目的是根据用户访问的频度更新缓冲区的内容,使得LUNCACHE能够保证较高的Cache命中率;同时定时将缓冲区中的数据更新到磁盘系统中,保证用户数据的一致性。
每次LUN CACHE进行实际的I/O读写操作以后,都要根据最近最久未使用算法更新缓冲区,最近最久未使用算法的详细描述见算法B,将在下面详细叙述。
每次LUN CACHE进行缓冲区读写操作以后,都会导致缓冲区中的数据与实际磁盘中的数据不一致,因此需要在后台定时的将缓冲区中的数据更新到磁盘系统中,如果固定时间间隔已到,不管具体数据量的大小,都要执行磁盘写操作,这样可以较好的保持数据的一致性。由于更新操作是使用后台线程的方式运行,因此不会对I/O节点机的性能造成影响。
算法B最近最久未使用算法
此算法的核心在于通过对缓冲区中数据块访问次数的统计,结合该块所属LUN被访问的频度,决定该数据块是否继续保留在缓冲区中。
根据统计,用户一般的I/O操作大部分为连续的读写操作,并且一个数据块被相近的I/O操作所访问到的几率相对较大。因此如果一个数据块在较长时间内没有被访问到,那么为了提高缓冲区利用率,就可以将该数据块从缓冲区中删除,用最近被访问到的数据块来代替。
在FC-SAN中,不同LUN之间的磁盘空间是独立的。由于用户访问数据的连续性,连续访问同一LUN的可能性要比访问不同LUN的可能性要大。因此我们在决定一个数据块是否被删除的同时考虑到了LUN的信息,如果一个LUN在最近的访问中出现的次数比较多,则属于该LUN的数据块会被保留下来。
在具体实现上,算法为缓冲区的每个数据块和每个LUN保持一个访问计数和时间标记,每次数据操作都会更新相应的访问计数和时间标记。当需要更新缓冲区的时候,算法从缓冲区中选出离当前一段时间内访问次数较少,并且所在LUN访问次数最少的数据块删除。
此算法能够很好的保证缓冲区中数据的命中率,使得用户的大部分操作都能在缓冲区中执行,从而有效的减少了系统的响应时间。
初始化和退出子模块的主要任务是在LUN CACHE加载时进行启动化工作,卸载时进行退出工作。具体执行的任务包括:
(1)执行嵌入式系统加载/卸载模块时所必需执行的函数。
(2)申请并初始化内存数据结构。
(3)执行LUN CACHE模块与STML模块、I/O子系统接口所必需的函数。
LUN CACHE方法的程序流程图见图5。
本系统已经使用c语言编程实现,可以在在PC机上的Linux操作系统上运行。下面给出一个运行实例,以说明系统的执行过程。
实例一:
首先系统启动,加载LUN CACHE系统。
1.用户发出读命令M1。STML模块接收到读命令以后,通过接口子模块将命令M1传递给系统。
2.系统申请LUN读写锁,申请成功获得读写锁,然后进入缓冲区管理子模块。
3.缓冲区管理子模块查找缓冲区,发现缓冲区没有M1所需要的数据。
4.释放LUN读写锁,申请I/O读写锁。
5.申请I/O读写锁失败,进入等待队列。
6.经过等待M1获得I/O读写锁,通过接口函数将M1传送给底层的I/O子系统进行实际I/O读写锁。
7.底层I/O子系统通过接口函数将M1的结果数据返回给LUN CACHE系统。
8.释放I/O读写锁,并将M1的结果数据通过接口子模块返回给STML模块。
9.数据同步子模块定时根据最近最久未使用算法更新缓冲区。
实例二:
首先系统启动,加载LUN CACHE系统。
1.用户发出写命令M2。STML接收到写命令后,通过接口子模块将命令M2传递给系统。
2.系统申请LUN读写锁,申请未成功,进行等待。
3.共享锁子模块通知M2获得LUN读写锁。
4.缓冲区管理子模块查找缓冲区,发现缓冲区有M2所需要的数据。
5.直接往缓冲区内写入M2的数据。(执行命令M2)
6.释放LUN读写锁,将M2的结果通过接口子模块返回给STML模块。
7.数据同步子模块定时根据最近最久未使用算法更新缓冲区。
我们分别对用户的写操作和读操作在清华大学海量存储系统上进行了性能测试。测试环境如下:用户为32位安腾双CPU服务器,CPU主频为2.4G,用户的操作系统为Linux(Kernel2.4.18-3),挂接TH-MNSM海量存储系统。
读操作性能
测试结果如图6所示。图中纵轴表示响应时间,单位为ms,横轴表示I/O请求的大小。测试是在负载密集的情况下得到的。所示分别为使用了LUN CACHE的TH-MNSM系统和没有使用LUN CACHE的TH-MNSM系统的读性能。从图中可以看出,随着负载的增加,读性能就越高。当然,负载增加到一定程度以后,CACHE的作用逐渐减小,系统读的性能趋向于没有CACHE的系统读性能。
写操作性能
测试结果如图7所示。图中纵轴表示响应时间,单位为ms,横轴表示I/O请求的大小,单位为KB。从图中可以看出,LUN CACHE的存在极大的提高了系统写的性能,这是因为LUN CACHE总是尽可能将写操作缓冲在缓冲区内,然后通过后台线程更新数据。图中数据说明性能的提高大约在4倍左右。
本发明的主要特色如下:
(1)结合海量存储系统的体系结构特点,采用改进的缓存替换策略,提高了缓存的实际利用率,减少了实际I/O的操作。
(2)设计了不同粒度的读写锁及申请读写锁的算法。保证用户数据一致性的同时,充分提高了I/O操作的并发性,最大化数据读写性能。
(3)良好的接口设计使得整个系统对用户完全透明。
(4)在TH-MSNM的基础上无需增加任何新的硬件即可实现,节省了成本。

Claims (3)

1、FC-SAN存储系统的LUN CACHE方法,含有高速缓存方法CACHE,其特征在于:它是一种光纤通道——存储区域网络FC-SAN环境下运行在I/O处理节点上的基于逻辑单元号LUN的高速缓存Cache方法,它是由LUN CACHE模块运行在FC-SAN中I/O处理节点的嵌入式操作系统之上来实现的,LUN CACHE模块的结构如下:
接口子模块:它是模拟小型计算机系统接口,与目标模拟器中间层STML和I/O子系统的接口,它设有:
(1)与中间层STML模块的接口,是通过注册由STML模块定义的数据结构Scsi_Target_Template来实现的。
2)与I/O子系统的接口,是通过调用I/O子系统中的scsi_do_req来实现的。
共享锁子模块:设有如下二种逻辑单元号LUN读写锁:
1)公共的READER-WRITER LOCK,即LUN读写锁:BUFFER LOCK;它是一种当接口子模块从STML模块得到SCSI命令,转发给缓冲区管理子模块之前,必须首先从共享锁子模块获得的逻辑单元号LUN读写锁,否则将转入等待状态。
2)为每个固定大小的数据块设定的READER-WRITER LOCK,即I/O读写锁,它是一种当缓冲区管理子模块发送给I/O子系统SCSI命令进行实际的物理磁盘存取之前,必须首先从共享锁子模块出获得的I/O读写锁,否则也将转入等待状态。
相应于不同的逻辑单元号LUN读写锁表示为LUN id,读写锁是使用读写锁算法来获得的。
缓冲区管理子模块:它为每一个逻辑单元号LUN建立一个哈希表,把所有STML模块分发的SCSI命令所涉及到的数据保存在LUN CACHE的缓冲区中,它接受来自的STML模块的SCSI命令,从缓冲区或I/O子系统中读写数据。
数据同步子模块:它根据用户访问的频度更新缓冲区的内容,同时把缓冲区中的数据更新到磁盘系统中。
缓冲区数据的更新是在每次LUN CACHE进行实际的I/O读写操作后,用最近最久未使用算法实现的。
磁盘系统数据的更新也在每次LUN CACHE进行缓冲区读写操作后在后台定时的把缓冲区的数据更新到磁盘系统中去的。
初始化和退出子模块:它在LUN CACHE加载时进行启动工作,卸载时进行退出工作,同时申请并初始化内存数据结构。
含有上述子模块的STML模块根据上述LUN CACHE方法依次按一下步骤运行在I/O处理节点的嵌入式操作系统上:
(1)SCSI目标模拟器STML向接口子模块发出SCSI操作;
(2)接口子模块从STML得到SCSI命令后,在转发给缓冲区管理子模块之前,向共享锁子模块申请LUN读写锁,若从共享锁子模块出获得LUN读写锁,便向缓冲区管理子模块发送SCSI命令,否则转入等待状态。
(3)缓冲区管理子模块收到来自STML的SCSI命令,首先从SCSI命令中获取命令读写数据的地址,再根据地址进行缓冲区查找操作,若命令所需要的数据在缓冲区中,则直接在缓冲区中读写数据。读写完毕,把数据结果返回给SCSI目标模拟器,同时,数据同步子模块按规定的时间间隔把缓冲区中的数据更新到磁盘系统中;若在缓冲区中找不到所需的数据,则执行以下步骤。
(4)缓冲区子模块便向共享锁子模块申请I/O读写锁,若从共享锁子模块处得不到I/O读写锁,便转入等待状态;否则执行一下步骤。
(5)缓冲区管理子模块申请到I/O读写锁,便通过接口子模块把SCSI命令传送给SCSI I/O子系统并获得数据,数据读写完毕,便把结果数据返回给SCSI目标模拟器;同时数据同步子模块用最新最久未使用算法去更新缓冲区中的数据。
(6)结束。
2、根据权利要求1所述的FC-SAN存储系统的LUN存储系统,其特征在于:所述的读写锁算法,它是通过不同粒度的READER-WRITER锁来实现的:READER-WRITER锁中包含的数据有:信号量,共享锁,用来标示是LUN读写锁还是I/O读写锁的标志位,SCSI命令,数据段的开始地址,数据段的长度。
3、根据权利要求1所述的FC-SAN存储系统的LUN CACHE方法,其特征在于:所述的最近最久未使用的算法,它为缓冲区的每个数据块和每个逻辑单元号LUN各设置一个访问次数计数和访问时间标记,每次数据操作都会更新相应的访问次数计数和访问时间标记,当需要更新缓冲区时,它从缓冲区中选出离当前一段时间内访问次数较少,并且所在的逻辑单元号访问次数最少的数据块予以删除。
CN 200310113532 2003-11-14 2003-11-14 光纤通道-存储区域网络系统的逻辑单元号高速缓存方法 Expired - Fee Related CN1279455C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200310113532 CN1279455C (zh) 2003-11-14 2003-11-14 光纤通道-存储区域网络系统的逻辑单元号高速缓存方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200310113532 CN1279455C (zh) 2003-11-14 2003-11-14 光纤通道-存储区域网络系统的逻辑单元号高速缓存方法

Publications (2)

Publication Number Publication Date
CN1545033A true CN1545033A (zh) 2004-11-10
CN1279455C CN1279455C (zh) 2006-10-11

Family

ID=34336904

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200310113532 Expired - Fee Related CN1279455C (zh) 2003-11-14 2003-11-14 光纤通道-存储区域网络系统的逻辑单元号高速缓存方法

Country Status (1)

Country Link
CN (1) CN1279455C (zh)

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100353307C (zh) * 2006-02-16 2007-12-05 杭州华三通信技术有限公司 一种存储系统以及存储数据的方法和读取数据的方法
CN100397366C (zh) * 2005-05-17 2008-06-25 国际商业机器公司 用于初始化存储器块的处理器、数据处理系统和方法
CN102395957A (zh) * 2009-04-17 2012-03-28 韩商英得联股份有限公司 一种高速缓存和磁盘的管理方法以及利用所述方法的控制器
CN102681892A (zh) * 2012-05-15 2012-09-19 西安热工研究院有限公司 Key-Value型单写多读锁池软件模块及其运行方法
CN102843183A (zh) * 2012-08-27 2012-12-26 成都成电光信科技有限责任公司 一种光纤通道网络数据监控装置
CN102033796B (zh) * 2009-09-25 2013-01-16 中国移动通信集团公司 测试系统和方法
CN103106048A (zh) * 2013-01-30 2013-05-15 浪潮电子信息产业股份有限公司 一种多控多活的存储系统
WO2013131443A1 (zh) * 2012-03-09 2013-09-12 腾讯科技(深圳)有限公司 存储数据的方法及装置
CN103327074A (zh) * 2013-05-24 2013-09-25 浪潮电子信息产业股份有限公司 一种全局共享缓存的紧耦合多控多活存储系统的设计方法
CN103441948A (zh) * 2013-07-03 2013-12-11 华为技术有限公司 一种数据访问方法、网卡及存储系统
WO2014094306A1 (zh) * 2012-12-21 2014-06-26 华为技术有限公司 一种Cache工作模式的设置方法和装置
CN104102515A (zh) * 2014-07-18 2014-10-15 浪潮(北京)电子信息产业有限公司 一种处理外挂存储设备的逻辑单元号的方法及服务器
CN104360966A (zh) * 2014-11-21 2015-02-18 浪潮(北京)电子信息产业有限公司 对块数据进行输入输出操作的方法和装置
WO2017181926A1 (en) * 2016-04-18 2017-10-26 Huawei Technologies Co., Ltd. Delayed write through cache (dwtc) and method for operating dwtc
CN108170544A (zh) * 2017-12-29 2018-06-15 中国人民解放军国防科技大学 面向数据无冲突程序的共享数据动态更新方法
CN111459849A (zh) * 2020-04-20 2020-07-28 网易(杭州)网络有限公司 一种内存的设置方法及装置、电子设备、存储介质
CN111506436A (zh) * 2020-03-25 2020-08-07 炬星科技(深圳)有限公司 实现内存共享的方法、电子设备和共享内存数据管理库
CN112636908A (zh) * 2020-12-21 2021-04-09 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 密钥查询方法及装置、加密设备及存储介质
CN113643326A (zh) * 2021-06-07 2021-11-12 深圳市智绘科技有限公司 一种基于SoC的KNN计算装置和路径规划系统

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100397366C (zh) * 2005-05-17 2008-06-25 国际商业机器公司 用于初始化存储器块的处理器、数据处理系统和方法
CN100353307C (zh) * 2006-02-16 2007-12-05 杭州华三通信技术有限公司 一种存储系统以及存储数据的方法和读取数据的方法
CN102395957A (zh) * 2009-04-17 2012-03-28 韩商英得联股份有限公司 一种高速缓存和磁盘的管理方法以及利用所述方法的控制器
CN102033796B (zh) * 2009-09-25 2013-01-16 中国移动通信集团公司 测试系统和方法
WO2013131443A1 (zh) * 2012-03-09 2013-09-12 腾讯科技(深圳)有限公司 存储数据的方法及装置
CN102681892B (zh) * 2012-05-15 2014-08-20 西安热工研究院有限公司 Key-Value型单写多读锁池软件模块及其运行方法
CN102681892A (zh) * 2012-05-15 2012-09-19 西安热工研究院有限公司 Key-Value型单写多读锁池软件模块及其运行方法
CN102843183A (zh) * 2012-08-27 2012-12-26 成都成电光信科技有限责任公司 一种光纤通道网络数据监控装置
WO2014094306A1 (zh) * 2012-12-21 2014-06-26 华为技术有限公司 一种Cache工作模式的设置方法和装置
CN103106048A (zh) * 2013-01-30 2013-05-15 浪潮电子信息产业股份有限公司 一种多控多活的存储系统
CN103327074A (zh) * 2013-05-24 2013-09-25 浪潮电子信息产业股份有限公司 一种全局共享缓存的紧耦合多控多活存储系统的设计方法
CN103441948B (zh) * 2013-07-03 2017-09-05 华为技术有限公司 一种数据访问方法、网卡及存储系统
CN103441948A (zh) * 2013-07-03 2013-12-11 华为技术有限公司 一种数据访问方法、网卡及存储系统
CN104102515A (zh) * 2014-07-18 2014-10-15 浪潮(北京)电子信息产业有限公司 一种处理外挂存储设备的逻辑单元号的方法及服务器
CN104360966A (zh) * 2014-11-21 2015-02-18 浪潮(北京)电子信息产业有限公司 对块数据进行输入输出操作的方法和装置
CN104360966B (zh) * 2014-11-21 2017-12-12 浪潮(北京)电子信息产业有限公司 对块数据进行输入输出操作的方法和装置
WO2017181926A1 (en) * 2016-04-18 2017-10-26 Huawei Technologies Co., Ltd. Delayed write through cache (dwtc) and method for operating dwtc
US9983995B2 (en) 2016-04-18 2018-05-29 Futurewei Technologies, Inc. Delayed write through cache (DWTC) and method for operating the DWTC
CN108170544A (zh) * 2017-12-29 2018-06-15 中国人民解放军国防科技大学 面向数据无冲突程序的共享数据动态更新方法
CN108170544B (zh) * 2017-12-29 2020-08-28 中国人民解放军国防科技大学 面向数据无冲突程序的共享数据动态更新方法
CN111506436A (zh) * 2020-03-25 2020-08-07 炬星科技(深圳)有限公司 实现内存共享的方法、电子设备和共享内存数据管理库
CN111506436B (zh) * 2020-03-25 2024-05-14 炬星科技(深圳)有限公司 实现内存共享的方法、电子设备和共享内存数据管理库
CN111459849A (zh) * 2020-04-20 2020-07-28 网易(杭州)网络有限公司 一种内存的设置方法及装置、电子设备、存储介质
CN111459849B (zh) * 2020-04-20 2021-05-11 网易(杭州)网络有限公司 一种内存的设置方法及装置、电子设备、存储介质
CN112636908A (zh) * 2020-12-21 2021-04-09 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 密钥查询方法及装置、加密设备及存储介质
CN112636908B (zh) * 2020-12-21 2022-08-05 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 密钥查询方法及装置、加密设备及存储介质
CN113643326A (zh) * 2021-06-07 2021-11-12 深圳市智绘科技有限公司 一种基于SoC的KNN计算装置和路径规划系统
CN113643326B (zh) * 2021-06-07 2022-04-08 深圳市智绘科技有限公司 一种基于SoC的KNN计算装置和路径规划系统

Also Published As

Publication number Publication date
CN1279455C (zh) 2006-10-11

Similar Documents

Publication Publication Date Title
CN1279455C (zh) 光纤通道-存储区域网络系统的逻辑单元号高速缓存方法
Maruf et al. TPP: Transparent page placement for CXL-enabled tiered-memory
US8402152B2 (en) Apparatus and system for object-based storage solid-state drive
KR102044023B1 (ko) 키 값 기반 데이터 스토리지 시스템 및 이의 운용 방법
US10073656B2 (en) Systems and methods for storage virtualization
US7805571B2 (en) Using external memory devices to improve system performance
US7174471B2 (en) System and method for adjusting I/O processor frequency in response to determining that a power set point for a storage device has not been reached
US10025705B2 (en) Apparatus and system for object-based storage solid-state device
CN100347692C (zh) San系统中虚拟化智能控制器的实现方法
CN1866164A (zh) 硬盘驱动功率减少模块
US20090106518A1 (en) Methods, systems, and computer program products for file relocation on a data storage device
CN1821979A (zh) 存储系统
CN1940849A (zh) Raid系统及其重构/回拷处理方法
CN101079902A (zh) 海量数据分级存储方法
US9182912B2 (en) Method to allow storage cache acceleration when the slow tier is on independent controller
CN1832489A (zh) 一种对目的磁盘进行访问的方法和扩展磁盘容量的系统
CN1622054A (zh) 磁盘阵列装置及磁盘阵列装置的控制方法
CN1862475A (zh) 磁盘阵列缓存的管理方法
Kassa et al. Improving performance of flash based {Key-Value} stores using storage class memory as a volatile memory extension
US20150261289A1 (en) Adaptive power control of address map memory devices
US20120260037A1 (en) Smart hybrid storage based on intelligent data access classification
CN1748198A (zh) 存储装置和信息处理系统
Xie et al. Dynamic data reallocation in hybrid disk arrays
WO2023125524A1 (zh) 数据存储方法、系统、存储访问配置方法及相关设备
US8769196B1 (en) Configuring I/O cache

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee