CN104951239B - 高速缓存驱动器、主机总线适配器及其使用的方法 - Google Patents
高速缓存驱动器、主机总线适配器及其使用的方法 Download PDFInfo
- Publication number
- CN104951239B CN104951239B CN201410117237.8A CN201410117237A CN104951239B CN 104951239 B CN104951239 B CN 104951239B CN 201410117237 A CN201410117237 A CN 201410117237A CN 104951239 B CN104951239 B CN 104951239B
- Authority
- CN
- China
- Prior art keywords
- data
- hba
- requests
- cache driver
- hdd
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0866—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
- G06F12/0868—Data transfer between cache memory and other subsystems, e.g. storage devices or host systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/382—Information transfer, e.g. on bus using universal interface adapter
- G06F13/385—Information transfer, e.g. on bus using universal interface adapter for adaptation of a particular data processing system to different peripheral devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/311—In host system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了一种高速缓存驱动器、主机总线适配器及其使用的方法,其中高速缓存驱动器的方法包括:接收访问数据的第一I/O请求;响应所述第一I/O请求访问的数据是热数据并且所述第一I/O请求需要访问标准硬盘HDD,向主机总线适配器HBA发送第二I/O请求,该第二I/O请求要求所述HBA向所述HDD和固态硬盘SSD发送访问数据的第三I/O请求。主机总线适配器的方法包括:从高速缓存驱动器接收第二I/O请求,该第二I/O请求要求该HBA向标准硬盘HDD和固态硬盘SSD发送访问数据的第三I/O请求;发送所述第三I/O请求。该发明能够减少访问HDD和SSD时高速缓存器和HBA之间的I/O操作。
Description
技术领域
本发明涉及数据存储,更具体地,涉及一种高速缓存驱动器、主机总线适配器及其使用的方法。
背景技术
固态硬盘(SSD)由于访问速度非常快,现已经被广泛用于标准硬盘(HDD)的高速缓存(Cache)。主机缓存软件动态地管理固态硬盘与标准硬盘驱动器的使用,从而为用户提供跨硬盘的全部容量的SSD级别的性能。
目前,主机缓存软件是作为操作***的驱动程序,称为高速缓存驱动器(CacheDriver),来实现的。在对热数据的读写等很多I/O操作中,需要对HDD和SSD都执行I/O操作,在操作中,高速缓存驱动器捕获主机操作***发送给HDD的输入/输出(I/O)数据发送给HDD(第一次I/O操作),同时计算数据的热度,即访问的频率。如果数据是“热”数据,即访问频率较高的数据,需要更新到固态硬盘的高速缓存中,则高速缓存驱动程序就会复制数据,并且传输到固态硬盘中(第二次I/O操作),因此,对于高速缓存驱动程序来说,对HDD和SSD都执行I/O操作,需要两次I/O操作。并且,高速缓存驱动程序访问HDD和SSD时,在高速缓存驱动器内采用的缓冲区是不同的存储空间,这样也要占据较多的存储空间。
高速缓存驱动器通过主机总线适配器(Host Bus Adapter,HBA)访问HDD和SSD。HBA是一个在服务器和存储装置间提供输入/输出(I/O)处理和物理连接的电路板和/或集成电路适配器。最常用的服务器内部I/O通道是PCI,它们是连接服务器CPU和***设备的通讯协议。存储***的I/O通道有光纤、SAS和SATA。而HBA的作用就是实现内部通道协议PCI和FC、SAS、SATA协议之间的转换。主机总线适配卡内部有一个小的中央处理器,一些内存作为数据缓冲区以及连接SAS、SATA总线的连接器件等。这个小的中央处理器负责PCI和SAS、SATA通道两种协议的转换以及其它功能要求。HBA减轻了主处理器在数据存储和检索任务的负担,它能够提高服务器的性能。
由于高速缓存驱动器访问HDD和SSD需要两次I/O操作,即高速缓存驱动器和HBA因为访问HDD和SSD之间的交互也要两次I/O操作。另外,HBA访问HDD和SSD时,在HBA内采用的缓冲区是不同的存储空间,这样也要占据较多的存储空间。
发明内容
根据本发明的一个方面,提供了一种高速缓存驱动器使用的方法,包括:接收访问数据的第一I/O请求;以及响应所述第一I/O请求访问的数据是热数据并且所述第一I/O请求需要访问标准硬盘HDD,向主机总线适配器HBA发送第二I/O请求,该第二I/O请求要求所述HBA向所述HDD和固态硬盘SSD发送访问数据的第三I/O请求。
根据本发明的第二个方面,提供了一种主机总线适配器HBA使用的方法,包括:从高速缓存驱动器接收第二I/O请求,该第二I/O请求要求该HBA向标准硬盘HDD和固态硬盘SSD发送访问数据的第三I/O请求;以及发送所述第三I/O请求。
根据本发明的又一个方面,提供了一种高速缓存驱动器,包括:第一接收装置,被配置为接收访问数据的第一I/O请求;以及发送装置,被配置为响应所述第一I/O请求访问的数据是热数据并且所述第一I/O请求需要访问标准硬盘HDD,向主机总线适配器HBA发送第二I/O请求,该第二I/O请求要求所述HBA向所述HDD和固态硬盘SSD发送访问数据的第三I/O请求。
根据本发明的再一个方面,提供了一种主机总线适配器HBA,包括:接收装置,被配置为从高速缓存驱动器接收第二I/O请求,该第二I/O请求要求该HBA向标准硬盘HDD和固态硬盘SSD发送访问数据的第三I/O请求;以及
发送装置,被配置为发送所述第三I/O请求。
本发明提出的方法和设备,能够减少访问HDD和SSD时高速缓存驱动程序和HBA之间的I/O操作,减少高速缓存驱动器以及HBA使用的存储空间。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机***/服务器12的框图;
图2示出了现有技术中,对于热数据的读缺失的I/O操作涉及到的流程;
图3示出了根据本发明一种实施方式的一种高速缓存驱动器使用方法的流程;
图4示意性示出的主机总线适配器HBA使用的方法的流程图;
图5示出了使用本发明的技术方案后的热数据的的I/O操作涉及到的流程;
图6示出了根据本发明一种实施方式的高速缓存驱动器600的结构框图;以及
图7示出了根据本发明一种实施方式的主机总线适配器700的结构框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算机***/服务器12的框图。图1显示的计算机***/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机***/服务器12以通用计算设备的形式表现。计算机***/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
计算机***/服务器12典型地包括多种计算机***可读介质。这些介质可以是任何能够被计算机***/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机***/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机***/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机***/服务器12交互的设备通信,和/或与使得该计算机***/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机***/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机***/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机***/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
高速缓存驱动器的原理是:收到应用程序的读写请求首先根据缓存算法比如MRU,LRU等算法计算数据热度;然后决定是否需要缓存。对于需要缓存的数据,根据请求的类型(即读请求还是写请求),利用IO的调度将数据从HDD复制到SSD。
高速缓存驱动器在对热数据的读写等很多I/O操作中,需要对HDD和SSD都执行I/O操作。这些I/O操作具体来说可以包括读操作和写操作,更具体来说,包括“读缺失”(ReadMiss)、“写命中”(Write Hit)和“写缺失”(Write Miss)。
一般来说,应用程序通过高速缓存驱动器访问数据。“读缺失”是指应用程序读的数据是热数据,但是数据没有存储在SSD的高速缓存中。“写命中”是指应用程序要写的数据是热数据,并且已经存储在SSD的高速缓存中。“写缺失”是指应用程序要写的数据是热数据,并且没有存储在SSD的高速缓存中。
图2示出了现有技术中,对于热数据的读缺失的I/O操作涉及到的流程。根据图2,在步骤1,应用程序产生一个读请求;在步骤2,高速缓存驱动器收到请求,计算数据热度后裁定该请求的数据为热数据,但该数据没有存储在SSD缓存中,即读缺失,因此高速缓存驱动器将该读请求下发到HBA中读取HDD的数据(高速缓存驱动器的第一次I/O操作),同时,操作***为高速缓存驱动器分配一份内存(即“数据缓冲区”)来存储读入的数据;在步骤3,HBA收到读请求后,发送命令到HDD读取数据;在步骤4,HDD返回数据给HBA;在步骤5,HBA返回数据给高速缓存驱动器,存储在数据缓冲区中;在步骤6,操作***为高速缓存驱动器额外分配一份内存(即“影子数据缓冲区”),并将读回来的数据复制一份到影子数据缓冲区;在步骤7,高速缓存驱动器将读数据返回给应用程序;在步骤8,高速缓存驱动器产生一个新的写请求发送给HBA要求将影子数据缓冲区的数据写到SSD中(高速缓存驱动器的第二次I/O操作);在步骤9,HBA收到写请求后,发送命令到SSD写数据。
现有技术中,对于热数据的写缺失和写命中的I/O操作涉及到的流程也可以使用图2所示。其过程描述如下:
在步骤1,应用程序产生一个写请求;在步骤2,高速缓存驱动器收到写请求,操作***为高速缓存驱动器中分配一份内存(即“数据缓冲区”)来存储写入的数据,高速缓存驱动器计算数据热度后裁定该请求的数据为热数据,但该数据没有存储在SSD缓存中(对应写缺失)或者该数据存储在SSD缓存中(对应写命中);在步骤3,高速缓存驱动器将该写请求下发到HBA中(高速缓存驱动器的第一次I/O操作),对应写命中,高速缓存驱动器还将缓存在SSD中的数据失效;在步骤4,HBA收到写请求后,发送命令到HDD写入数据;在步骤5,HDD通知HBA写数据结束;在步骤6,HBA返回写数据成功给高速缓存驱动器;在步骤7,操作***为高速缓存驱动器额外分配一份内存(即“影子数据缓冲区”),并将写数据复制一份到影子数据缓冲区;在步骤8,高速缓存驱动器产生一个新的写请求发送给HBA要求将影子数据缓冲区的数据写到SSD中(高速缓存驱动器的第二次I/O操作);在步骤9,HBA收到写请求后,发送命令到SSD写数据。高速缓存驱动器产生一个新的写请求将影子数据缓冲区的数据写到SSD中。
由上述过程看出,高速缓存驱动器在对热数据的读写等很多I/O操作中,需要对HDD和SSD都执行I/O操作。现有的解决方案中高速缓存驱动器要进行两次I/O操作,这两次I/O操作各自需要分配内存缓冲区,既浪费时间,又浪费资源。
本发明提出了一种改进的高速缓存驱动器使用的方法以及对应的主机总线适配器HBA使用的方法。图3示出了根据本发明一种实施方式的一种高速缓存驱动器使用的方法的流程图,根据图3,该方法包括:在步骤S301,接收访问数据的第一I/O请求;在步骤S303,响应所述第一I/O请求访问的数据是热数据并且所述第一I/O请求需要访问标准硬盘HDD,向主机总线适配器HBA发送第二I/O请求,该第二I/O请求要求所述HBA向所述HDD和固态硬盘SSD发送访问数据的第三I/O请求。可见,在该技术方案中,高速缓存驱动器只需要发送一次第二I/O请求,就可以既向HDD又向SSD发送访问数据的第三I/O请求。在一种实施方式中,步骤S303可以表现为一个高速缓存驱动器向HBA发送的命令。具体可以包括热数据读缺失命令,热数据写命中命令和热数据写缺失命令等。
在一种实施方式中,在步骤S301和步骤S303之间还包括步骤S302:判断第一I/O请求访问的数据是热数据,以及判断该第二I/O请求需要向标准硬盘HDD发送访问数据的第三I/O请求。因为只有判断该数据是热数据,才说明该数据需要存储在SSD中;加上判断该第二I/O请求需要向标准硬盘HDD发送访问数据的第三I/O请求,就说明该第一I/O请求需要访问HDD和SSD。
在一种实施方式中,所述第一I/O请求为读数据请求,并且所述第二I/O请求要求从所述HDD读数据,以及将从所述HDD读到的数据写入所述SSD。当第一I/O请求为读数据请求时,则以一定是“读缺失”的情况,即SSD中没有缓存要读的热数据。如果是“读命中”的情况,则不需要访问HDD,不属于本发明保护的范围。在“读缺失”情况下,数据需要从HDD中读取,并且写入到SDD中。具体如何实现,是属于HBA的内容,后面关于HBA的部分会详细描述。如果HBA从HDD读取数据,高速缓存器会从所述HBA接收从所述HDD读到的数据。
在一种实施方式中,所述第一I/O请求为写数据请求,并且所述第三I/O请求要求将所述写数据请求涉及的数据写入所述HDD以及将所述写数据请求涉及的数据写入所述SSD。当第一I/O请求为写数据请求时,既可以是“写命中”,也可以是“写缺失”的情况。这时数据集要写到HDD中,也要写到SSD中,具体如何写,是属于HBA的内容,后面关于HBA的部分会详细描述。
上述所述I/O请求涉及到的数据,无论是读取的数据还是写入的数据,都存储在数据缓冲区中,,这里,数据缓冲区是操作***响应于接收到所述第一I/O请求而为所述高速缓存驱动器分配的。可见,该技术方案中,由于只涉及到一次I/O操作,只需要现有技术中的数据缓冲区,无需现有技术中的影子缓冲区,也节省了存储资源。
在同一个发明构思下,本发明的实施例还公开了一种主机总线适配器HBA使用的方法,图4示意性示出的主机总线适配器HBA使用的方法的流程图,根据图4,该方法包括:在步骤S401,从高速缓存驱动器接收第二I/O请求,该第二I/O请求要求该HBA向标准硬盘HDD和固态硬盘SSD发送访问数据的第三I/O请求;也就是,接收图3中高速缓存驱动器发出的第二I/O请求;在步骤S402,发送所述第三I/O请求。可见,在该技术方案中,HBA只需要从高速缓存驱动器接收一次第二I/O请求,就可以既向所述HDD又向SSD发送访问数据的第三I/O请求。
与高速缓存驱动器使用的方法的实施例一样,在一种实施方式中,所述第二I/O请求要求从所述HDD读数据,以及将从所述HDD读到的数据写入所述SSD。此时,步骤S402包括:向所述HDD发送读数据的请求;从所述HDD接收读到的数据;以及将从所述HDD读到的数据写入所述SSD。
与高速缓存驱动器使用的方法的实施例一样,在另一种实施方式中,所述所述第二I/O请求涉及写数据请求,该第三I/O请求要求将所述写数据请求涉及的数据写入所述HDD以及将所述写数据请求涉及的数据写入所述SSD。步骤S402包括:向所述HDD发送写所述写数据请求涉及的数据的请求;以及向所述SSD发送写所述写数据请求涉及的数据的请求。其中,对于写命中的情况,也就是SSD中缓存了写数据,可以直接覆盖写;对于写缺失的情况,也就是SSD中没有缓存了写数据,可以直接向SSD中写数据。
在一种实施方式中,第二I/O请求涉及的数据唯一地存储在所述HBA的数据缓冲区中。这里唯一的含义是:由于HBA只涉及到一次I/O操作,HBA只需要一个数据缓冲区,存储一次I/O操作相关的数据,而不是像现有技术那样需要两个存储区存储两份相同的内容,这样也节省了存储资源。
图5示出了使用本发明的技术方案后的热数据的的I/O操作涉及到的流程,根据图5,在步骤1,应用程序产生一个I/O请求,该I/O请求可以是读请求或者写请求;在步骤2,高速缓存驱动器收到I/O请求,计算数据热度后裁定该请求的数据为热数据,并且为读缺失、写命中或者写缺失之中的一种情况,高速缓存驱动器向HBA发送第二个I/O请求,该第二I/O请求要求HBA向HDD和SSD发送访问数据的第三I/O请求;在步骤3,HBA对HDD和SSD执行第三I/O操作,从而读取或者写入数据,具体来说,如果第一I/O请求是读请求,第二I/O请求为向HDD发送读数据的请求以及向所述SSD发送将从所述HDD读到的数据写入的请求;如果第一I/O请求是写请求,第二I/O请求为要求向所述HDD发送写数据以及向所述SSD发送写数据的请求;在步骤4,HBA从HDD和SSD中获得第二I/O操作结果,具体来说,如果第一I/O请求是读请求,第二I/O请求结果是HDD中读出的数据;如果I/O请求是写请求,第二I/O请求结果是写成功标记。在步骤5,HBA将第二I/O请求结果返回给高速缓存驱动器。高速缓存驱动器缓存成功。在步骤6,高速缓存驱动器返回响应结果到应用程序中。
在同一个发明构思下,本发明还公开了一种高速缓存驱动器,图6示出了根据本发明一种实施方式的高速缓存驱动器600的结构框图,根据图6,高速缓存驱动器700包括:第一接收装置601,被配置为接收访问数据的第一I/O请求;以及发送装置602,被配置为响应所述第一I/O请求访问的数据是热数据并且所述第一I/O请求需要访问标准硬盘HDD,向主机总线适配器HBA发送第二I/O请求,该第二I/O请求要求所述HBA向所述HDD和固态硬盘SSD发送访问数据的第三I/O请求。
在一种实施方式中,所述第一I/O请求为读数据的请求,并且所述第三I/O请求要求从所述HDD读数据,以及将接收的读到的数据写入所述SSD。因此,高速缓存驱动器700,还包括:第二接收装置(图6未示出),被配置为从所述HBA接收从所述HDD读到的数据。
在一种实施方式中,所述第一I/O请求为写数据请求,并且所述第三I/O请求要求将所述写数据请求涉及的数据写入所述HDD以及将所述写数据请求涉及的数据写入所述SSD。
在一种实施方式中,所述第一I/O请求涉及到的数据存储在数据缓冲区中,其中,所述数据缓冲区是操作***响应于接收到所述第一I/O请求而为所述高速缓存驱动器分配的。
在同一个发明构思下,本发明还公开了一种主机总线适配器HBA,图7示出了根据本发明一种实施方式的主机总线适配器700的结构框图,根据图7,主机总线适配器700包括:接收装置701,被配置为从高速缓存驱动器接收第二I/O请求,该第二I/O请求要求该HBA向标准硬盘HDD和固态硬盘SSD发送访问数据的第三I/O请求;以及发送装置702,被配置为发送所述第三I/O请求。
在一种实施方式中,所述第三I/O请求要求从所述HDD读数据,以及将从所述HDD读到的数据写入所述SSD。因此,在一种实施方式中,所述发送装置702包括(图7未示出):读数据请求发送装置,被配置为向所述HDD发送读数据的请求;数据接收装置,被配置为从所述HDD接收读到的数据;以及写数据请求发送装置,被配置为将接收的读到的数据写入所述SSD。
在一种实施方式中,所述第二I/O请求涉及写数据请求,该第三I/O请求要求将所述写数据请求涉及的数据写入所述HDD以及将所述写数据请求涉及的数据写入所述SSD。
在一种实施方式中,所述第二I/O请求涉及的数据唯一地存储在所述HBA的数据缓冲区中。
本发明可以是***、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Java、Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (4)
1.一种高速缓存驱动器使用的方法,包括:
由主机的高速缓存驱动器接收访问数据的第一I/O请求,其中所述第一I/O请求为读数据请求;以及
由所述高速缓存驱动器响应所述第一I/O请求访问的数据不在固态硬盘SSD中,并且所述第一I/O请求需要访问标准硬盘HDD,向主机总线适配器HBA发送第二I/O请求,该第二I/O请求要求所述HBA向所述HDD和SSD发送访问数据的第三I/O请求;
响应于所述HBA从所述高速缓存驱动器接收所述第二I/O请求,由所述HBA发送所述第三I/O请求,所述第三I/O请求是在一次I/O操作中完成的,其包括:
由所述HBA向所述HDD发送读数据请求;
响应于从所述HBA接收从所述HDD读到的数据,将所述读到的数据写入所述HBA的数据缓冲区;
由所述HBA向所述SSD发送写数据请求,以将所述HBA的数据缓冲区的数据写入所述SSD;
由所述HBA向所述高速缓存驱动器发送所述读到的数据;
由所述高速缓存驱动器从所述HBA接收所述读到的数据;以及
由所述高速缓存驱动器在所述高速缓存驱动器的数据缓冲区缓存所述读到的数据。
2.根据权利要求1所述的方法,其中,所述高速缓存驱动器的数据缓冲区是操作***响应于接收到所述第一I/O请求而为所述高速缓存驱动器分配的。
3.一种主机高速缓存驱动器,包括:
第一接收装置,被配置为接收访问数据的第一I/O请求,其中所述第一I/O请求为读数据请求;以及
发送装置,被配置为响应所述第一I/O请求访问的数据不在固态硬盘SSD中,并且所述第一I/O请求需要访问标准硬盘HDD,向主机总线适配器HBA发送第二I/O请求,该第二I/O请求要求所述HBA向所述HDD和固态硬盘SSD发送访问数据的第三I/O请求;
其中,响应于所述HBA从所述高速缓存驱动器接收所述第二I/O请求,由所述HBA发送所述第三I/O请求,所述第三I/O请求是在一次I/O操作中完成的,其包括:
由所述HBA向所述HDD发送读数据请求;
响应于从所述HBA接收从所述HDD读到的数据,将所述读到的数据写入所述HBA的数据缓冲区;
由所述HBA向所述SSD发送写数据请求,以将所述HBA的数据缓冲区的数据写入所述SSD;
由所述HBA向所述高速缓存驱动器发送所述读到的数据;
第二接收装置,被配置为从所述HBA接收所述读到的数据,其中在所述高速缓存驱动器的数据缓冲区缓存所述读到的数据。
4.根据权利要求3所述的主机高速缓存驱动器,其中,所述高速缓存驱动器的数据缓冲区是操作***响应于接收到所述第一I/O请求而为所述高速缓存驱动器分配的。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410117237.8A CN104951239B (zh) | 2014-03-26 | 2014-03-26 | 高速缓存驱动器、主机总线适配器及其使用的方法 |
US14/656,878 US20150278090A1 (en) | 2014-03-26 | 2015-03-13 | Cache Driver Management of Hot Data |
US14/656,825 US20150277782A1 (en) | 2014-03-26 | 2015-03-13 | Cache Driver Management of Hot Data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410117237.8A CN104951239B (zh) | 2014-03-26 | 2014-03-26 | 高速缓存驱动器、主机总线适配器及其使用的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104951239A CN104951239A (zh) | 2015-09-30 |
CN104951239B true CN104951239B (zh) | 2018-04-10 |
Family
ID=54165921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410117237.8A Expired - Fee Related CN104951239B (zh) | 2014-03-26 | 2014-03-26 | 高速缓存驱动器、主机总线适配器及其使用的方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US20150277782A1 (zh) |
CN (1) | CN104951239B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9195603B2 (en) * | 2010-06-08 | 2015-11-24 | Hewlett-Packard Development Company, L.P. | Storage caching |
CN106547476B (zh) * | 2015-09-22 | 2021-11-09 | 伊姆西Ip控股有限责任公司 | 用于数据存储***的方法和装置 |
US11036394B2 (en) * | 2016-01-15 | 2021-06-15 | Falconstor, Inc. | Data deduplication cache comprising solid state drive storage and the like |
CN107526534B (zh) * | 2016-06-21 | 2020-09-18 | 伊姆西Ip控股有限责任公司 | 管理存储设备的输入输出(i/o)的方法和设备 |
CN106294197B (zh) * | 2016-08-05 | 2019-12-13 | 华中科技大学 | 一种面向nand闪存的页面置换方法 |
CN112214166B (zh) * | 2017-09-05 | 2022-05-24 | 华为技术有限公司 | 用于传输数据处理请求的方法和装置 |
CN108052414B (zh) * | 2017-12-28 | 2021-09-17 | 湖南国科微电子股份有限公司 | 一种提升ssd工作温度范围的方法及*** |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62243044A (ja) * | 1986-04-16 | 1987-10-23 | Hitachi Ltd | デイスクキヤツシユメモリの制御方式 |
US5594885A (en) * | 1991-03-05 | 1997-01-14 | Zitel Corporation | Method for operating a cache memory system using a recycled register for identifying a reuse status of a corresponding cache entry |
US5590300A (en) * | 1991-03-05 | 1996-12-31 | Zitel Corporation | Cache memory utilizing address translation table |
CA2105085A1 (en) * | 1991-03-05 | 1992-09-06 | Marvin Lautzenheiser | Cache memory system and method of operating the cache memory system |
JP3162486B2 (ja) * | 1992-06-25 | 2001-04-25 | キヤノン株式会社 | プリンタ装置 |
US5678020A (en) * | 1994-01-04 | 1997-10-14 | Intel Corporation | Memory subsystem wherein a single processor chip controls multiple cache memory chips |
US5832534A (en) * | 1994-01-04 | 1998-11-03 | Intel Corporation | Method and apparatus for maintaining cache coherency using a single controller for multiple cache memories |
US5701503A (en) * | 1994-01-04 | 1997-12-23 | Intel Corporation | Method and apparatus for transferring information between a processor and a memory system |
US5642494A (en) * | 1994-12-21 | 1997-06-24 | Intel Corporation | Cache memory with reduced request-blocking |
US6654830B1 (en) * | 1999-03-25 | 2003-11-25 | Dell Products L.P. | Method and system for managing data migration for a storage system |
US6598174B1 (en) * | 2000-04-26 | 2003-07-22 | Dell Products L.P. | Method and apparatus for storage unit replacement in non-redundant array |
CA2498154A1 (en) * | 2002-09-16 | 2004-03-25 | Tigi Corporation | Storage system architectures and multiple caching arrangements |
US6948032B2 (en) * | 2003-01-29 | 2005-09-20 | Sun Microsystems, Inc. | Method and apparatus for reducing the effects of hot spots in cache memories |
US20100088459A1 (en) * | 2008-10-06 | 2010-04-08 | Siamak Arya | Improved Hybrid Drive |
KR101023883B1 (ko) * | 2009-02-13 | 2011-03-22 | (주)인디링스 | 고속 저장 장치를 캐쉬로 사용하는 스토리지 시스템 |
US8195878B2 (en) * | 2009-02-19 | 2012-06-05 | Pmc-Sierra, Inc. | Hard disk drive with attached solid state drive cache |
US20100318734A1 (en) * | 2009-06-15 | 2010-12-16 | Microsoft Corporation | Application-transparent hybridized caching for high-performance storage |
US8321630B1 (en) * | 2010-01-28 | 2012-11-27 | Microsoft Corporation | Application-transparent hybridized caching for high-performance storage |
US8984225B2 (en) * | 2011-06-22 | 2015-03-17 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Method to improve the performance of a read ahead cache process in a storage array |
JP5492156B2 (ja) * | 2011-08-05 | 2014-05-14 | 株式会社東芝 | 情報処理装置およびキャッシュ方法 |
US8713257B2 (en) * | 2011-08-26 | 2014-04-29 | Lsi Corporation | Method and system for shared high speed cache in SAS switches |
US8838916B2 (en) * | 2011-09-15 | 2014-09-16 | International Business Machines Corporation | Hybrid data storage management taking into account input/output (I/O) priority |
KR20130070178A (ko) * | 2011-12-19 | 2013-06-27 | 한국전자통신연구원 | 하이브리드 저장 장치 및 그것의 동작 방법 |
US20130238851A1 (en) * | 2012-03-07 | 2013-09-12 | Netapp, Inc. | Hybrid storage aggregate block tracking |
US9218257B2 (en) * | 2012-05-24 | 2015-12-22 | Stec, Inc. | Methods for managing failure of a solid state device in a caching storage |
US9152325B2 (en) * | 2012-07-26 | 2015-10-06 | International Business Machines Corporation | Logical and physical block addressing for efficiently storing data |
US9122629B2 (en) * | 2012-09-06 | 2015-09-01 | Avago Technologies General Ip (Singapore) Pte. Ltd. | Elastic cache with single parity |
US9355036B2 (en) * | 2012-09-18 | 2016-05-31 | Netapp, Inc. | System and method for operating a system to cache a networked file system utilizing tiered storage and customizable eviction policies based on priority and tiers |
US20140337583A1 (en) * | 2013-05-07 | 2014-11-13 | Lsi Corporation | Intelligent cache window management for storage systems |
-
2014
- 2014-03-26 CN CN201410117237.8A patent/CN104951239B/zh not_active Expired - Fee Related
-
2015
- 2015-03-13 US US14/656,825 patent/US20150277782A1/en not_active Abandoned
- 2015-03-13 US US14/656,878 patent/US20150278090A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
US20150278090A1 (en) | 2015-10-01 |
CN104951239A (zh) | 2015-09-30 |
US20150277782A1 (en) | 2015-10-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104951239B (zh) | 高速缓存驱动器、主机总线适配器及其使用的方法 | |
CN104881333B (zh) | 一种存储***及其使用的方法 | |
CN107992436B (zh) | 一种NVMe数据读写方法及NVMe设备 | |
JP5841255B2 (ja) | 仮想化入力/出力のためのプロセッサローカルコヒーレンシを有するコンピュータシステム | |
US10445018B2 (en) | Switch and memory device | |
US8086765B2 (en) | Direct I/O device access by a virtual machine with memory managed using memory disaggregation | |
CN108292196A (zh) | 将数据写入包括第一类型的存储设备和第二类型的存储设备的存储*** | |
CN104461735B (zh) | 一种虚拟化场景下分配cpu资源的方法和装置 | |
EP2711841A1 (en) | Data processing method, device and system based on block storage | |
JP2012118958A (ja) | Sasエクスパンダにおけるデータプリフェッチ | |
CN103858111B (zh) | 一种实现聚合虚拟化中内存共享的方法、设备和*** | |
JP7135074B2 (ja) | クラウド・ベースのランクを使用するシン・プロビジョニング | |
US10346317B2 (en) | Determining cores to assign to cache hostile tasks | |
US20180373657A1 (en) | Input/output computer system including hardware assisted autopurge of cache entries associated with pci address translations | |
JP5987498B2 (ja) | ストレージ仮想化装置、ストレージ仮想化方法及びストレージ仮想化プログラム | |
JP2017091512A (ja) | サービスの再活性化時間を短縮するための方法、システム、およびプログラム | |
JP2020531959A (ja) | キャッシュ管理のための方法、システム、およびコンピュータ・プログラム | |
JP2020532803A (ja) | 同期入出を介して生成されたキャッシュ・ヒットに応答してメタデータ・トラックの非同期更新をする方法、システム、コンピュータ・プログラムおよび記憶制御装置 | |
CN104750614B (zh) | 用于管理存储器的方法和装置 | |
WO2013075627A1 (zh) | 一种数据的缓存方法、装置和服务器 | |
CN105278880A (zh) | 一种基于云计算虚拟化的内存优化装置和方法 | |
US10789008B2 (en) | Reducing write collisions in data copy | |
US11687443B2 (en) | Tiered persistent memory allocation | |
JP2021514502A (ja) | データ・ストレージ間でのデータ移行を管理する方法、そのデータ・ストレージ・システムおよびコンピュータ・プログラム | |
TW202301133A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180410 Termination date: 20210326 |