CN1862475A - 磁盘阵列缓存的管理方法 - Google Patents
磁盘阵列缓存的管理方法 Download PDFInfo
- Publication number
- CN1862475A CN1862475A CNA2005100842693A CN200510084269A CN1862475A CN 1862475 A CN1862475 A CN 1862475A CN A2005100842693 A CNA2005100842693 A CN A2005100842693A CN 200510084269 A CN200510084269 A CN 200510084269A CN 1862475 A CN1862475 A CN 1862475A
- Authority
- CN
- China
- Prior art keywords
- main frame
- write
- data
- read
- data block
- 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
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了针对读/写请求的磁盘阵列缓存的管理方法。针对读请求的管理过程包括:主机读请求到达时,判断读请求数据是否保存在磁盘阵列缓存中,如果是则从磁盘阵列缓存中获取读请求数据返回给主机,否则从磁盘获取读请求数据返回给主机,并执行步骤b1;b1、判断磁盘阵列缓存中是否存在空闲区域,如果存在则在空闲区域保存读请求数据,否则执行步骤c1;c1、选取磁盘阵列缓存中的读数据块,将读请求数据保存在被选中读数据块的位置处。对于主机写请求,也采用与上述过程类似的方法进行管理,并采用写聚合算法写入数据块到磁盘。本发明的方法在不降低缓存命中率的条件下,减少主机请求的平均服务时间,提高RAID***的性能。
Description
技术领域
本发明涉及存储管理技术,尤指针对读请求和写请求的磁盘阵列缓存的管理方法。
背景技术
随着网络技术的发展和计算机的普及应用,数据存储量日益增多,人们对存储***的要求越来越高,这种要求尤其体现在关键事务的存储应用上。廉价冗余磁盘(RAID,Redundant Array of Independent Disks)采用分条和冗余的方法提高了存储***的容量、速度和可靠性,已成为高性能数据存储的首选结构。
RAID***通常包括控制器、磁盘阵列缓存和由多个磁盘构成的下一级存储器。所述磁盘阵列缓存用来临时存放主机访问的数据块,使主机对RAID***的数据访问大多数通过缓存进行,以提高主机对RAID***的数据访问速度。缓存的容量远比磁盘的容量小,一般不超过磁盘容量的1%,故缓存中保存的数据是磁盘中数据内容的子集。
为了使主机的数据访问具有高缓存命中率,即主机在缓存中就能查找到待访问数据块,必须使用一定算法来更新缓存中的数据内容。上述更新数据的算法根据数据访问的局部性原理进行设置,局部性原理包括两个方面:其一、空间局部性,即如果一个数据块被访问到,与该数据块位于同一分条的数据块可能很快被访问到。现有技术中,这种空间局部性通过磁盘预取算法体现。其二、时间局部性,即如果一个数据块被访问到,该数据块很可能会被再次访问,所以在淘汰缓存中的数据块时可以采用最近最少使用(LRU,Least Recently Used)算法或类似算法,尽可能地将未来最长时间内不会被主机访问到的数据块清除,以提高整个RAID***的性能。
主机对RAID***的访问包括读数据块操作和写数据块操作。在现有的缓存管理方法中,主机读请求的处理流程如图1,包括以下步骤:
步骤101、主机读请求到达RAID***后,判断缓存中是否存在读请求数据块,如果存在则执行步骤102,否则执行步骤103。
所述读请求数据块是指主机的读请求指令要求获得的数据块。
步骤102、从缓存中取出读请求数据块返回给主机,并修改该数据块的访问记录,本次读数据块操作完成。
步骤103、启动磁盘读操作,从磁盘取出读请求数据块返回给主机。
步骤104、判断缓存中是否存在空闲区域,如果存在则执行步骤107,否则执行步骤105。
步骤105、根据LRU算法选择缓存中的数据块进行淘汰,并判断待淘汰数据块的类型,如果待淘汰数据块为读数据块则执行步骤107;如果待淘汰数据块为写数据块,则执行步骤106。
所述读数据块是指根据主机读请求从磁盘中取出,被保存在缓存中的数据块。所述写数据块是指根据主机写请求从主机或RAID***外部发送过来,被保存在缓存中的数据块。
步骤106、启动磁盘写操作,将待淘汰数据块写入磁盘。
所述磁盘写操作包括从磁盘中读取同分条内的其它数据块,进行该分条数据的冗余计算以及多个数据块的写入等。
步骤107、RAID***在缓存中保存步骤101所述的读请求数据块,并根据预取策略判断磁盘中是否还有后续数据块需要读取,如果是则执行步骤108,否则本次读数据块操作完成。
在磁盘中,数据信息按照分条单元进行保存,多个分条单元构成一个分条,故所述同分条数据块是指位于同一个分条内的数据块。
步骤108、启动磁盘读操作从磁盘获取步骤107所述的由预取策略确定的后续数据块,并返回执行步骤104。
现有技术中,主机对RAID***的写操作可以采用两种方式实现,分别是直写方式(write through)和回写方式(write back)。
直写方式是指根据主机写请求将数据块写到磁盘时,也将该数据块写入缓存。只有在主机将数据块写到磁盘后,直写方式的主机写操作才结束。采用直写方式时,主机写请求的处理流程如图2所示,包括以下步骤:
步骤201、主机写请求到达时,判断缓存中是否存在写请求数据块,如果存在则执行步骤204,否则执行步骤202。
步骤202、判断缓存中是否存在空闲区域,如果有则执行步骤204,如果没有则执行步骤203。
步骤203、根据LRU算法选择缓存中的数据块进行淘汰。
步骤204、在缓存中保存写请求数据块,并启动磁盘写操作将写请求数据块写入磁盘,本次写数据块操作完成。
该步骤中,所述写请求数据块保存在步骤202所述空闲区域中,或者保存在根据LRU算法选中淘汰的数据块中,覆盖数据块中原先保存的内容。
如果统一采用直写方式,每个写请求数据块在写入缓存的同时也写入磁盘,故淘汰数据块时,读数据块和写数据块都可以简单地丢弃。但是直写方式时主机写操作的平均服务时间较长,故这种方式不常采用。
回写方式是指根据主机写请求将数据块写到磁盘阵列缓存后,主机写操作就结束。数据块由缓存写到磁盘的过程由磁盘来完成,不包含在主机写操作过程中。采用回写方式时,主机写请求的处理流程如图3所示,包括以下步骤:
步骤301、主机写请求到达时,判断缓存中是否存在写请求数据块,如果存在则执行步骤305,否则执行步骤302。
步骤302、判断缓存中是否存在空闲区域,如果有则执行步骤305,如果没有则执行步骤303。
步骤303、根据LRU算法选择缓存中的数据块进行淘汰,并判断待淘汰数据块的类型,如果待淘汰数据块为读数据块则执行步骤305;如果待淘汰数据块为写数据块,则执行步骤304。
步骤304、启动磁盘写操作,将待淘汰数据块写入磁盘。
步骤305、在缓存中保存写请求数据块,本次写数据块操作完成。
从图2和图3的说明看出,采用直写方式完成主机写请求的平均服务时间远大于回写方式,所以主机写操作通常采用回写方式来实现。
在上述主机读/写操作中,磁盘阵列缓存中有两种类型的主机访问数据块,分别是读数据块和写数据块。其中,读数据块是经过主机读操作保存在缓存中的数据,写数据块是经过主机写操作保存在缓存中的数据。当缓存中存满数据需要对数据块进行淘汰时,通常使用LRU算法不加区分地从读数据块和写数据块中选出待淘汰数据块,这种方法存在以下缺点:
(一)如果待淘汰数据块是读数据块,则可以直接丢弃。但是,如果待淘汰数据块是还未写入磁盘的写数据块,需要在执行读/写操作过程中,启动磁盘写操作将待淘汰数据块写入磁盘,这将延长该读/写请求的服务时间。
对于不同的冗余等级,磁盘写操作需要读写磁盘的次数也不相同,比如RAID 5中,写一个分条单元到磁盘需要进行多次磁盘读写和新的冗余信息计算,所花费的时间比单纯执行淘汰数据块的操作要高几个甚至几十个数量级。
(二)将缓存中待淘汰数据块写入磁盘时,没有考虑磁盘通道的忙闲情况,从而增加主机写操作的平均服务时间,降低了RAID***的吞吐率。
(三)将待淘汰数据块写入磁盘时,仅根据主机对数据块的访问情况进行选择,没有考虑RAID***中数据块的分条情况,因此增加了磁盘通道和磁盘的压力,降低了整个RAID***的性能。
发明内容
有鉴于此,本发明的主要目的在于提供一种针对读请求的磁盘阵列缓存的管理方法,来降低处理主机读请求的平均服务时间,提高RAID***的性能。
本发明的又一目的在于提供一种针对写请求的磁盘阵列缓存的管理方法,来降低处理主机写请求的平均服务时间,提高RAID***的性能。
为达到上述目的,本发明的技术方案具体是这样实现的:
一种针对读请求的磁盘阵列缓存的管理方法,其特征在于,主机读请求到达磁盘阵列缓存时,该方法包括以下步骤:
a1、判断读请求数据是否保存在磁盘阵列缓存中,如果是则从磁盘阵列缓存中获取读请求数据返回给主机,否则从磁盘获取读请求数据返回给主机,并执行步骤b1;
b1、判断磁盘阵列缓存中是否存在空闲区域,如果存在则在空闲区域保存读请求数据,否则执行步骤c1;
c1、选取磁盘阵列缓存中的读数据块,将所述读请求数据保存在被选中的读数据块中。
进一步地,预先在磁盘阵列缓存中设置主机读队列,所述主机读队列包含有磁盘阵列缓存中读数据块的标识信息,则步骤c1所述选取读数据块的方法为:从主机读队列中选出需淘汰的读数据块的标识信息,并在磁盘阵列缓存中查找到所述标识信息对应的读数据块。
进一步地,所述主机读队列还包含有读数据块的访问时间,所述访问时间与对应数据块的标识信息绑定,则所述选出需淘汰的读数据块的方法为:确定主机读队列中所记录的距离当前时间最远的访问时间,选择所述访问时间对应的读数据块。
较佳地,所述确定访问时间的方法为:利用最近最少使用算法选择距离当前时间最远的访问时间。
较佳地,所述标识信息是缓存地址。
步骤c1后进一步包括:根据预取算法判断磁盘中是否存在后续数据块需要读取,如果存在则返回执行步骤b1,否则主机读数据块过程结束。
较佳地,所述后续数据块为读请求数据在磁盘上的同磁道数据块。
一种针对写请求的磁盘阵列缓存的管理方法,其特征在于,主机写请求到达磁盘阵列缓存时,该方法包括以下步骤:
a2、判断写请求数据是否已经保存在磁盘阵列缓存中,如果是则用当前写请求数据更新相应位置处的写请求数据,否则执行步骤b2;
b2、判断磁盘阵列缓存中是否存在空闲区域,如果存在则在空闲区域保存所述写请求数据,否则执行步骤c2;
c2、选取磁盘阵列缓存中的读数据块,将写请求数据保存在被选中的读数据块中。
进一步地,预先在磁盘阵列缓存中设置主机读队列,所述主机读队列包含有磁盘阵列缓存中读数据块的标识信息,则步骤c2所述选取读数据块的方法为:从主机读队列中选出需淘汰的读数据块的标识信息,并在磁盘阵列缓存中查找到所述标识信息对应的读数据块。
进一步地,所述主机读队列还包含有读数据块的访问时间,所述访问时间与对应数据块的标识信息绑定,则所述选出需淘汰的读数据块的方法为:确定主机读队列中所记录的距离当前时间最远的访问时间,选择所述访问时间对应的读数据块。
较佳地,所述确定访问时间的方法为:利用最近最少使用算法选择距离当前时间最远的访问时间。
较佳地,所述标识信息是缓存地址。
进一步地,预先在磁盘阵列缓存中设置主机写队列,用于记录磁盘阵列缓存中写数据块的标识信息,则步骤a2所述的方法为:
a21、判断写请求数据对应的标识信息是否保存在主机读队列中,如果是则在标识信息对应的数据块中保存所述写请求数据,并将该标识信息加入到主机写队列,否则执行步骤a22;
a22、判断写请求数据对应的标识信息是否保存在主机写队列中,如果是则在标识信息对应的数据块中保存所述写请求数据,否则执行步骤b2。
进一步地,步骤b2所述在空闲区域保存所述写请求数据后进一步包括:将写请求数据的标识信息加入到主机写队列;
步骤c2所述保存所述写请求数据后进一步包括:将写请求数据的标识信息加入到主机写队列。
将标识信息加入到主机写队列时,该方法进一步包括:
d1、查找主机写队列中是否包含写请求数据的同分条数据块的标识信息,如果包含则将写请求数据及其同分条数据块一次写入磁盘,否则执行步骤d2;
d2、判断主机写队列长度是否超过预设长度,如果是则执行步骤d3,否则写入磁盘的操作过程结束;
d3、选择一个主机写队列中记录的标识信息对应的写数据块,并查找所述写数据块记录在主机写队列中的同分条数据块,将上述数据块一次写入磁盘,写入磁盘的操作过程结束。
步骤d1所述将数据一次写入磁盘后进一步包括:将写请求数据所在数据块的标识信息及其同分条数据块的标识信息加入到主机读队列;
步骤d3所述将数据一次写入磁盘后进一步包括:将写请求数据所在数据块的标识信息及其同分条数据块的标识信息加入到主机读队列。
步骤d2中操作过程结束之前,该方法进一步包括:
d21、判断主机写队列长度是否超过检测长度,如果超过则执行步骤d22,否则写入磁盘的操作过程结束;
d22、判断写请求数据的同分条数据块是否保存在磁盘阵列缓存中,如果是则执行步骤d24,否则执行步骤d23;
d23、判断主机写队列中是否记录有同分条数据块都保存在磁盘阵列缓存中的数据块,如果存在则执行步骤d24,否则写入磁盘的操作过程结束;
d24、将主机写队列中记录的标识信息对应的写数据块,及其记录在主机写队列中的同分条数据块一次写入磁盘中。
较佳地,步骤d3中选择数据块的方法为:按照主机写队列的记录顺序,选中队首标识信息记录的数据块。
进一步地,所述标识信息包括逻辑地址、缓存地址以及两个地址之间的映射关系;
所述查找同分条数据块的方法为:根据写数据块的逻辑地址,确定主机写队列中记录的与所述写数据块处于同分条的数据块;根据逻辑地址和缓存地址之间的映射关系,在磁盘阵列缓存中查找到所述同分条数据块。
由上述技术方案可见,本发明的这种针对读/写请求的磁盘阵列缓存的管理方法,将缓存中的数据块根据其使用情况设置为空闲、主机读和主机写这三种状态,并分别用空闲队列、主机读队列和主机写队列来管理相应状态的数据块信息。当缓存中需要空闲区域用于保存主机读/写请求数据块时,根据所设置的队列区分处于不同状态的数据块,利用LRU算法淘汰位于主机读队列中的读数据块,从而在不降低缓存命中率的条件下,减少主机请求的平均服务时间,提高RAID***的性能。
另一方面,本发明仅在数据块加入主机写队列时,才触发RAID***将主机写队列中的写数据块写入磁盘。上述从缓存写入数据块到磁盘的时机充分考虑到磁盘通道的忙闲情况,故该方法能很好地提高RAID***的吞吐率。当执行主机读数据操作时,由于需要从磁盘读出数据,故磁盘通道处于忙状态。此时,本发明的方法由于无需从缓存中淘汰写数据块,故无需进一步占用磁盘通道。当执行主机写数据操作时,磁盘通道处于闲状态,故可以较好地利用磁盘通道将主机写队列中的写数据块写入磁盘。
再一方面,本发明利用RAID***分条保存数据的特点,对缓存中的写数据块使用写聚合算法,尽可能地将同一分条内的所有数据块一次写入磁盘中,从而减少冗余计算和磁盘读写次数,提高磁盘通道的利用率,进而提高整个RAID***的性能。
附图说明
图1为现有技术中处理主机读请求的流程图;
图2为现有技术中以直写方式处理主机写请求的流程图;
图3为现有技术中以回写方式处理主机写请求的流程图;
图4为本发明一个较佳实施例中缓存空间数据块的状态转换图;
图5为本发明一个较佳实施例中处理主机读请求的流程图;
图6为本发明一个较佳实施例中以回写方式处理主机写请求的流程图;
图7为本发明一个较佳实施例中采用写聚合算法将数据块写入磁盘的流程图;
图8为现有技术中将写数据块写入磁盘的顺序图;
图9为本发明一个较佳实施例中采用写聚合算法将写数据块写入磁盘的顺序图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步详细说明。
按照设计类型,本发明所述RAID***中采用的磁盘阵列缓存可以分为一级缓存和二级缓存,或者分为单端口缓存和多端口缓存,下面以一级单端口缓存为例具体说明本发明中磁盘阵列缓存的管理方法。
本实施例中,将磁盘阵列缓存空间以数据块为单位划分,没有保存数据内容的空间标识为空闲态,保存有读数据块的空间标识为主机读状态,保存有写数据块的空间标识为主机写状态。设置队列记录缓存空间中每个数据块的状态信息,以便对缓存空间的使用进行管理,所述队列分别为空闲队列、主机读队列和主机写队列。如果缓存中的某个数据块处于空闲态,则将该数据块的标识信息保存在空闲队列中。类似地,如果某个数据块为主机写状态,则该数据块的标识信息保存在主机写队列中;如果某个数据块为主机读状态,则该数据块的标识信息保存在主机读队列中。所述标识信息用于标识数据块在RAID***中的位置,可包括数据块在磁盘中保存的逻辑地址、同一个数据块保存在缓存中的缓存地址以及逻辑地址和缓存地址之间的映射关系等内容中的一项或几项。队列中还可以包括数据块的访问时间等信息,每个数据块的访问时间与相应的标识信息绑定。
磁盘阵列缓存中的数据块状态会随着缓存空间的使用发生变化,如图4所示。在执行主机读数据块操作时,可以将通过预取过程401获得的数据内容保存在空闲数据块中,则该数据块的状态从空闲态变为主机读状态。如果处于主机读状态的数据块在淘汰过程402中被选中,该数据块中的数据内容将被丢弃,则该数据块从主机读状态变为空闲态。在执行主机写数据块操作时,可以将写请求数据保存在空闲数据块中,则该数据块的状态从空闲态变为主机写状态403,或者如果主机写请求数据块已经保存在缓存空间中,且所述空间处于主机读状态,则主机将上述空间中的数据内容更新404,并将其状态变为主机写状态。如果处于主机写状态的数据块中的数据内容通过磁盘写操作写入磁盘405,则将该数据块的状态变为主机读状态。
从图4的状态转换图可以看出,本发明中的LRU算法只用于淘汰主机读队列中的数据块,这些数据块均处于主机读状态。写数据块在被写入磁盘后,将加入到主机读队列中,同其它读数据块一起参与LRU算法的淘汰。
基于上述状态转换图,图5显示的是本发明中主机读请求的处理流程,该流程具体包括:
步骤501、主机读请求到达后,在整个缓存中查找读请求数据块,如果存在则执行步骤502,否则执行步骤503。
上述查找范围包括主机读队列和主机写队列中的所有数据块。
步骤502、从缓存中取出读请求数据块返回给主机,并修改该数据决的访问记录,本次读数据块操作完成。
步骤503、启动磁盘读操作,从磁盘取出读请求数据块返回给主机。
步骤504、判断缓存中是否存在空闲区域,如果存在则执行步骤506,否则执行步骤505。
步骤505、根据LRU算法从主机读队列中选择读数据块进行淘汰。
由于主机读队列中包括数据块的访问时间,故该步骤中淘汰读数据块的方法为:利用LRU算法或者类似算法从主机读队列中选出一个距离当前时间最远的访问时间对应的读数据块,根据队列中记录的该数据块的缓存地址在磁盘阵列缓存中查找到所述数据块。
步骤506、RAID***在缓存中保存步骤501所述的读请求数据块,并根据预取策略判断磁盘中是否还有后续数据块需要读取,如果是则执行步骤507,否则本次读数据块操作完成。
上述保存的方法为:RAID***将新的数据内容写入缓存中的相应空间,替换掉原来的数据内容。另外,在执行预取时,可以在磁盘中选择与读请求数据块处于同一个磁道的数据块,以加快主机读数据块操作。
步骤507、启动磁盘读操作从磁盘获取步骤506所述的由预取策略确定的后续数据块,并返回执行步骤504。
在图5所述的过程中,由于淘汰的都是读数据块,故不必启动磁盘写操作,从而大大节省主机读请求的处理时间。
基于图4所示的状态转换图,图6显示的是本发明中采用回写方式处理主机写请求的流程,该流程具体包括:
步骤601、主机写请求到达时,判断主机读队列中是否存在写请求数据块,如果存在则执行步骤605,否则执行步骤602。
步骤602、判断主机写队列中是否存在写请求数据块,如果存在则执行步骤606,否则执行步骤603。
步骤603、判断缓存中是否存在空闲区域,如果有则执行步骤605,如果没有则执行步骤604。
步骤604、根据LRU算法选择主机读队列中的数据块进行淘汰。
步骤605、在缓存中保存写请求数据块,并将该数据块信息加入到主机写队列中,本次写数据块操作完成。
步骤606、在缓存中保存写请求数据块,本次写数据块操作完成。
在图6所述的过程中,由于淘汰的都是读数据块,故不必启动磁盘写操作,从而大大节省主机写请求的处理时间。
上述步骤605中,当主机写队列中有写数据块信息加入时,主机写队列中的数据块通过写聚合算法写入磁盘的流程被触发。图7显示的是数据块写入磁盘的过程,具体包括以下步骤:
步骤701、主机写队列中有写数据块信息加入时,查找与所述数据块同分条的数据块是否都在主机写队列中,如果在则执行步骤702,否则执行步骤703。
由于标识信息包括逻辑地址、缓存地址,以及二者之间的映射关系,故所述查找同分条数据块的方法为:根据写数据块的逻辑地址,确定主机写队列中记录的与所述写数据块处于同分条的数据块;根据逻辑地址和缓存地址之间的映射关系,在磁盘阵列缓存中查找到所述同分条数据块。
步骤702、将同一分条的所有数据块一次写入磁盘,然后执行步骤709。
步骤703、判断主机写队列的长度是否超过预设长度,如果是则执行步骤708,否则执行步骤704。
步骤704、判断主机写队列的长度是否超过预设长度的2/3,如果是则执行步骤705,否则本次写磁盘的过程结束。
步骤705、判断与步骤701所述数据块同分条的数据块是否都在缓存中,如果是则执行步骤707,否则执行步骤706。
步骤706、判断主机写队列中是否存在一个数据块,其同分条其它数据块都在缓存中,如果有则执行步骤707,否则本次写磁盘的过程结束。
步骤707、将主机写队列中的数据块及其处于同分条的在主机写队列中的其它数据块一次写入磁盘中,然后执行步骤709。
此时,一次写入磁盘的数据是主机写队列中同一分条的部分数据块。虽然上述写入磁盘的数据块只是同一分条中的部分数据块,由于整个分条数据都在缓存中,可以使用缓存中的整个分条数据进行冗余计算,故该过程只需要写磁盘,而不需读磁盘。
步骤708、将队首数据块及其处于主机写队列中的同分条的其它数据块一次写入磁盘中。
此时,如果队首数据块的部分分条数据在主机写队列中,则一次将部分分条数据写入磁盘。另外,如果并非整个队首数据块的分条数据都在缓存中,则在写磁盘之前还需要读磁盘,以获得数据进行该分条的冗余计算。但是,这种读磁盘的次数比现有技术中每次单独写一个数据块时执行的读操作次数要少得多。
步骤709、将写入磁盘中的数据块标识信息从主机写队列中删除,并将相应信息加入主机读队列,本次写磁盘的过程结束。
从图7看出,使用写聚合算法能够减少冗余计算次数,以及磁盘和缓存之间的读写次数。假设现有技术中,将写数据块写入磁盘的顺序如图8所示,其中逻辑地址中的Sij表示数据块保存在磁盘中第i个分条的第j个分条单元,则采用RAID 5将图8中所有分条单元按顺序全部写入磁盘所需的磁盘读写次数为48次,冗余计算次数为12次。使用写聚合算法的写入顺序如图9所示,其中S11、S12、S14和S13这四个分条单元只要执行一次写入,其它分条单元的写入方法同理,即属于同一分条的分条单元一次写入磁盘,故采用RAID 5时的磁盘读写次数为15次,冗余计算次数为4次。
实际应用中,主机写队列的长度可根据情况进行调整。当主机写请求较多时,可增加主机写队列长度,反之则减小主机写队列长度。步骤704中,检测某数据块的同一分条中所有数据块是否都在缓存中的时机也可根据需要进行调整,本实施例中设定当主机写队列长度达到预设长度的2/3时开始上述检测,将这个长度称为检测长度。步骤708中,当主机写队列长度超过预设长度时,队列中数据块写入磁盘的次序不一定从队首数据块开始,可以根据一定算法预测将来最不会被改写的数据块并将其写入磁盘。
以上是本实施例中对一级单端口磁盘阵列缓存的管理方法。对于其他多级或多端口的磁盘阵列缓存也可采用类似的方法进行管理。
由上述的实施例可见,本发明的这种针对读/写请求的磁盘阵列缓存的管理方法,将缓存中的数据块根据其使用情况设置为空闲、主机读和主机写这三种状态,当缓存中需要空闲区域用于保存主机读/写请求数据块时,利用LRU算法或其它相关算法淘汰处于主机读状态的数据块,从而在不降低缓存命中率的条件下,减少主机请求的平均服务时间,提高RAID***性能。
Claims (19)
1、一种针对读请求的磁盘阵列缓存的管理方法,其特征在于,主机读请求到达磁盘阵列缓存时,该方法包括以下步骤:
a1、判断读请求数据是否保存在磁盘阵列缓存中,如果是则从磁盘阵列缓存中获取读请求数据返回给主机,否则从磁盘获取读请求数据返回给主机,并执行步骤b1;
b1、判断磁盘阵列缓存中是否存在空闲区域,如果存在则在空闲区域保存读请求数据,否则执行步骤c1;
c1、选取磁盘阵列缓存中的读数据块,将所述读请求数据保存在被选中的读数据块中。
2、根据权利要求1所述的方法,其特征在于,预先在磁盘阵列缓存中设置主机读队列,所述主机读队列包含有磁盘阵列缓存中读数据块的标识信息,则步骤c1所述选取读数据块的方法为:从主机读队列中选出需淘汰的读数据块的标识信息,并在磁盘阵列缓存中查找到所述标识信息对应的读数据块。
3、根据权利要求2所述的方法,其特征在于,所述主机读队列还包含有读数据块的访问时间,所述访问时间与对应数据块的标识信息绑定,则所述选出需淘汰的读数据块的方法为:确定主机读队列中所记录的距离当前时间最远的访问时间,选择所述访问时间对应的读数据块。
4、根据权利要求3所述的方法,其特征在于,所述确定访问时间的方法为:利用最近最少使用算法选择距离当前时间最远的访问时间。
5、根据权利要求2至4所述的方法,其特征在于,所述标识信息是缓存地址。
6、根据权利要求1所述的方法,其特征在于,步骤c1后进一步包括:根据预取算法判断磁盘中是否存在后续数据块需要读取,如果存在则返回执行步骤b1,否则主机读数据块过程结束。
7、根据权利要求6所述的方法,其特征在于,所述后续数据块为读请求数据在磁盘上的同磁道数据块。
8、一种针对写请求的磁盘阵列缓存的管理方法,其特征在于,主机写请求到达磁盘阵列缓存时,该方法包括以下步骤:
a2、判断写请求数据是否已经保存在磁盘阵列缓存中,如果是则用当前写请求数据更新相应位置处的写请求数据,否则执行步骤b2;
b2、判断磁盘阵列缓存中是否存在空闲区域,如果存在则在空闲区域保存所述写请求数据,否则执行步骤c2;
c2、选取磁盘阵列缓存中的读数据块,将写请求数据保存在被选中的读数据块中。
9、根据权利要求8所述的方法,其特征在于,预先在磁盘阵列缓存中设置主机读队列,所述主机读队列包含有磁盘阵列缓存中读数据块的标识信息,则步骤c2所述选取读数据块的方法为:从主机读队列中选出需淘汰的读数据块的标识信息,并在磁盘阵列缓存中查找到所述标识信息对应的读数据块。
10、根据权利要求9所述的方法,其特征在于,所述主机读队列还包含有读数据块的访问时间,所述访问时间与对应数据块的标识信息绑定,则所述选出需淘汰的读数据块的方法为:确定主机读队列中所记录的距离当前时间最远的访问时间,选择所述访问时间对应的读数据块。
11、根据权利要求10所述的方法,其特征在于,所述确定访问时间的方法为:利用最近最少使用算法选择距离当前时间最远的访问时间。
12、根据权利要求9至11所述的方法,其特征在于,所述标识信息是缓存地址。
13、根据权利要求9所述的方法,其特征在于,预先在磁盘阵列缓存中设置主机写队列,用于记录磁盘阵列缓存中写数据块的标识信息,则步骤a2所述的方法为:
a21、判断写请求数据对应的标识信息是否保存在主机读队列中,如果是则在标识信息对应的数据块中保存所述写请求数据,并将该标识信息加入到主机写队列,否则执行步骤a22;
a22、判断写请求数据对应的标识信息是否保存在主机写队列中,如果是则在标识信息对应的数据块中保存所述写请求数据,否则执行步骤b2。
14、根据权利要求13所述的方法,其特征在于,步骤b2所述在空闲区域保存所述写请求数据后进一步包括:将写请求数据的标识信息加入到主机写队列;
步骤c2所述保存所述写请求数据后进一步包括:将写请求数据的标识信息加入到主机写队列。
15、根据权利要求13或14所述的方法,其特征在于,将标识信息加入到主机写队列时,该方法进一步包括:
d1、查找主机写队列中是否包含写请求数据的同分条数据块的标识信息,如果包含则将写请求数据及其同分条数据块一次写入磁盘,否则执行步骤d2;
d2、判断主机写队列长度是否超过预设长度,如果是则执行步骤d3,否则写入磁盘的操作过程结束;
d3、选择一个主机写队列中记录的标识信息对应的写数据块,并查找所述写数据块记录在主机写队列中的同分条数据块,将上述数据块一次写入磁盘,写入磁盘的操作过程结束。
16、根据权利要求15所述的方法,其特征在于,步骤d1所述将数据一次写入磁盘后进一步包括:将写请求数据所在数据块的标识信息及其同分条数据块的标识信息加入到主机读队列;
步骤d3所述将数据一次写入磁盘后进一步包括:将写请求数据所在数据块的标识信息及其同分条数据块的标识信息加入到主机读队列。
17、根据权利要求15所述的方法,其特征在于,步骤d2中操作过程结束之前,该方法进一步包括:
d21、判断主机写队列长度是否超过检测长度,如果超过则执行步骤d22,否则写入磁盘的操作过程结束;
d22、判断写请求数据的同分条数据块是否保存在磁盘阵列缓存中,如果是则执行步骤d24,否则执行步骤d23;
d23、判断主机写队列中是否记录有同分条数据块都保存在磁盘阵列缓存中的数据块,如果存在则执行步骤d24,否则写入磁盘的操作过程结束;
d24、将主机写队列中记录的标识信息对应的写数据块,及其记录在主机写队列中的同分条数据块一次写入磁盘中。
18、根据权利要求15所述的方法,其特征在于,步骤d3中选择数据块的方法为:按照主机写队列的记录顺序,选中队首标识信息记录的数据块。
19、根据权利要求15所述的方法,其特征在于,所述标识信息包括逻辑地址、缓存地址以及两个地址之间的映射关系;
所述查找同分条数据块的方法为:根据写数据块的逻辑地址,确定主机写队列中记录的与所述写数据块处于同分条的数据块;根据逻辑地址和缓存地址之间的映射关系,在磁盘阵列缓存中查找到所述同分条数据块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100842693A CN100362462C (zh) | 2005-07-15 | 2005-07-15 | 磁盘阵列缓存的管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100842693A CN100362462C (zh) | 2005-07-15 | 2005-07-15 | 磁盘阵列缓存的管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1862475A true CN1862475A (zh) | 2006-11-15 |
CN100362462C CN100362462C (zh) | 2008-01-16 |
Family
ID=37389919
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100842693A Active CN100362462C (zh) | 2005-07-15 | 2005-07-15 | 磁盘阵列缓存的管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100362462C (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101794259A (zh) * | 2010-03-26 | 2010-08-04 | 成都市华为赛门铁克科技有限公司 | 数据存储方法和装置 |
CN101520743B (zh) * | 2009-04-17 | 2010-12-08 | 杭州华三通信技术有限公司 | 基于写时拷贝的数据存储方法及设备 |
CN101937321A (zh) * | 2010-09-15 | 2011-01-05 | 中兴通讯股份有限公司 | 一种实现混合缓存的方法和装置 |
CN101673188B (zh) * | 2008-09-09 | 2011-06-01 | 上海华虹Nec电子有限公司 | 一种固态硬盘的数据存取方法 |
CN102253810A (zh) * | 2010-05-17 | 2011-11-23 | 腾讯科技(深圳)有限公司 | 数据读取方法、装置和*** |
CN101751225B (zh) * | 2008-12-04 | 2011-12-14 | 上海华虹Nec电子有限公司 | 一种混合硬盘的数据存取方法 |
CN102063264B (zh) * | 2009-11-18 | 2012-08-29 | 成都市华为赛门铁克科技有限公司 | 一种处理数据的方法、设备及*** |
CN103136121A (zh) * | 2013-03-25 | 2013-06-05 | 中国人民解放军国防科学技术大学 | 一种固态盘的缓存管理方法 |
CN103488582A (zh) * | 2013-09-05 | 2014-01-01 | 深圳市华为技术软件有限公司 | 写高速缓冲存储器的方法及装置 |
CN103823634A (zh) * | 2012-11-16 | 2014-05-28 | 腾讯科技(深圳)有限公司 | 一种支持无随机写模式的数据处理方法及*** |
CN104484287A (zh) * | 2014-12-19 | 2015-04-01 | 北京麓柏科技有限公司 | 一种非易失性缓存实现方法及装置 |
CN105022697A (zh) * | 2015-05-19 | 2015-11-04 | 江苏蓝深远望***集成有限公司 | 基于磁盘缓存的虚拟光盘库存储***替换算法 |
CN106528447A (zh) * | 2016-10-25 | 2017-03-22 | 郑州云海信息技术有限公司 | 一种分布式san的缓存同步方法 |
WO2017054714A1 (zh) * | 2015-09-30 | 2017-04-06 | 华为技术有限公司 | 磁盘阵列的读方法及装置 |
CN107291376A (zh) * | 2016-03-31 | 2017-10-24 | 伊姆西公司 | 利用缓冲区窃取对基于推送的输入/输出进行乐观流控的方法和*** |
CN109213430A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 存储管理方法和*** |
CN109582222A (zh) * | 2018-10-31 | 2019-04-05 | 华中科技大学 | 一种主机感知瓦记录磁盘中持久缓存的清理方法 |
CN110716689A (zh) * | 2018-07-11 | 2020-01-21 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及计算设备 |
CN110764697A (zh) * | 2019-09-29 | 2020-02-07 | 北京东软望海科技有限公司 | 一种数据管理方法及装置 |
CN111581118A (zh) * | 2019-12-31 | 2020-08-25 | 北京忆芯科技有限公司 | 计算加速*** |
CN113296686A (zh) * | 2020-05-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、设备及存储介质 |
CN117234430A (zh) * | 2023-11-13 | 2023-12-15 | 苏州元脑智能科技有限公司 | 一种缓存框架、数据处理方法、装置、设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5381539A (en) * | 1992-06-04 | 1995-01-10 | Emc Corporation | System and method for dynamically controlling cache management |
US6282617B1 (en) * | 1999-10-01 | 2001-08-28 | Sun Microsystems, Inc. | Multiple variable cache replacement policy |
-
2005
- 2005-07-15 CN CNB2005100842693A patent/CN100362462C/zh active Active
Cited By (34)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673188B (zh) * | 2008-09-09 | 2011-06-01 | 上海华虹Nec电子有限公司 | 一种固态硬盘的数据存取方法 |
CN101751225B (zh) * | 2008-12-04 | 2011-12-14 | 上海华虹Nec电子有限公司 | 一种混合硬盘的数据存取方法 |
CN101520743B (zh) * | 2009-04-17 | 2010-12-08 | 杭州华三通信技术有限公司 | 基于写时拷贝的数据存储方法及设备 |
CN102063264B (zh) * | 2009-11-18 | 2012-08-29 | 成都市华为赛门铁克科技有限公司 | 一种处理数据的方法、设备及*** |
CN101794259A (zh) * | 2010-03-26 | 2010-08-04 | 成都市华为赛门铁克科技有限公司 | 数据存储方法和装置 |
CN102253810B (zh) * | 2010-05-17 | 2014-02-05 | 深圳市世纪光速信息技术有限公司 | 数据读取方法、装置和*** |
CN102253810A (zh) * | 2010-05-17 | 2011-11-23 | 腾讯科技(深圳)有限公司 | 数据读取方法、装置和*** |
CN101937321B (zh) * | 2010-09-15 | 2013-08-21 | 中兴通讯股份有限公司 | 一种实现混合缓存的方法和装置 |
CN101937321A (zh) * | 2010-09-15 | 2011-01-05 | 中兴通讯股份有限公司 | 一种实现混合缓存的方法和装置 |
CN103823634A (zh) * | 2012-11-16 | 2014-05-28 | 腾讯科技(深圳)有限公司 | 一种支持无随机写模式的数据处理方法及*** |
CN103823634B (zh) * | 2012-11-16 | 2017-12-12 | 腾讯科技(深圳)有限公司 | 一种支持无随机写模式的数据处理方法及*** |
CN103136121A (zh) * | 2013-03-25 | 2013-06-05 | 中国人民解放军国防科学技术大学 | 一种固态盘的缓存管理方法 |
CN103136121B (zh) * | 2013-03-25 | 2014-04-16 | 中国人民解放军国防科学技术大学 | 一种固态盘的缓存管理方法 |
CN103488582B (zh) * | 2013-09-05 | 2017-07-28 | 华为技术有限公司 | 写高速缓冲存储器的方法及装置 |
CN103488582A (zh) * | 2013-09-05 | 2014-01-01 | 深圳市华为技术软件有限公司 | 写高速缓冲存储器的方法及装置 |
CN104484287A (zh) * | 2014-12-19 | 2015-04-01 | 北京麓柏科技有限公司 | 一种非易失性缓存实现方法及装置 |
CN104484287B (zh) * | 2014-12-19 | 2017-05-17 | 北京麓柏科技有限公司 | 一种非易失性缓存实现方法及装置 |
CN105022697A (zh) * | 2015-05-19 | 2015-11-04 | 江苏蓝深远望***集成有限公司 | 基于磁盘缓存的虚拟光盘库存储***替换算法 |
WO2017054714A1 (zh) * | 2015-09-30 | 2017-04-06 | 华为技术有限公司 | 磁盘阵列的读方法及装置 |
CN107291376B (zh) * | 2016-03-31 | 2020-10-20 | 伊姆西公司 | 用于利用存储设备写入数据的方法以及存储设备 |
CN107291376A (zh) * | 2016-03-31 | 2017-10-24 | 伊姆西公司 | 利用缓冲区窃取对基于推送的输入/输出进行乐观流控的方法和*** |
US10558387B2 (en) | 2016-03-31 | 2020-02-11 | EMC IP Holding Company LLC | Method and system for optimistic flow control for push-based input/output with buffer stealing |
CN106528447A (zh) * | 2016-10-25 | 2017-03-22 | 郑州云海信息技术有限公司 | 一种分布式san的缓存同步方法 |
CN109213430A (zh) * | 2017-06-30 | 2019-01-15 | 伊姆西Ip控股有限责任公司 | 存储管理方法和*** |
CN109213430B (zh) * | 2017-06-30 | 2021-09-10 | 伊姆西Ip控股有限责任公司 | 存储管理方法和*** |
CN110716689A (zh) * | 2018-07-11 | 2020-01-21 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及计算设备 |
CN110716689B (zh) * | 2018-07-11 | 2023-05-26 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置及计算设备 |
CN109582222A (zh) * | 2018-10-31 | 2019-04-05 | 华中科技大学 | 一种主机感知瓦记录磁盘中持久缓存的清理方法 |
CN110764697A (zh) * | 2019-09-29 | 2020-02-07 | 北京东软望海科技有限公司 | 一种数据管理方法及装置 |
CN110764697B (zh) * | 2019-09-29 | 2023-08-29 | 望海康信(北京)科技股份公司 | 一种数据管理方法及装置 |
CN111581118A (zh) * | 2019-12-31 | 2020-08-25 | 北京忆芯科技有限公司 | 计算加速*** |
CN113296686A (zh) * | 2020-05-29 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据处理方法、装置、设备及存储介质 |
CN117234430A (zh) * | 2023-11-13 | 2023-12-15 | 苏州元脑智能科技有限公司 | 一种缓存框架、数据处理方法、装置、设备和存储介质 |
CN117234430B (zh) * | 2023-11-13 | 2024-02-23 | 苏州元脑智能科技有限公司 | 一种缓存框架、数据处理方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100362462C (zh) | 2008-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1862475A (zh) | 磁盘阵列缓存的管理方法 | |
CN1282088C (zh) | 磁盘阵列装置及磁盘阵列装置的控制方法 | |
CN1212563C (zh) | 改进程序发送时间的***和方法 | |
CN106547476B (zh) | 用于数据存储***的方法和装置 | |
CN1159651C (zh) | 对数据存储库中的具有冗余拷贝的数据卷的平衡存取 | |
US7350017B2 (en) | Magnetic disk unit, file management system, and file management method | |
US7607000B1 (en) | Method for booting an operating system | |
US7853759B2 (en) | Hints model for optimization of storage devices connected to host and write optimization schema for storage devices | |
CN1295622C (zh) | 地址映射方法和映射信息管理方法及其闪速存储器 | |
CN1313933C (zh) | 数据存储装置、其控制方法以及磁盘存储装置 | |
CN1147648A (zh) | 数据存储装置及存储方法 | |
CN1690985A (zh) | 用于高速缓存的磁盘装置和控制方法 | |
CN1832489A (zh) | 一种对目的磁盘进行访问的方法和扩展磁盘容量的*** | |
CN1821979A (zh) | 存储*** | |
CN1848071A (zh) | 计算机***、盘装置以及数据更新控制方法 | |
US6925539B2 (en) | Data transfer performance through resource allocation | |
CN1279455C (zh) | 光纤通道-存储区域网络***的逻辑单元号高速缓存方法 | |
CN1538456A (zh) | 闪存存取装置及方法 | |
US20170004087A1 (en) | Adaptive cache management method according to access characteristics of user application in distributed environment | |
CN1851677A (zh) | 嵌入式处理器***及其数据操作方法 | |
CN106133707A (zh) | 高速缓存管理 | |
CN101046724A (zh) | 磁盘接口处理器以及磁盘操作命令的处理方法 | |
CN1306381C (zh) | 一种磁盘阵列数据的读写方法及并行读写方法 | |
CN1945521A (zh) | 一种非同质存储设备的虚拟化***及方法 | |
CN1848280A (zh) | 记录装置 |
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 |