基于磁盘进行i/o请求缓存的方法和装置以及san存储设备的制作方法

文档序号:6465705阅读:215来源:国知局

专利名称::基于磁盘进行i/o请求缓存的方法和装置以及san存储设备的制作方法
技术领域
:本发明涉及存储区域网络
技术领域
,尤其涉及一种基于磁盘进行I/O请求缓存的方法和装置,还涉及一种SAN存储设备。尿忮不SAN(StorageAreaNetwork,存储区域网络)是一种通过专用光纤通道网络或者IP网络将一个或多个网络存储设备与客户端连接起来的专用存储系统,用于提供客户端与存储系统之间的数据传输。SAN的工作原理为存储设备为客户端分配块存储资源,客户端和存储设备基于存储协议,如FC(FibreChannel,光纤通道)、iSCSI(internetSmallComputerSystemInterface,Internet小型计算机系统接口)进行通信,实现存储资源的数据读写操作。其中,存储设备的基础存储单元是磁盘,而且出于可靠性、大容量等方面的考虑,存储设备往往会使用多块磁盘进行数据存储。如图1所示,显示了存储设备上的一种资源管理模型存储设备使用RAID(RedundantArrayofIndependentDisks,独立冗余磁盘阵列)策略,如RAIDO、RAIDl、RAID5等,将多块磁盘构成一个阵列;在阵列上创建LV(LogicalVolume,逻辑巻);之后基于存储协议把LV共享给客户端,图中以iSCSI协议为例。客户端通过在分配给它的LV上进行数据读写操作实现在存储设备上的数据存储。但限于存储设备自身的处理能力,或者磁盘接口的处理能力,对于客户端的I/0(Input&Output,读/写操作)请求往往无法做到100%的及时响应和处理,因此必须先对客户瑞的I/0请求进行队列缓存,之后加以调度处理。现有技术中,1/0请求缓存技术是基于客户端或者说LV进行的存储设备基于LV为I/O请求建立缓存队列;在接收到客户端的I/O请求时,把不同LV的1/0请求分别放入不同的缓存队列中;再由CPU轮询不同缓存队列,按先进先出的原则调度处理。这种基于LV进行I/0请求缓存的缺陷在于导致了磁盘I/O操作的随机性。为了便于描述,在此基于图1所示的资源管理模型提供一个资源管理示例以4块磁盘(标记为Disk0/Disk1/Disk2/Disk3)创建一个RAID0阵列(标记为Array0),之后在Array0上创建3个逻辑巻(标记为LV0,LV1和LV2)。由于磁盘和LV的基本存储单位是扇区(每扇区固定512Byte),如果按照通常的以多个(2的整数次方,如4K个)扇区为单位进行空间管理,那么在每块磁盘的地址空间为016384的情况下,阵列Army0的地址空间就是065535;则可以分配LV0的地址空间为032767,LV1禾QLV2的地址空间均为0~16383。本示例中LV、阵列和磁盘之间的映射关系如表1所示<table>tableseeoriginaldocumentpage6</column></row><table>表1在表1示例的基础上,假定存储设备把LV0,LV1禾BLV2分别分配给三个客户端,则这三个客户端挂载磁盘后开始进行数据的读写操作。其中,以Write(LVID,Address,Data,Length)来描述一个写请求,以Read(LVID,Address,Length)来描述一个读请求,LVID标识一个逻辑巻,Address标识开始写入数据的起始地址空间,Data标识要写入的数据内容,Length标识要写入的数据长度。如果存储设备以时间顺序收到以下I/O请求Write(LV0,0,data,4096);Write(LV2,0,data,4096);Write(LV0,16384,data,4096);Write(LV1,0,data,4096);Read(LV2,0,4096);Read(LV0,0,4096);Read(LV1,0,4096);Write(LV0,16384,data,4096);......则根据表1的映射关系可以看出,这些I/O请求实际都是在DiskO上进行数据读写。但如果按照现有技术进行I/O请求缓存并按照先进先出的原则进行顺序处理的话,上述I/O请求将被分配进入不同的I/O缓存队列,并在磁盘DiskO上按照以下起始地址进行I/O操作0—>12288—>4096—>8192—>12288—〉0—>8192—〉4096,具有相当大的随机性。对于磁盘接口而言,1/0请求的地址越有顺序,磁盘接口的性能就越高;反之,1/0请求的地址越随机无序,磁盘接口的性能就越低。显然,现有技术中并未将磁盘、RAID阵列和LV关联起来,在缓存和调度I/0请求时没有考虑到磁盘因素,因此导致磁盘上的I/O操作随机性很高,磁盘磁头需要频繁跳转,并由此导致磁盘接口的性能严重下降。由于磁盘接口性能,或者说磁盘接口的I/O处理能力,是影响存储设备读写性能的一个重要因素,因此现有的进行I/O请求缓存的方案无疑导致了存储设备性能的下降。特别是随着存储技术的发展,SAN的应用领域日益广泛,比如在监控应用中,编码设备不断采集图像生成媒体数据,而且这些媒体数据需要长时间持续不断地写入到存储设备中保存起来,以支持后续的点播回放。这类应用表现出的特点是(1)每路图像数据读写所占用的带宽小,但平稳、持续时间长;(2)每路图像数据需要的存储空间一般较小,一块磁盘的空间可能存储几十路媒体流录像;(3)每次读写的数据量都比较大。在上述应用场合下,1/0请求的随机性表现的更为明显,磁盘接口的I/O处理能力将严重下降,成为存储设备的性能瓶颈。
发明内容本发明的实施例旨在提供能够基于磁盘进行I/O请求缓存的技术方案,以提高对同一块磁盘的I/O请求的执行顺序性,从而提高磁盘接口的I/O处理能力,进而提高存储设备的性能。为实现上述目的,本发明的实施例提供了一种基于磁盘进行I/O请求缓存的方法,适用于包括多个磁盘的SAN存储设备,包括为存储设备的每一个磁盘建立一个I/O请求缓存队列,并记录各磁盘与逻辑巻之间的地址映射关系;当接收到客户端I/0请求时,执行以下步骤51、提取该I/0请求所携带的逻辑巻标识和逻辑巻地址;52、根据所记录的地址映射关系,查找获得对应的磁盘和磁盘地址;53、按照预设的磁盘地址排序方式,将该I/O请求插入到该磁盘的1/0请求缓存队列中。本发明的实施例还提供r-种基于磁盘进行I/O请求缓存的装置,应用于包括多个磁盘的SAN存储设备,包括缓存队列建立单元,用于为存储设备的每一个磁盘建立一个I/0请求缓存队列;1/0请求缓存队列,由该缓存队列建立单元所建立,分别与SAN存储设备每一个磁盘对应;映射关系记录单元,用于记录磁盘与逻辑巻之间的地址映射关系;逻辑巻信息提取单元,用于提取客户端I/O请求所携带的逻辑巻标识和逻辑巻地址;磁盘及地址获取单元,与该逻辑巻信息提取单元和映射关系记录单元连接,用于根据所记录的地址映射关系,査找获得对应的磁盘和磁盘地址;I/O请求缓存控制单元,分别与该i/o请求缓存队列以及该磁盘及地址获取单元连接,用于按照预设的磁盘地址排序方式,将该I/O请求插入到该磁盘的I/O请求缓存队列中。本发明的实施例还提供了一种SAN存储设备,包括多个磁盘以及数据输入输出装置,还包括如上所述的基于磁盘进行i/o请求缓存的装置,该基于磁盘进行I/O请求缓存的装置分别与该数据输入输出装置和该多个磁盘连接。由上述技术方案可知,本发明的实施例通过基于磁盘建立10请求缓存队列,采用在缓存队列中为I/O请求排序的方式,具有以下有益效果1、在一定程度上保证了1/0请求磁盘处理的顺序性;2、提高了磁盘接口的I/0处理能力;3、提高了存储设备的性能。通过以下参照附图对优选实施例的说明,本发明的上述以及其它目的、特征和优点将更加明显。图1为现有技术中一种资源管理模型的示意图;图2为本发明提供的基于磁盘进行I/O请求缓存的方法一实施例的流程图;图3为图2所示方法中记录各磁盘与逻辑巻之间的地址映射关系一实施例的流程图;图4为木发明提供的基于磁盘进行I/O请求缓存的方法另一实施例的流程图;图5为本发明提供的基于磁盘进行I/0请求缓存的装置--实施例的框图;图6为图5所示I/O请求缓存控制单元一实施例的框图;图7为本发明提供的SAN存储设备一实施例的框图。具体实施方式下面将详细描述本发明的具体实施例。应当注意,这里描述的实施例只用于举例说明,并不用于限制本发明。首先,本发明的发明构思在于提高对同一块磁盘的I/O请求的执行顺序性,从而提高磁盘接口的I/0处理能力。为了实现这一发明构思,本发明提供了基于磁盘管理I/O请求缓存队列,并根据I/O请求对应的磁盘地址对队列中的I/O请求进行排队的技术方案,下面结合附图和实施例加以具体说明。请结合图2,显示了本发明提供的基于磁盘进行I/0请求缓存的方法一实施例的流程图,包括Al、为存储设备的每一个磁盘建立一个I/O请求缓存队列;当然,在建立之初,也就是初始队列时,该队列为空;A2、记录各磁盘与逻辑巻之间的地址映射关系;具体的,如图3所示,本步骤A2可以包括A21、检测到磁盘上线时,为磁盘生成一全局唯一标识;比如,可以根据磁盘所在机框号和槽位号来生成标识,如0号机框1号槽位的磁盘标识为01,以便后续的记录;A22、创建RAID阵列,并记录每一磁盘相应的阵列标识和阵列地址;需要指出,本步骤A22中RAID阵列的创建是进行逻辑巻创建之前的中间环节,SAN存储设备基于所创建的RAID阵列为客户端分配逻辑资源,进行逻辑巻的创建。这一歩骤是本领域技术人员的常用技术手段,在此不再赘述。但是,本歩骤A22中对于阵列标识和阵列地址的记录是可选的,比如当所有的磁盘仅创建一个阵列,那么就无需记录相应的阵列标识;当然,在多个阵列的情况下,为了区分不同的磁盘地址,需要相应记录阵列标识和阵列地址,以保证后续查找的顺利进行。A23、基于RAID阵列为客户端创建逻辑巻,且对于每一磁盘,采用一定的数据格式记录其全局唯一标识和其对应不同逻辑巻的磁盘地址,以及记录相应的逻辑巻标识和逻辑巻地址;虽然采用不同的RAID策略创建阵列式时,逻辑巻和磁盘之间的地址映射关系会存在区别,但该地址映射关系的存在却是必然的,也就是说,SAN存储设备中天然存在着磁盘和逻辑巻之间的地址映射关系;可以采用一定的数据结构来记录这种逻辑关系,如表1所示的二维表形式,也可以采用其他的记录形式;由于如何采用数据结构来描述数据之间的对应关系是本领域技术人员所熟知的手段,在此不再赘述。需要指出的是,当记录有阵列标识和阵列地址时,上述数据结构事实上记录的是LV、RAID阵列和磁盘三者之间的映射关系。经过上述步骤之后,本发明所提供的基于磁盘进行I/O请求缓存的方法可以对I/O请求进行基于磁盘的缓存处理,当接收到客户端i/o请求时,执行以下步骤Sl、提取该I/O请求所携带的LV标识和LV地址;52、根据所记录的地址映射关系,查找获得对应的磁盘和磁盘地址;53、按照预设的磁盘地址排序方式,将该1/0请求插入到磁盘的1/0请求缓存队列中;具体的,可以根据磁盘标识查找到对应的I/O请求缓存队列,如果队列为空,则直接把该I/O请求写入缓存队列;如果不为空,则根据1/o请求的磁盘地址在队列中进行排队处理。在一个具体实施例中,本步骤S3可以包括从磁盘的I/0请求缓存队列队尾开始依次进行与该I/O请求的磁盘地址比较,直至将该I/O请求插入到磁盘的I/O请求缓存队列中,使该I/O请求缓存队列中的全部I/O请求按照预设的磁盘地址排序方式排列;该预设的磁盘地址排序方式可以包括按照I/0请求的磁盘地址进行从大到小排序,或者,按照i/o请求的磁盘地址进行从小到大排序,其中后者更佳。通俗一点说,如果按照从小到大来排序,就是从I/O请求缓存队列的队尾开始比较已有的I/O请求如果最后一个节点对应的磁盘地址小于或者等于待插入的I/O请求,则直接把该I/O请求插入到缓存队列的队尾;否则,把该I/O请求插入到队列中两个已有节点之间,条件是前一个节点的磁盘地址小于或者等于该I/O请求的磁盘地址,而后一个节点的磁盘地址大于该I/O请求的磁盘地址。仍以前文示例为例,假定存储设备把LV0,LV1和LV2分别分配给三个客户端,这三个客户端挂载磁盘后开始进行数据的读写操作。如果存储设备以时间顺序收到以下I/O请求Write(LV0,0,data,4096);Write(LV2,0,data,4096);Write(LV0,16384,data,4096);Write(LV1,0,data,4096);Read(LV2,0,4096);Read(LV0,0,4096);Read(LV1,0,4096);Write(LV0,16384,data,4096);......那么依照本发明提供的技术方案,假设Diskl的I/O请求缓存队列为空,则按照磁盘地址由小到大的排序方式,上述I/O请求在Diskl的I/O请求缓存队列中的顺序会是Write(LV0,0,data,4096);Read(LV0,0,4096);Write(LV0,16384,data,4096);Write(LV0,16384,data,4096);Write(LV1,0,data,4096);Read(LV1,0,4096);Write(LV2,0,data,4096);Read(LV2,0,4096);……可见,经排序处理后,磁盘Diskl上的I/O操作起始地址依次是0—>0—>4096—>4096—>8192—>8192—>12288—>12288。可以看出,通过本发明所提供的基于磁盘进行i/o请求缓存的方法,能够使磁盘I/O操作顺序执行,减少随机性,磁盘磁头不需要多次频繁跳转,从而提高磁盘接口的读写能力,进而提高SAN存储设备的性能。需要指出,本发明所提供的基于磁盘进行i/o请求缓存的方法在一定程度上会牺牲响应的及时性。对于传统的I/O请求缓存技术而言,其主要面对的是企业级的应用环境,如数据库应用等,具有I/O请求突发性较大的特点,因此主要满足存储设备快速响应客户端I/O请求的要求;但对于应用领域日益广泛的存储设备而言,特别是对于监控应用来说,由于I/O操作的随机性比较明显,存储设备的性能瓶颈不再是CPU、接口带宽和内存等,而集中于磁盘接口的I/O处理能力,因此对于存储设备的要求也就随之变化对持续读/写性能的要求大为提高,而对及时响应的要求可以适当降低,以更好的满足视频监控类应用的要求。这也是本发明所提供方法的现实基础。但作为较佳的实施例,可以考虑对顺序性和及时性进行折中处理,即在队列深度超过N时,使新到的I/O请求不插入到前N个位置,从而保证缓存队列前面的i/o请求可以很快得到调度处理,其处理延时不至于过长。可以参见图4,显示了相应实施例的流程图。具体的,在图3所示实施例的基础上,步骤S3可以包括S3K识别磁盘的I/O请求缓存队列中已有的I/O请求数目是否大于预设的阈值N,比如10个;532、是则,保持队列中前N个I/0请求的排列次序不变,再从队尾至队列中已有的第N+l个I/O请求的区间内依次进行与所述I/O请求的磁盘地址比较,直至将该I/O请求插入到所述I/O请求缓存队列中,使I/O请求缓存队列中从N+l开始的I/O请求按照所述预设的磁盘地址排序方式排列;533、否则,从磁盘的I/O请求缓存队列队尾开始逐一进行与I/O请求的磁盘地址比较,直至将该i/o请求插入到磁盘的i/o请求缓存队列中,使I/O请求缓存队列中的全部I/O请求按照预设的磁盘地址排序方式排从本实施例可以看出,对于一个I/0请求的缓存队列而言,前N个I/O请求的顺序不会被打乱,因此这几个I/O请求将得到较快的执行。由于这N个I/O请求之间也是按照预设的磁盘地址排序方式排列,因此虽然第N个I/O请求和第N+l个I/O请求之间会存在磁盘磁头跳转的可能,但这种跳转无疑不会过于频繁的发生。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,包括为存储设备的每一个磁盘建立一个I/O请求缓存队列,并记录各磁盘与逻辑巻之间的地址映射关系;当接收到客户端I/0请求时,执行如下步骤51、提取所述I/0请求所携带的逻辑巻标识和逻辑巻地址;52、根据所记录的地址映射关系,查找获得对应的磁盘和磁盘地址;53、按照预设的磁盘地址排序方式,将所述I/O请求插入到所述磁盘的I/0请求缓存队列中;所述的存储介质包括ROM/RAM(ReadOnlyMemory/Random-AccessMemory,只读存储器/随机访问内存)、磁碟或者光盘等。相应的,本发明还提供了一种基于磁盘进行I/O请求缓存的装置100,应用于包括多个磁盘的SAN存储设备,请结合图5,包括缓存队列建立单元101,用于为存储设备的每一个磁盘建立一个1/0请求缓存队列102;1/0请求缓存队列102,由该缓存队列建立单元101所建立,分别与SAN存储设备每一个磁盘对应,初始队列为空;映射关系记录单元103,用于记录各磁盘与逻辑巻之间的地址映射具体的,映射关系记录单元103可以包括磁盘标识生成模块(图中未示),用于在检测到磁盘上线时为磁盘生成一全局唯一标识;以及记录模块(图中未示),与该磁盘标识生成模块连接,用于对于每一磁盘,采用一定的数据格式记录其全局唯一标识和其对应不同逻辑巻的磁盘地址,以及记录相应的逻辑巻标识和逻辑巻地址,该数据格式可以为二维表。需要指出,记录模块是在现有SAN设备创建RAID阵列以及进一歩创建逻辑巻的基础上,进行磁盘和逻辑巻之间地址映射关系的记录的。至于SAN设备如何创建RAID阵列以及如何基于RAID阵列创建逻辑巻,作为本领域技术人员的常用技术手段,在此不再赘述。但是,如果SAN设备创建的RAID阵列不只一个,那么记录模块还需要记录相应的阵列标识和阵列地址,即记录LV、RAID阵列和磁盘三者之间的映射关系,以保证磁盘及地址获取单元105能够查找获得正确的磁盘和磁盘地址。逻辑巻信息提取单元104,用于提取客户端I/O请求所携带的LV标识和LV地址;磁盘及地址获取单元105,与逻辑巻信息提取单元104和映射关系记录单元103连接,用于根据所记录的地址映射关系,査找获得对应的磁盘和磁盘地址,该磁盘地址将作为在相应磁盘I/O请求缓存队列102中排序的依据;1/0请求缓存控制单元106,分别与I/0请求缓存队列102以及磁盘及地址获取单元105连接,用于按照预设的磁盘地址排序方式,将I/0请求插入到该磁盘的I/0请求缓存队列102中。在一个具体实施例中,1/0请求缓存控制单元106可以包括排序方式保存模块1061,用于保存预设的磁盘地址排序方式,推荐为按照磁盘地址从小到大进行排序,当然按照磁盘地址由大至小排序,或者采用其他排序方式亦可;缓存队列比较模块1062,用于从该磁盘的1/0请求缓存队列102队尾开始依次进行与I/O请求的磁盘地址比较;1/0请求插入模块1063,与排序方式保存模块1061和缓存队列比较模块1062连接,用于接收缓存队列比较模块1062的比较结果,并在某一位置将该I/O请求插入到I/O请求缓存队列102中,使I/O请求缓存队列102中的全部I/O请求按照预设的磁盘地址排序方式排列;当然,为了避免缓存队列比较模块1062继续进行无益的比较,1/0请求插入模块1063可以在合适的位置向缓存队列比较模块1062发送--指令,使其停止继续比较。可以看出,通过I/0请求缓存控制单元106进行I/0请求插入后,能够使磁盘I/0操作顺序执行,减少随机性,磁盘磁头不需要多次频繁跳转,从而提高磁盘接口的读写能力,进而提高SAN存储设备的性能。上述实施例中是I/0请求缓存队列102内所有的节点都按照磁盘地址排序,这往往在一定程度上对部分I/0请求处理的及时性造成较大影响;作为一较佳的具体实施例,可以考虑对顺序性和及时性进行折中处理,即在队列深度超过N时,使新到的I/0请求不插人到前N个位置,从而保证缓存队列102前面的I/O请求可以很快得到调度处理,其处理延时不至于过长。可以参见图6,上述描述的I/O请求缓存控制单元106进一步包括队列纵深识别模块1064,用于识别磁盘的I/O请求缓存队列102中已有的I/O请求数目是否大于预设的阈值N,并在已有I/0请求数目大于预设的阈值N的情况下相应指令缓存队列比较模块1062;则缓存队列比较模块1062与队列纵深识别模块1064连接,用于根据队列纵深识别模块1064的指令,在从队尾至队列中已有的第N+1个I/0请求的区间内,依次进行与待插入I/0请求的磁盘地址比较;I/0请求插入模块1063在某一位置将该待插入I/O请求插入到I/O请求缓存队列102中,使所述I/O请求缓存队列102中从N+l开始的I/O请求按照所述预设的磁盘地址排序方式排列。当然,如果己有I/0请求数目不大于预设的阈值N,那么队列纵深识别模块1064可以通知不大于阈值的结果或者不通知,由缓存队列比较模块1062和I/O请求插入模块1063实现全队列的排序插入。相应的,本发明还提供了一种SAN存储设备10的实施例,如图7所示,包括多个磁盘200以及数据输入输出装置300,还包括如上所述的基于磁盘进行I/O请求缓存的装置100,该基于磁盘进行I/O请求缓存的装置100分别与数据输入输出装置300和多个磁盘200连接,通过尽可能保证同一块磁盘上I/O操作的磁盘地址的顺序性,获得更好的磁盘接口I/O性能,从而保证SAN存储设备的高性能。虽然已参照几个典型实施例描述了本发明,但应当理解,所用的术语是说明和示例性、而非限制性的术语。由于本发明能够以多种形式具体实施而不脱离发明的精神或实质,所以应当理解,上述实施例不限于任何前述的细节,而应在随附权利要求所限定的精神和范围内广泛地解释,因此落入权利要求或其等效范围内的全部变化和改型都应为随附权利要求所涵盖。权利要求1.一种基于磁盘进行I/O请求缓存的方法,适用于包括多个磁盘的SAN存储设备,其特征在于,包括为存储设备的每一个磁盘建立一个I/O请求缓存队列,并记录各磁盘与逻辑卷之间的地址映射关系;当接收到客户端I/O请求时,执行以下步骤S1、提取所述I/O请求所携带的逻辑卷标识和逻辑卷地址;S2、根据所记录的地址映射关系,查找获得对应的磁盘和磁盘地址;S3、按照预设的磁盘地址排序方式,将所述I/O请求插入到所述磁盘的I/O请求缓存队列中。2.根据权利要求1所述的基于磁盘进行I/0请求缓存的方法,其特征在于,所述记录磁盘与逻辑巻之间的地址映射关系的步骤包括检测到磁盘上线时,为磁盘生成一全局唯一标识;创建RAID阵列;基于RAID阵列为客户端创建逻辑巻,且对于每一磁盘,采用一定的数据格式记录其全局唯一标识和其对应不同逻辑巻的磁盘地址,以及记录相应的逻辑巻标识和逻辑巻地址。3.根据权利要求2所述的基于磁盘进行I/O请求缓存的方法,其特征在于,所述创建RAID阵列的步骤还包括记录每一磁盘相应的阵列标识和阵列地址。。4.根据权利要求1所述的基于磁盘进行I/O请求缓存的方法,其特征在于,所述步骤S3包括从所述磁盘的I/0请求缓存队列队尾开始依次进行与所述I/O请求的磁盘地址比较,直至将所述I/O请求插入到所述磁盘的I/O请求缓存队列中,使所述I/O请求缓存队列中的全部I/O请求按照所述预设的磁盘地址排序方式排列。5.根据权利要求1所述的基于磁盘进行I/O请求缓存的方法,其特征在于,所述歩骤S3包括S31、识别所述磁盘的1/0请求缓存队列中已有的1/0请求数目是否大于预设的阈值N;S32、是则,保持队列中前N个I/0请求的排列次序不变,在从队尾至队列中己有的第N+l个I/O请求的区间内依次进行与所述I/O请求的磁盘地址比较,直至将所述i/o请求插入到所述i/o请求缓存队列中,使所述I/O请求缓存队列中从N+l开始的I/O请求按照所述预设的磁盘地址排序方式排列;S33、否则,从所述磁盘的I/0请求缓存队列队尾开始逐一进行与所述I/O请求的磁盘地址比较,直至将所述I/O请求插入到所述磁盘的I/O请求缓存队列中,使所述I/O请求缓存队列中的全部I/O请求按照所述预设的磁盘地址排序方式排列。6.根据权利要求4或5所述的基于磁盘进行I/O请求缓存的方法,其特征在于,所述预设的磁盘地址排序方式包括按照I/O请求的磁盘地址进行从大到小排序,或者,按照i/o请求的磁盘地址进行从小到大排序。7.—种基于磁盘进行I/O请求缓存的装置,应用于包括多个磁盘的SAN存储设备,其特征在于,包括缓存队列建立单元,用于为存储设备的每一个磁盘建立一个I/O请求缓存队列;I/O请求缓存队列,由所述缓存队列建立单元所建立,分别与所述SAN存储设备每一个磁盘对应;映射关系记录单元,用于记录各磁盘与逻辑巻之间的地址映射关系;逻辑巻信息提取单元,用于提取客户端I/O请求所携带的逻辑巻标识和逻辑巻地址;磁盘及地址获取单元,与所述逻辑巻信息提取单元和映射关系记录单元连接,用于根据所记录的地址映射关系,查找获得对应的磁盘和磁盘地址;I/O请求缓存控制单元,分别与所述I/O请求缓存队列以及所述磁盘及地址获取单元连接,用于按照预设的磁盘地址排序方式,将所述I/O请求插入到所述磁盘的1/o请求缓存队列中。8.根据权利要求7所述的基于磁盘进行I/O请求缓存的装置,其特征在于,所述映射关系记录单元包括磁盘标识生成模块,用于在检测到磁盘上线时为磁盘生成一全局唯一标识;记录模块,与所述磁盘标识生成模块连接,用于对于每一磁盘,采用一定的数据格式记录其全局唯一标识和其对应不同逻辑巻的磁盘地址,以及记录相应的逻辑巻标识和逻辑巻地址。9.根据权利要求7所述的基于磁盘进行I/O请求缓存的装置,其特征在于,所述I/0请求缓存控制单元包括排序方式保存模块,用于保存预设的磁盘地址排序方式;缓存队列比较模块,用于从所述磁盘的I/O请求缓存队列队尾开始依次进行与所述I/O请求的磁盘地址比较;1/0请求插入模块,与所述排序方式保存模块和缓存队列比较模块连接,用于接收所述缓存队列比较模块的比较结果,并在某一位置将所述I/O请求插入到所述I/O请求缓存队列中,使所述I/O请求缓存队列中的全部I/O请求按照所述预设的磁盘地址排序方式排列。10.根据权利要求9所述的基于磁盘进行I/O请求缓存的装置,其特征在于,所述I/0请求缓存控制单元还包括队列纵深识别模块,用于识别所述磁盘的I/O请求缓存队列中已有的I/O请求数目是否大于预设的阈值N,并在已有I/O请求数H大于预设的阈值N的情况下相应指令所述缓存队列比较模块;所述缓存队列比较模块与所述队列纵深识别模块连接,用于根据所述队列纵深识别模块的指令,在从队尾至队列中已有的第N+l个I/O请求的区间内,依次进行与所述I/O请求的磁盘地址比较;所述I/O请求插入模块在某一位置将所述I/O请求插入到所述I/O请求缓存队列中,使所述I/O请求缓存队列中从N+l开始的I/O请求按照所述预设的磁盘地址排序方式排列。11.一种SAN存储设备,包括多个磁盘以及数据输入输出装置,其特征在于,还包括如权利要求7-10任一所述的基于磁盘进行I/O请求缓存的装置,所述基于磁盘进行I/O请求缓存的装置分别与所述数据输入输出装置和所述多个磁盘连接。全文摘要本发明公开了一种基于磁盘进行I/O请求缓存的方法和装置,适用于包括多个磁盘的SAN存储设备。该方法包括为存储设备的每一个磁盘建立一个I/O请求缓存队列,并记录各磁盘与逻辑卷之间的地址映射关系;当接收到客户端I/O请求时,执行以下步骤提取该I/O请求所携带的逻辑卷标识和逻辑卷地址;根据所记录的地址映射关系,查找获得对应的磁盘和磁盘地址;按照预设的磁盘地址排序方式,将该I/O请求插入到该磁盘的I/O请求缓存队列中。本发明还公开了一种SAN存储设备。通过本发明,在一定程度上保证了I/O请求磁盘处理的顺序性;提高了磁盘接口的I/O处理能力;提高了存储设备的性能。文档编号G06F3/06GK101299181SQ20081013263公开日2008年11月5日申请日期2008年7月8日优先权日2008年7月8日发明者张晓琳申请人:杭州华三通信技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1