CN106250322B - 一种写数据的方法和装置 - Google Patents
一种写数据的方法和装置 Download PDFInfo
- Publication number
- CN106250322B CN106250322B CN201610666702.2A CN201610666702A CN106250322B CN 106250322 B CN106250322 B CN 106250322B CN 201610666702 A CN201610666702 A CN 201610666702A CN 106250322 B CN106250322 B CN 106250322B
- Authority
- CN
- China
- Prior art keywords
- written
- data
- write request
- lba
- time attribute
- 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.)
- Active
Links
Classifications
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0646—Configuration or reconfiguration
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了提供一种写数据的方法和装置,涉及数据处理技术领域,用以至少解决永久性介质中存储的数据与主机实际向存储阵列中写入的数据不一致的问题。存储阵列包括控制器和永久性介质;方法包括:控制器接收主机发送的包括第一待写数据和LBA的第一写请求,并在接收到第一写请求后,接收主机发送包括第二待写数据和该LBA的第二写请求;为第一写请求添加第一时间属性标签,为第二写请求添加第二时间属性标签,第一时间属性标签用于指示控制器接收第一写请求的时间,第二时间属性标签用于指示控制器接收第二写请求的时间;根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据按照先后顺序写入该LBA所对应的存储空间中。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种写数据的方法和装置。
背景技术
主机与存储阵列之间一般采用小型计算机系统接口(small computer systeminterface,SCSI)协议进行通信。存储阵列包括控制器和至少一个永久性介质,控制器包括处理器、缓存和缓存控制器。
目前,基于SCSI协议的写数据的方法如下:主机向处理器发送写请求;处理器接收到该写请求之后,向缓存控制器发送该写请求;然后缓存控制器将该写请求中包括的数据写入缓存。处理器查询到该数据存储到缓存之后会向主机回复写响应。后续,缓存控制器会将缓存中存储的该数据写入永久性介质。进一步地,若主机在预设时间段内没有接收到处理器回复的写响应,则向处理器发送Abort命令,以通知处理器:主机放弃该写请求;处理器接收到Abort命令之后,查询该数据是否已被写入缓存;若该数据已被写入缓存,则处理器向主机回复Abort命令成功,主机接收到Abort命令成功之后,向处理器发送重写请求,其中,该重写请求中包括的逻辑区块地址(logical block address,LBA)与该写请求中包括的LBA相同;若该数据没有被写入缓存,则处理器悬挂Abort命令,即:处理器暂不响应Abort命令。
上述方法中,若处理器查询到该数据在预设时间段内没有被写入缓存,则处理器不会向主机回复Abort命令成功,这会导致处理器回复Abort命令成功超时;由于SCSI协议中规定:主机在接收到Abort命令成功之后,才能向处理器发送重写请求,因此,上述方法会导致主机在接收到Abort命令成功之前,不能向处理器发送重写请求,也就是说,不能向该LBA所对应的存储空间内写数据,从而影响主机业务的连续性。
为了解决上述技术问题,一种实现方案如下:处理器在接收到主机发送的写请求后,立即向主机回复Abort命令成功。但是,这样会存在如下问题:由于缓存处理器是按照接收待写数据的时间先后顺序向永久性介质中写数据的,因此,若处理器接收到的重写请求中包括的数据比写请求中包括的数据先被写入缓存,则会导致重写请求中包括的数据比写请求中包括的数据先被写入永久性介质,该情况下,重写请求中包括的数据会被写请求中包括的数据覆盖,从而导致永久性介质中存储的数据与主机实际向存储阵列中写入的数据不一致。
发明内容
本发明的实施例提供一种写数据的方法和装置,用以至少解决存储阵列中的永久性介质中存储的数据与主机实际向存储阵列中写入的数据不一致的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
一方面,提供一种写数据的方法,包括:控制器接收主机发送的第一写请求,其中,第一写请求包括第一待写数据和第一待写数据的逻辑区块地址LBA;在接收第一写请求之后,控制器接收主机发送的第二写请求,其中,第二写请求包括第二待写数据和第二待写数据的LBA,第二待写数据的LBA和第一待写数据的LBA相同;然后,控制器为第一写请求添加第一时间属性标签,并为第二写请求添加第二时间属性标签,其中,第一时间属性标签用于指示控制器接收第一写请求的时间,第二时间属性标签用于指示控制器接收第二写请求的时间;后续,控制器根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据按照先后顺序写入永久性介质中的第一待写数据的LBA所对应的存储空间中。其中,主机与存储阵列之间的通信协议可以包括但不限于SCSI协议。这样,控制器能够根据第一时间属性标签和第二时间属性标签识别出接收第一待写数据和第二待写数据的时间先后顺序(即:主机实际向存储阵列中写数据的先后顺序),因此,控制器可以按照该时间先后顺序将第一待写数据和第二待写数据依次写入永久性介质中的第一待写数据的LBA所对应的存储空间中,从而使得永久性介质中存储的数据与主机实际向存储阵列中写入的数据一致。
具体的,控制器为第一写请求添加第一时间属性标签,并为第二写请求添加第二时间属性标签,可以包括:控制器在接收到第一写请求之后,为第一写请求添加第一时间属性标签;在接收到第二写请求之后,为第二写请求添加第二时间属性标签。
需要说明的是,具体实现时,控制器可以为第一写请求和第二写请求中的至少一个写请求添加时间属性标签,即可识别出控制器接收第一写请求和第二写请求的顺序;也就是说,该至少一个写请求的时间属性标签用于表示控制器先接收第一写请求后接收第二写请求。
一种可能的实现方式,控制器根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据按照先后顺序写入永久性介质中的第一待写数据的LBA所对应的存储空间中,可以被替换为:缓存控制器根据第一时间属性标签和第二时间属性标签,删除第一待写数据,并将第二待写数据写入永久性介质中的第一待写数据的LBA所对应的存储空间中。
一种可能的实现方式中,该方法还包括:控制器接收主机发送的Abort命令,其中,Abort命令用于通知存储阵列:主机放弃第一写请求;然后,控制器向主机回复Abort命令成功;接着,控制器在向主机回复Abort命令成功之后,接收第二写请求。具体的,若主机在预设时间段之内没有接收到处理器回复的关于第一写请求的写响应,则向控制器发送Abort命令,控制器在接收到主机发送的Abort命令之后,可以立即向主机回复Abort命令成功(即:控制器在接收到主机发送的Abort命令之后,在不需要确定第一待写数据是否已被写入缓存的情况下,向主机回复Abort命令成功)。该可能的实现方式提供了一种主机与存储阵列之间通过SCSI协议通信的场景中的写数据的方法。
一种可能的实现方式,该方法可以包括:第一时间属性标签包括控制器接收的包括第一待写数据的LBA的写请求的次数;第二时间属性标签包括控制器接收的包括第二待写数据的LBA的写请求的次数。该可选的实现方式提供了一种时间属性标签的具体实现方式,当然不限于此。
一种可能的实现方式,控制器包括处理器和缓存;该情况下,控制器接收主机发送的第一写请求,可以包括:处理器接收主机发送的第一写请求。在处理器接收主机发送的第一写请求之后,该方法还可以包括:处理器确定缓存中的LBA集合中没有包含与第一待写数据的LBA时,将第一待写数据的LBA写入LBA集合;其中,LBA集合包括满足预设条件的写请求中包括的LBA;满足预设条件的写请求是指处理器接收到的、且所包括的待写数据未写入缓存的写请求。该情况下,控制器为第二写请求添加第二时间属性标签,可以包括:处理器在查询到LBA集合中包含第二待写数据的LBA时,为第二写请求添加第二时间属性标签。该可能的实现方式提供了一种判断第二写请求是否是重写请求的方式,并在确定第二写请求是重写请求的基础上为第二写请求添加第二时间属性标签。
一种可能的实现方式,控制器还可以包括缓存控制器;控制器根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据按照先后顺序写入永久性介质中的第一待写数据的LBA所对应的存储空间中,可以包括:缓存控制器根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据写入缓存中的第一待写数据的LBA所对应的存储空间中;然后,缓存控制器将第一待写数据和第二待写数据依次写入永久性介质中的第一待写数据的LBA所对应的存储空间。具体的,缓存控制器在缓存中的第一待写数据的LBA对应的一个存储空间中存储第一待写数据和第一时间属性标签,并在缓存中的该LBA对应的另一个存储空间中存储第二待写数据和第二时间属性标签。
一种可能的实现方式,在缓存中,第一待写数据的LBA对应M个存储空间,M≥2,M是整数;M个存储空间分别对应处理器接收写请求的先后顺序。该情况下,缓存控制器根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据写入缓存中的第一待写数据的LBA所对应的存储空间中,可以包括:缓存控制器按照第一时间属性标签和第二时间属性标签,在M个存储空间中的不同存储空间中存储第一待写数据和第二待写数据。该可选的实现方式中,缓存控制器写数据的机制与处理器接收待写数据的时间先后顺序有关,与缓存控制器接收到的待写数据的时间先后顺序无关。
一种可能的实现方式,在缓存中,第一待写数据的LBA对应M个存储空间,M≥2,M是整数。该情况下,缓存控制器根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据写入缓存中的第一待写数据的LBA所对应的存储空间中,可以包括:缓存控制器存储第一时间属性标签和第二时间属性标签,并在M个存储空间中的不同存储空间中存储第一待写数据和第二待写数据。该可选的实现方式中,缓存控制器写数据的机制与处理器接收待写数据的时间先后顺序无关,与缓存控制器接收到的待写数据的时间先后顺序有关。
另一方面,提供一种存储阵列,包括控制器和至少一个永久性介质;控制器用于:接收主机发送的第一写请求,第一写请求包括第一待写数据和第一待写数据的逻辑区块地址LBA;在接收第一写请求之后,接收主机发送的第二写请求,第二写请求包括第二待写数据和第二待写数据的LBA,第二待写数据的LBA和第一待写数据的LBA相同;为第一写请求添加第一时间属性标签,并为第二写请求添加第二时间属性标签;第一时间属性标签用于指示控制器接收第一写请求的时间,第二时间属性标签用于指示控制器接收第二写请求的时间;根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据按照先后顺序写入永久性介质中的第一待写数据的LBA所对应的存储空间中。
一种可能的实现方式,控制器还可以用于:接收主机发送的Abort命令,其中,Abort命令用于通知存储阵列主机放弃第一写请求;向主机回复Abort命令成功。该情况下,控制器具体可以用于:在向主机回复Abort命令成功之后,接收第二写请求。
一种可能的实现方式,第一时间属性标签包括控制器接收的包括第一待写数据的LBA的写请求的次数;第二时间属性标签包括控制器接收的包括第二待写数据的LBA的写请求的次数。
一种可能的实现方式,控制器包括处理器和缓存;处理器用于:接收主机发送的第一写请求。处理器还可以用于:确定缓存中的LBA集合中没有包含与第一待写数据的LBA时,将第一待写数据的LBA写入LBA集合;其中,LBA集合包括满足预设条件的写请求中包括的LBA;其中,满足预设条件的写请求是指处理器接收到的、且所包括的待写数据未写入缓存的写请求。处理器还可以用于:在查询到LBA集合中包含第二待写数据的LBA时,为第二写请求添加第二时间属性标签。
一种可能的实现方式,控制器还包括缓存控制器;缓存控制器用于:根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据写入缓存中的第一待写数据的LBA所对应的存储空间中;将第一待写数据和第二待写数据依次写入永久性介质中的第一待写数据的LBA所对应的存储空间。
一种可能的实现方式,在缓存中,第一待写数据的LBA对应M个存储空间,M≥2,M是整数;M个存储空间分别对应处理器接收写请求的先后顺序。该情况下,缓存控制器具体可以用于:按照第一时间属性标签和第二时间属性标签,在M个存储空间中的不同存储空间中存储第一待写数据和第二待写数据。
一种可能的实现方式,在缓存中,第一待写数据的LBA对应M个存储空间,M≥2,M是整数。该情况下,缓存控制器具体可以用于:存储第一时间属性标签和第二时间属性标签,并在M个存储空间中的不同存储空间中存储第一待写数据和第二待写数据。
又一方面,本发明实施例提供了一种存储阵列,该存储阵列可以实现上述方法实施例中的存储阵列所执行的功能,所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个上述功能相应的模块。
在一种可能的设计中,该存储阵列的结构中包括控制器、与该控制器连接的至少一个永久性介质和收发器,该处理器被配置为支持该存储阵列执行上述方法中相应的功能。该收发器用于支持该存储阵列与其他网元,例如与主机,之间的通信。存储阵列中还可以包括存储器,该存储器用于与处理器耦合,其保存该装置必要的程序指令和数据;其中,该存储器可以是永久性介质,也可以是除该永久性介质之外的任一存储装置。
又一方面,本发明实施例提供了一种通信系统,该系统包括主机,以及上述方面所述的任一种存储阵列。
再一方面,本发明实施例提供了一种计算机存储介质,用于储存为上述存储阵列所用的计算机软件指令,该计算机软件指令可以包含用于执行上述方面所设计的程序。
可以理解地,上述提供的任一种存储阵列或计算机存储介质均用于执行上文所提供的写数据的方法,因此,其所能达到的有益效果可参考上文所提供的相应的写数据的方法中的有益效果,此处不再赘述。
附图说明
图1为本发明实施例提供的技术方案所适用的一种系统架构示意图;
图2为本发明实施例提供的一种写数据的方法的交互示意图;
图3(a)为本发明实施例提供的一种写数据的过程示意图;
图3(b)为本发明实施例提供的另一种写数据的过程示意图;
图4(a)为本发明实施例提供的另一种写数据的过程示意图;
图4(b)为本发明实施例提供的另一种写数据的过程示意图;
图4(c)为本发明实施例提供的另一种写数据的过程示意图;
图4(d)为本发明实施例提供的另一种写数据的过程示意图;
图5为本发明实施例提供的另一种写数据的方法的交互示意图;
图6为本发明实施例提供的一种存储阵列的结构示意图;
图7为本发明实施例提供的另一种存储阵列的结构示意图。
具体实施方式
本发明实施例提供的技术方案应用于如图1所示的系统架构中,图1所示的系统包括主机和存储阵列,其中,主机主要用于控制运算,存储阵列主要用于存储并管理与主机相关的数据。存储阵列可以为具有完整操作系统的硬件实体,也可以为软件,本实施例以存储阵列为具有完整操作系统的硬件实体为例进行说明。存储阵列可以包括控制器与至少一个永久性介质。控制器包括中央处理器(central processing unit,CPU,本文中称为“处理器”)、缓存和缓存控制器。其中,处理器,是存储阵列的控制中心。缓存是介于中央处理器和永久性介质之间的高速存储器,主要用于提升存储的读写性能。缓存控制器用于对缓存中的数据进行管理,示例的,可以用于向缓存中写入数据,并将缓存中存储的数据写入永久性介质中。永久性介质又称非易失性存储介质,其最大特点是断电时,内容仍能保持。
主机与存储阵列之间的通信协议可以是SCSI协议。其中,SCSI协议是一种基于C/S(client/server,客户机/服务器)架构的通信协议;其中,客户机也被称为启动器(initiator),用于向SCSI目标器(target)发送请求指令。在主机与存储阵列的通信中,一般地,主机充当启动器的角色,存储阵列的控制器充当SCSI目标器的角色。
本发明实施例提供了一种写数据的方法和装置,其基本原理为:存储阵列的控制器接收主机发送的包括第一待写数据和第一待写数据的LBA的第一写请求,并在接收到第一写请求之后,接收包括第二待写数据和第二待写数据的LBA的第二写请求;为第一写请求添加第一时间属性标签,并为第二写请求添加第二时间属性标签,其中,第一待写数据的LBA和第二待写数据的LBA相同,第一时间属性标签用于指示控制器接收第一写请求的时间,第二时间属性标签用于指示控制器接收第二写请求的时间。这样,控制器能够根据第一时间属性标签和第二时间属性标签识别出接收第一待写数据和第二待写数据的时间先后顺序(即:主机实际向存储阵列中写数据的先后顺序),因此,控制器可以按照该时间先后顺序将第一待写数据和第二待写数据依次写入永久性介质中的第一待写数据的LBA所对应的存储空间中,从而使得永久性介质中存储的数据与主机实际向存储阵列中写入的数据一致。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。本文中的“第一”和“第二”等是为了更清楚地区分不同的对象,并不做任何其他限定。本文中的“多个”是指两个或两个以上。
下面将结合本发明实施例的说明书附图,对本发明实施例提供的技术方案进行说明。显然,所描述的是本发明的一部分实施例,而不是全部的实施例。
如图2所示,是本发明实施例提供的一种写数据的方法的交互示意图,应用于主机向控制器发送写请求的场景中,该方法包括:
S101:主机向控制器发送第一写请求。其中,第一写请求包括第一待写数据和第一待写数据的LBA。
S102:主机向控制器发送第二写请求。其中,第二写请求包括第二待写数据和第二待写数据的LBA,第一待写数据的LBA与第二待写数据的LBA相同。
假设主机与存储阵列之间协商的针对同一LBA的重写请求的发送次数为N,其中,N≥1,N是整数。那么:若N=1,则第一写请求是主机向控制器发送的包括第一待写数据的LBA的第一次写请求,第二写请求是主机向控制器发送的包括第二待写数据的LBA的重写请求。若N≥2,则第一写请求可以是主机向控制器发送的包括第一待写数据的LBA的第一次写请求,该情况下,第二写请求可以是主机向控制器发送的包括第二待写数据的LBA的任一次重写请求;或者,第一写请求可以是主机向控制器发送的包括第一待写数据的LBA的第n次重写请求,其中,n可以是小于N的任一值;该情况下,第二写请求可以是主机向控制器发送的包括第二待写数据的LBA的第n+i次重写请求,其中,n+i≤N,i是整数。如果不加说明,下文中均是以N=1为例进行说明的。
永久性介质可以包括一个或多个存储空间,每个存储空间对应一个物理地址,每个物理地址对应一个LBA。S101中的第一待写数据的LBA(即S102中的第二待写数据的LBA)可以是永久性介质中的任一LBA,即永久性介质中的任一存储空间对应的LBA。
第一待写数据与第二待写数据可能相同,也可能不同。这是因为:主机可以根据需要修改写入永久性介质中的任一LBA所对应的存储空间中的数据。假设将主机向控制器发送第一写请求的时刻标记为第一时刻,将主机向控制器发送第二写请求的时刻标记为第二时刻;那么,若从第一时刻至第二时刻的时间段内,主机未修改写入S101中的第一待写数据的LBA所对应的存储空间中的数据,则第一待写数据与第二待写数据相同;若从第一时刻至第二时刻的时间段内,主机修改了写入S101中的第一待写数据的LBA所对应的存储空间中的数据,则第一待写数据与第二待写数据不同。
S103:控制器接收主机发送的第一写请求和第二写请求,并为第一写请求添加第一时间属性标签,为第二写请求添加第二时间属性标签。
具体的,控制器在接收到第一写请求之后,为第一写请求添加第一时间属性标签;在接收到第二写请求之后,为第二写请求添加第二时间属性标签。
本实施例中是以控制器接收到主机发送的2个包括同一LBA的写请求为例进行说明的,实际实现时,基于S102中的示例,若N≥2,则控制器可能接收到主机发送的3个或3个以上包括同一LBA的写请求,该情况下,控制器可以在接收到每个包括该LBA的写请求之后,为该写请求添加时间属性标签。
第一时间属性标签可以是任意一种表示控制器接收第一写请求的时间的字符或字符串,例如,可以是控制器接收的包括第一待写数据的LBA的写请求的次数。第二时间属性标签可以是任意一种表示控制器接收第二写请求的时间的字符或字符串,例如,可以是控制器接收的包括第二待写数据的LBA的写请求的次数。
S104:控制器根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据按照先后顺序写入永久性介质中的第一待写数据的LBA所对应的存储空间中。
本发明实施例提供的写数据的方法,控制器先接收主机发送的包括第一待写数据和第一待写数据的LBA的第一写请求,并为第一写请求添加第一时间属性标签,接着,控制器接收包括第二待写数据和第二待写数据的LBA的第二写请求,并为第二写请求添加第二时间属性标签,这样,控制器能够根据第一时间属性标签和第二时间属性标签识别出接收第一待写数据和第二待写数据的时间先后顺序(即:主机实际向存储阵列中写数据的先后顺序),因此,控制器可以按照该时间先后顺序将第一待写数据和第二待写数据依次写入永久性介质中的第一待写数据的LBA所对应的存储空间中,从而使得永久性介质中存储的数据与主机实际向存储阵列中写入的数据一致。
需要说明的是,本发明实施例均是以控制器为第一写请求添加第一时间属性标签,为第二写请求添加第二时间属性标签为例进行说明的,实际实现时,控制器可以为第一写请求与第二写请求中的至少一个写请求添加时间属性标签,该情况下,上述S103可被替换为如下步骤:控制器接收主机发送的第一写请求和第二写请求,并为第一写请求和第二写请求中的至少一个写请求添加时间属性标签,其中,至少一个写请求的时间属性标签用于表示控制器先接收到第一写请求再接收到第二写请求。
基于S101和S102中的示例,若N=1,则处理器为第一写请求和第二写请求中的至少一个写请求添加时间属性标签,即可区分出处理器接收第一写请求和第二写请求的时间先后顺序。具体实现时,主机和磁盘阵列可以预先协商好至少一个写请求是第一次写请求(即第一写请求),重写请求(即第二写请求),还是第一次写请求和重写请求。
基于S101和S102中的示例,若N≥2,理论上,为了保证永久性介质中存储的数据与主机实际向磁盘阵列中写入的数据一致,只需要对处理器最后一次接收到的携带该LBA的重写请求添加时间属性标签,即可保证缓存控制器识别出处理器最后一次接收到的携带该LBA的重写请求,从而可以保证缓存控制器最后向永久性介质中写入处理器最后一次接收到的携带该LBA的重写请求;实际上,由于处理器不知道主机发送的本次重写请求是否为最后一次重写请求(除非本次重写请求是第N次重写请求),因此,一般地,为了实现方便,可以为每个携带该LBA的重写请求均添加时间属性标签;当然,具体实现时,也可以为携带LBA的第一次写请求和每个携带该LBA的重写请求均添加时间属性标签。
可选的,控制器包括处理器和缓存,其中,缓存可以包括一个或多个存储空间,每个存储空间对应一个物理地址,一个或多个物理地址可以对应一个LBA。该情况下,在S101之后,该方法还可以包括:
S101a:主机向处理器发送Abort命令,以通知存储阵列:主机放弃第一写请求。
SCSI协议中规定:处理器接收到主机发送的写请求并查询到缓存控制器已将该写请求中包括的待写数据写入缓存之后,会向主机回复写响应;若主机在预设时间段之内没有接收到处理器回复的写响应,则向处理器发送Abort命令。其中,主机在预设时间段之内没有接收到处理器回复的关于第一写请求的写响应的原因可能是以下任一种:处理器还没有将第一待写数据写入缓存;处理器正在将该数据写入缓存;处理器已将第一待写数据写入缓存,并正在向主机回复关于第一写请求的写响应。
基于此,S101a可以包括:若主机在预设时间段之内没有接收到处理器回复的关于第一写请求的写响应,则向处理器发送Abort命令。
S101b:处理器接收主机发送的该Abort命令,并向主机回复Abort命令成功。
在本发明实施例中,处理器在接收到主机发送的Abort命令之后,可以立即向主机回复Abort命令成功;即:处理器在接收到主机发送的Abort命令之后,在不需要确定第一待写数据是否已被写入缓存的情况下,向主机回复Abort命令成功。
S102a:主机接收到处理器发送的该Abort命令成功之后,向处理器发送重写请求;其中,该重写请求可以是第二写请求。
具体实现时,第二写请求还可以是主机在发送第一写请求之后发送的任一次包括第二待写数据的LBA的重写请求。示例的,主机接收到处理器发送的该Abort命令成功之后,向处理器发送重写请求;若主机在预设时间段之内没有接收到处理器回复的关于重写请求的响应,则会再向处理器发送Abort命令,主机接收到处理器发送的该Abort命令成功之后,向处理器再次发送重写请求,该重写请求是第二写请求。
上述实施例中,均是以第二写请求是包括第二待写数据的LBA的重写请求为例进行说明的,实际实现时,处理器可以按照如下方式确定第二写请求是否为重写请求:处理器在接收到主机发送的第一写请求,且查询到缓存中的LBA集合中没有存储第一写请求包括的第一待写数据的LBA的情况下,将该第一待写数据的LBA写入缓存,其中,LBA集合包括满足预设条件的写请求中包括的LBA,满足预设条件的写请求是指处理器接收到的、且所包括的待写数据未写入缓存的写请求;这样,当处理器接收到第二写请求之后,可以通过查询该缓存中是否存储有第二写请求包括的第二待写数据的LBA,并在确定缓存中存储有第二写请求包括的第二待写数据的LBA的情况下,确定第二写请求为重写请求,其中,第一待写的数据的LBA和第二待写数据的LBA相同。
若时间属性标签包括处理器接收的包括该LBA的写请求的次数,则基于该可选的实现方式,S103可以通过如下两种方式实现:
可选的实现方式1:处理器在接收到第二写请求且查询到缓存中存储有第二写请求包括的第二待写数据的LBA之后,为第二写请求添加第二时间属性标签。
示例的,假设处理器按时间先后顺序依次连续接收到包括LBA1的写请求1、包括LBA2的写请求2、包括LBA2的写请求3和包括LBA1的写请求4;那么,若处理器为写请求1分配的时间属性标签为“1”,以表示写请求1是处理器接收到的包括LBA1的第一次写请求,则为写请求4分配的时间属性标签为“2”;若处理器为写请求2分配的时间属性标签为“1”,则为写请求3分配的时间属性标签为“2”,如表1所示。
表1
写请求 | LBA | 时间属性标签 |
写请求1 | LBA1 | 1 |
写请求2 | LBA2 | 1 |
写请求3 | LBA2 | 2 |
写请求4 | LBA1 | 2 |
可选的实现方式2:处理器在接收到第二写请求时,不查询缓存中是否存储有第二写请求包括的第二待写数据的LBA(即不需要确定第二写请求是否是重写请求),直接为第二写请求添加第二时间属性标签。
示例的,假设处理器按时间先后顺序依次连续接收到包括LBA1的写请求1、包括LBA2的写请求2、包括LBA2的写请求3和包括LBA1的写请求4;那么,若处理器为写请求1分配的时间属性标签为“1”,以表示写请求1是处理器接收到的第一次写请求,则为写请求2、3、4分配的时间属性标签分别为“2”、“3”、“4”,如表2所示。
表2
写请求 | LBA | 时间属性标签 |
写请求1 | LBA1 | 1 |
写请求2 | LBA2 | 2 |
写请求3 | LBA2 | 3 |
写请求4 | LBA1 | 4 |
需要说明的是,由于上述可选的实现方式1中时间属性标签的最大值是根据重写机制中的最大重写次数确定的,例如,若重写机制中的最大重写次数为N,则时间属性标签的最大值为N+1;而上述可选的实现方式2中的时间属性标签的最大值是根据主机向处理器发送的写请求的总次数确定的,例如,若主机向处理器发送的写请求的总次数为W,则时间属性标签的最大值为W。一般地,W远大于N,所以,上述可选的实现方式2中的每个时间属性标签所占的存储空间远大于上述可选的实现方式1中的每个时间属性标签所占的存储空间,因此,上述可选的实现方式2适用于主机向处理器发送的写请求的次数较少的场景中。
可选的,控制器还可以包括缓存控制器,该情况下,S104可以包括:
S104a:缓存控制器根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据写入缓存中的第一待写数据的LBA所对应的存储空间中,再将第一待写数据和第二待写数据依次写入永久性介质中的第一待写数据的LBA所对应的存储空间。
具体的,缓存控制器在缓存中的第一待写数据的LBA对应的一个存储空间中存储第一待写数据和第一时间属性标签,并在缓存中的该LBA对应的另一个存储空间中存储第二待写数据和第二时间属性标签。
可选的,实际实现时,上述S104a可被替换为S104':
S104':缓存控制器根据第一时间属性标签和第二时间属性标签,删除第一待写数据,并将第二待写数据写入永久性介质中的第一待写数据的LBA所对应的存储空间中。
需要说明的是,基于处理器为第一写请求和第二写请求中的一个写请求添加时间属性标签。示例的,若处理器为第一写请求添加第一时间属性标签,则缓存控制器在缓存中的第一待写数据的LBA对应的一个存储空间中存储第一待写数据和第一时间属性标签,并在缓存中的该LBA对应的另一个存储空间中存储第二待写数据。若处理器为第二写请求添加第二时间属性标签,则缓存控制器在缓存中的第一待写数据的LBA对应的一个存储空间中存储第一待写数据,并在缓存中的该LBA对应的另一个存储空间中存储第二待写数据和第二时间属性标签。
可选的,在缓存中,S101和S102中的LBA对应M个存储空间,M≥2,M为整数。进一步可选的,可以根据最大重写次数确定M的取值,示例的,若最大重写次数是N,则每个LBA可以对应N+1个存储空间,即:在缓存中,每个LBA对应的存储空间的个数至少能够存储包括同一LBA的第一次写请求和各次重写请求所包括的数据,这样才能保证每次写入缓存的同一LBA对应的存储空间中的数据不丢包。
基于此,S103可以通过以下任一方式实现,其中,以下实现方式均以第一时间属性标签包括控制器接收的包括第一待写数据的LBA的写请求的次数,第二时间属性标签包括控制器接收的包括第二待写数据的LBA的写请求的次数为例进行说明。
方式1:M个存储空间分别对应处理器接收写请求的时间先后顺序;缓存控制器按照第一时间属性标签和第二时间属性标签,在缓存中的第一待写数据的LBA和第二待写数据的LBA对应的不同存储空间中存储第一待写数据和第二待写数据。
该可选的实现方式中,缓存控制器写数据的机制与处理器接收待写数据的时间先后顺序有关,与缓存控制器接收到的待写数据的时间先后顺序无关。
如图3(a)和图3(b)所示,假设按照处理器接收待写数据的时间先后顺序对第一待写数据和第二待写数据进行排序后得到序列1:第一待写数据、第二待写数据;M个存储空间包括第一存储空间和第二存储空间,且按照所对应的处理器接收写请求的时间先后顺序排列后得到序列3:第一存储空间、第二存储空间。那么,缓存控制器向缓存中写数据的过程中,无论缓存接收待写数据的时间先后顺序是否为序列1,缓存控制器均按照序列1向M个存储空间中写数据,即:在第一存储空间中写入第一待写数据,并在第二存储空间中写入第二待写数据。其中,图3(a)中,缓存控制器接收待写数据的时间先后顺序为序列2:第二待写数据、第一待写数据,图3(b)中,缓存控制器接收待写数据的时间先后顺序为仍为序列1。
基于方式1,S104a中,缓存控制器将第一待写数据和第二待写数据依次写入永久性介质中的第一待写数据的LBA所对应的存储空间中,可以包括:缓存控制器根据M个存储空间分别对应处理器接收写请求的时间先后顺序,将该M个存储空间中存储的待写数据依次写入永久性介质的第一待写数据的LBA所对应的存储空间中。例如,基于上述示例,缓存控制器根据序列3先第一存储空间中存储的待写数据(即第一待写数据)写入永久性介质的第一待写数据的LBA所对应的存储空间中,再将第二存储空间中存储的待写数据(即第二待写数据)写入永久性介质的第一待写数据的LBA所对应的存储空间中。
基于方式1,S104'中,缓存控制器删除第一待写数据,并将第二待写数据写入永久性介质中的第一待写数据的LBA所对应的存储空间中,可以包括:缓存控制器根据M个存储空间分别对应处理器接收写请求的时间先后顺序,删除M个存储空间中存储有数据的非最后一个存储空间中的数据,并将存储有数据的最后一个存储空间中的数据写入永久性介质的第一待写数据的LBA所对应的存储空间中。例如,基于上述示例,缓存控制器根据序列3将第一存储空间中存储的待写数据(即第一待写数据)删除,并将第二存储空间中存储的待写数据(即第二待写数据)写入永久性介质的第一待写数据的LBA所对应的存储空间中。
方式2:缓存控制器存储第一时间属性标签和第二时间属性标签,并在缓存中的第一待写数据的LBA和第二待写数据的LBA对应的不同存储空间中存储第一待写数据和第二待写数据。
该可选的实现方式中,缓存控制器写数据的机制与处理器接收待写数据的时间先后顺序无关,与缓存控制器接收到的待写数据的时间先后顺序有关。
如图4(a)至图4(d)所示,假设按照处理器接收待写数据的时间先后顺序对第一待写数据和第二待写数据进行排序后得到序列1:第一待写数据、第二待写数据;且M个存储空间包括第一存储空间和第二存储空间,至少一个写请求包括第一写请求和第二写请求。那么,在缓存控制器向缓存中写数据的过程中,无论缓存控制器接收待写数据的时间先后顺序为序列1还是序列2(即序列2:第二待写数据、第一待写数据),缓存控制器均可以在第一存储空间中写入第一待写数据和第一时间属性标签,并在第二存储空间中写入第二待写数据和第二时间属性标签;或者,第一存储空间中写入第二待写数据和第二时间属性标签,并在第二存储空间中写入第一待写数据和第一时间属性标签。其中,图4(a)和图4(b)中,缓存控制器接收待写数据的时间先后顺序为序列2:第二待写数据、第一待写数据,图4(c)和图4(d),缓存控制器接收待写数据的时间先后顺序为仍为序列1。
基于方式2,S104a中,缓存控制器将第一待写数据和第二待写数据依次写入永久性介质中的第一待写数据的LBA所对应的存储空间中,可以包括:缓存控制器根据第一时间属性标签和第二时间属性标签,将第一待写数据和第二待写数据依次写入永久性介质中的第一待写数据的LBA所对应的存储空间中。基于上述示例,缓存控制器根据第一时间属性标签和第二时间属性标签确定出序列1,然后,按照序列1将对应存储空间中存储的第一待写数据和第二待写数据依次写入永久性介质中的第一待写数据的LBA所对应的存储空间中。
基于方式2,S104'中,缓存控制器删除第一待写数据,并将第二待写数据写入永久性介质中的第一待写数据的LBA所对应的存储空间中,可以包括:缓存控制器根据第一时间属性标签和第二时间属性标签,删除第一待写数据,并将第二待写数据写入永久性介质中的第一待写数据的LBA所对应的存储空间中。基于上述示例,缓存控制器根据第一时间属性标签和第二时间属性标签确定出序列1,然后,删除序列1中非最后一个待写数据(即第一待写数据),并将序列1中最后一个待写数据(即第二待写数据)写入永久性介质中的第一待写数据的LBA所对应的存储空间中。
需要说明的是,上文中提供的技术方案中均是以控制器为第一写请求添加第一时间属性标签,为第二写请求添加第二时间属性标签为例进行说明的,实际实现时,还可以由主机为第一写请求添加第一时间属性标签,为第二写请求添加第二时间属性标签。该情况下,上述S101-S103可被替换为如下步骤:主机为第一写请求添加第一时间属性标签,为第二写请求添加第二时间属性标签,然后向控制器发送第一写请求、第二写请求、第一时间属性标签和第二时间属性标签。其中,主机可以通过两条消息向控制器分别发送写请求和该写请求的时间属性标签,也可以将写请求的时间属性标签包括在该写请求中发送给控制器。例如,主机向控制器发送的第一写请求中包括第一待写数据的LBA、第一待写数据和第一时间属性标签,第二写请求中包括第二待写数据的LBA、第二待写数据和第二时间属性标签。
下面通过一个具体的示例对上文提供的写数据的方法进行说明。
如图5所示,为本发明实施例提供的一种写数据的方法交互示意图。图5所示的方法包括:
S501:主机向处理器发送第一写请求,第一写请求包括第一待写数据与第一待写数据的LBA。
S502:处理器接收第一写请求,并查询缓存中是否存储有该第一待写数据的LBA。
若是,则执行S503;若否,则执行S504。
S503:处理器为第一写请求添加第一时间属性标签。
S504:处理器将第一待写数据的LBA写入缓存的LBA集合中,并将第一待写数据发送给缓存控制器。
由于本实施例中是以时间属性标签为处理器接收包括同一LBA的写请求的次数为例进行说明,因此,若处理器在执行S502之后,先执行S503再执行S504,则处理器为第一写请求添加第一时间属性标签以表示第一写请求是处理器第1次接收到包括该第一待写数据的LBA的写请求。
S505:缓存控制器接收第一待写数据,并根据第一时间属性标签将第一待写数据写入缓存中的第一待写数据的LBA所对应的存储空间中。
实际实现时,处理器查询到第一待写数据已写入缓存中的第一待写数据的LBA对应的存储空间中后,会向主机回复写响应。
S506:若主机从发送第一写请求的时刻的预设时间段内,未收到第一写请求对应的写响应,则向处理器发送Abort命令。
S507:处理器接收Abort命令,并向主机回复Abort命令成功。
S508:主机接收Abort命令成功,并向处理器发送第二写请求。第二写请求包括第二待写数据与第二待写数据的LBA。
S509:处理器查询缓存中是否存储有第二写请求包括的该第二待写数据的LBA。
在本实施例中,由于S503中处理器已在缓存中存储了第一待写数据的LBA,而该第二待写数据的LBA与第一待写数据的LBA相同,因此,S509的判断结果为“是”。
S510:处理器为第二写请求添加第二时间属性标签,并将第二待写数据发送给缓存控制器。
基于S504中的示例,在S510中,处理器为第二写请求添加第二时间属性标签以表示第二写请求是处理器第2次接收到包括该第二待写数据的LBA的写请求。
S511:缓存控制器接收第二待写数据,并根据第二时间属性标签将第二待写数据写入缓存中的第一待写数据的LBA所对应的存储空间中。
本发明实施例对S505与S508-S511的先后顺序不进行不限定,例如,可以先执行S505再执行S508-S511,也可以先执行S508-S511再执行S505,还可以在执行S508-S511的任一步骤的同时执行S505。
S512:缓存控制器将第一待写数据和第二待写数据依次写入永久性介质中的第一待写数据的LBA所对应的存储空间中。
上述主要从主机和存储阵列之间交互的角度对本发明实施例提供的方案进行了介绍。可以理解的是,主机和存储阵列为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本发明实施例可以根据上述方法示例对存储阵列进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用集成的单元的情况下,图6示出了上述实施例中所涉及的存储阵列的一种可能的结构示意图。存储阵列6可以包括:处理模块602和通信模块603。处理模块602用于对存储阵列6的动作进行控制管理,例如,处理模块602用于支持存储阵列6执行图2中的S103和S104;图5中的S502、S503、S504、S505、S509、S510、S511、S512,和/或用于本文所描述的技术的其它过程。通信模块603用于支持存储阵列6与其他网络实体的通信,例如与图1或图5中示出的功能模块或网络实体之间的通信。存储阵列6还可以包括:存储模块601,用于存储存储阵列的程序代码和数据。
其中,处理模块602可以包括图1所示的系统中的处理器(即CPU)和缓存控制器。处理模块602也可以是CPU,数字信号处理器(digital signal processor,DSP),专用集成电路(application-specific integrated circuit,ASIC),现场可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。处理模块602也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块603可以是收发器、收发电路或通信接口等。存储模块601可以是图1所示的系统中的缓存和永久性介质,或者其他任一种存储器或多种存储器的组合。
当处理模块602为图1所示的系统中的处理器和缓存控制器,通信模块603为收发器,存储模块601是图1所示的系统中的缓存和永久性介质时,本发明实施例所涉及的存储阵列可以如图7所示。
如图7所示,存储阵列7可以包括:处理器701、缓存控制器702、收发器703、永久性介质704、缓存705以及总线706;其中,处理器701、缓存控制器702、收发器703、永久性介质704以及缓存705通过总线706相互连接;总线706可以是外设部件互连标准(peripheralcomponent interconnect,PCI)总线或扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理模块执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(random access memory,RAM)、闪存、只读存储器(readonly memory,ROM)、可擦除可编程只读存储器(erasable programmable ROM,EPROM)、电可擦可编程只读存储器(electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (12)
1.一种写数据的方法,其特征在于,应用于存储阵列中,所述存储阵列包括控制器和至少一个永久性介质,所述控制器包括处理器和缓存;所述方法包括:
所述处理器接收主机发送的第一写请求,所述第一写请求包括第一待写数据和所述第一待写数据的逻辑区块地址LBA;
在接收所述第一写请求之后,所述控制器接收所述主机发送的第二写请求,所述第二写请求包括第二待写数据和所述第二待写数据的LBA,所述第二待写数据的LBA和第一待写数据的LBA相同;
所述处理器确定所述缓存中的LBA集合中没有包含所述第一待写数据的LBA时,将所述第一待写数据的LBA写入所述LBA集合;其中,所述LBA集合包括满足预设条件的写请求中包括的LBA;其中,所述满足预设条件的写请求是指所述处理器接收到的、且所包括的待写数据未写入所述缓存的写请求;
所述控制器为所述第一写请求添加第一时间属性标签,并且所述处理器在查询到所述LBA集合中包含所述第二待写数据的LBA时,为所述第二写请求添加第二时间属性标签;所述第一时间属性标签用于指示所述控制器接收所述第一写请求的时间,所述第二时间属性标签用于指示所述控制器接收所述第二写请求的时间;
所述控制器根据所述第一时间属性标签和所述第二时间属性标签,将所述第一待写数据和所述第二待写数据按照先后顺序写入所述永久性介质中的所述第一待写数据的LBA所对应的存储空间中。
2.根据权利要求1所述的方法,其特征在于,在所述处理器接收到所述第一写请求之后,所述方法还包括:
所述控制器接收所述主机发送的Abort命令,其中,所述Abort命令用于通知所述存储阵列:所述主机放弃所述第一写请求;
所述控制器向所述主机回复Abort命令成功;
所述控制器接收所述第二写请求,包括:
所述控制器在向所述主机回复Abort命令成功之后,接收所述第二写请求。
3.根据权利要求1或2所述的方法,其特征在于,所述第一时间属性标签包括所述控制器接收的包括所述第一待写数据的LBA的写请求的次数;所述第二时间属性标签包括所述控制器接收的包括所述第二待写数据的LBA的写请求的次数。
4.根据权利要求3所述的方法,其特征在于,所述控制器还包括缓存控制器;所述控制器根据所述第一时间属性标签和所述第二时间属性标签,将所述第一待写数据和所述第二待写数据按照先后顺序写入所述永久性介质中的所述第一待写数据的LBA所对应的存储空间中,包括:
所述缓存控制器根据所述第一时间属性标签和所述第二时间属性标签,将所述第一待写数据和所述第二待写数据写入所述缓存中的所述第一待写数据的LBA所对应的存储空间中;
所述缓存控制器将所述第一待写数据和所述第二待写数据依次写入所述永久性介质中的所述第一待写数据的LBA所对应的存储空间。
5.根据权利要求4所述的方法,其特征在于,在所述缓存中,所述第一待写数据的LBA对应M个存储空间,M≥2,M是整数;所述M个存储空间分别对应所述处理器接收写请求的先后顺序;
所述缓存控制器根据所述第一时间属性标签和所述第二时间属性标签,将所述第一待写数据和所述第二待写数据写入所述缓存中的所述第一待写数据的LBA所对应的存储空间中,包括:
所述缓存控制器按照所述第一时间属性标签和所述第二时间属性标签,在所述M个存储空间中的不同存储空间中存储所述第一待写数据和所述第二待写数据。
6.根据权利要求4所述的方法,其特征在于,在所述缓存中,所述第一待写数据的LBA对应M个存储空间,M≥2,M是整数;
所述缓存控制器根据所述第一时间属性标签和所述第二时间属性标签,将所述第一待写数据和所述第二待写数据写入所述缓存中的所述第一待写数据的LBA所对应的存储空间中,包括:
所述缓存控制器存储所述第一时间属性标签和所述第二时间属性标签,并在所述M个存储空间中的不同存储空间中存储所述第一待写数据和所述第二待写数据。
7.一种存储阵列,其特征在于,包括控制器和至少一个永久性介质,所述控制器包括处理器和缓存;所述控制器用于:
接收主机发送的第一写请求,所述第一写请求包括第一待写数据和所述第一待写数据的逻辑区块地址LBA;
在接收所述第一写请求之后,接收所述主机发送的第二写请求,所述第二写请求包括第二待写数据和所述第二待写数据的LBA,所述第二待写数据的LBA和第一待写数据的LBA相同;
所述处理器还用于:确定所述缓存中的LBA集合中没有包含所述第一待写数据的LBA时,将所述第一待写数据的LBA写入所述LBA集合;其中,所述LBA集合包括满足预设条件的写请求中包括的LBA;其中,所述满足预设条件的写请求是指所述处理器接收到的、且所包括的待写数据未写入所述缓存的写请求;
为所述第一写请求添加第一时间属性标签,并在查询到所述LBA集合中包含所述第二待写数据的LBA时,为所述第二写请求添加第二时间属性标签;所述第一时间属性标签用于指示所述控制器接收所述第一写请求的时间,所述第二时间属性标签用于指示所述控制器接收所述第二写请求的时间;
根据所述第一时间属性标签和所述第二时间属性标签,将所述第一待写数据和所述第二待写数据按照先后顺序写入所述永久性介质中的所述第一待写数据的LBA所对应的存储空间中。
8.根据权利要求7所述的存储阵列,其特征在于,
所述控制器还用于:接收所述主机发送的Abort命令,其中,所述Abort命令用于通知所述存储阵列所述主机放弃所述第一写请求;向所述主机回复Abort命令成功;
所述控制器具体用于:在向所述主机回复Abort命令成功之后,接收所述第二写请求。
9.根据权利要求7或8所述的存储阵列,其特征在于,所述第一时间属性标签包括所述控制器接收的包括所述第一待写数据的LBA的写请求的次数;所述第二时间属性标签包括所述控制器接收的包括所述第二待写数据的LBA的写请求的次数。
10.根据权利要求9所述的存储阵列,其特征在于,所述控制器还包括缓存控制器;
所述缓存控制器用于:根据所述第一时间属性标签和所述第二时间属性标签,将所述第一待写数据和所述第二待写数据写入所述缓存中的所述第一待写数据的LBA所对应的存储空间中;将所述第一待写数据和所述第二待写数据依次写入所述永久性介质中的所述第一待写数据的LBA所对应的存储空间。
11.根据权利要求10所述的存储阵列,其特征在于,在所述缓存中,所述第一待写数据的LBA对应M个存储空间,M≥2,M是整数;所述M个存储空间分别对应所述处理器接收写请求的先后顺序;
所述缓存控制器具体用于:按照所述第一时间属性标签和所述第二时间属性标签,在所述M个存储空间中的不同存储空间中存储所述第一待写数据和所述第二待写数据。
12.根据权利要求11所述的存储阵列,其特征在于,在所述缓存中,所述第一待写数据的LBA对应M个存储空间,M≥2,M是整数;
所述缓存控制器具体用于:存储所述第一时间属性标签和所述第二时间属性标签,并在所述M个存储空间中的不同存储空间中存储所述第一待写数据和所述第二待写数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610666702.2A CN106250322B (zh) | 2016-08-12 | 2016-08-12 | 一种写数据的方法和装置 |
PCT/CN2017/079343 WO2018028218A1 (zh) | 2016-08-12 | 2017-04-01 | 一种写数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610666702.2A CN106250322B (zh) | 2016-08-12 | 2016-08-12 | 一种写数据的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106250322A CN106250322A (zh) | 2016-12-21 |
CN106250322B true CN106250322B (zh) | 2019-11-19 |
Family
ID=57593353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610666702.2A Active CN106250322B (zh) | 2016-08-12 | 2016-08-12 | 一种写数据的方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106250322B (zh) |
WO (1) | WO2018028218A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106250322B (zh) * | 2016-08-12 | 2019-11-19 | 华为技术有限公司 | 一种写数据的方法和装置 |
CN106802939B (zh) * | 2016-12-30 | 2020-04-03 | 华为技术有限公司 | 一种解决数据冲突的方法和系统 |
CN109375868B (zh) * | 2018-09-14 | 2022-07-08 | 深圳爱捷云科技有限公司 | 一种数据存储方法、调度装置、系统、设备及存储介质 |
CN111581247B (zh) * | 2019-10-01 | 2022-04-01 | 上海忆芯实业有限公司 | 数据管理器、时序数据库及信息处理系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101702113A (zh) * | 2009-11-23 | 2010-05-05 | 成都市华为赛门铁克科技有限公司 | 写操作处理方法和装置 |
CN102239479A (zh) * | 2008-12-18 | 2011-11-09 | Lsi公司 | 使用写队列机制实施多阵列一致性组的方法 |
CN102446124A (zh) * | 2005-02-14 | 2012-05-09 | 株式会社日立制作所 | 远程拷贝系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4282733B1 (ja) * | 2007-12-13 | 2009-06-24 | 株式会社東芝 | ディスク記憶装置及びデータ書き込み方法 |
US8200914B2 (en) * | 2008-01-03 | 2012-06-12 | International Business Machines Corporation | Apparatus, system, and method for a read-before-write storage controller instruction |
CN103186537B (zh) * | 2011-12-27 | 2018-01-12 | 腾讯科技(北京)有限公司 | 一种基于索引排序的数据读写方法及装置 |
US9251055B2 (en) * | 2012-02-23 | 2016-02-02 | Kabushiki Kaisha Toshiba | Memory system and control method of memory system |
CN103488431A (zh) * | 2013-09-10 | 2014-01-01 | 华为技术有限公司 | 一种写数据方法及存储设备 |
CN103678149B (zh) * | 2013-12-19 | 2017-01-18 | 华为技术有限公司 | 数据处理的方法及设备 |
CN104484332A (zh) * | 2014-11-11 | 2015-04-01 | 珠海天琴信息科技有限公司 | 一种嵌入式系统中读写数据的方法及装置 |
CN106250322B (zh) * | 2016-08-12 | 2019-11-19 | 华为技术有限公司 | 一种写数据的方法和装置 |
-
2016
- 2016-08-12 CN CN201610666702.2A patent/CN106250322B/zh active Active
-
2017
- 2017-04-01 WO PCT/CN2017/079343 patent/WO2018028218A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102446124A (zh) * | 2005-02-14 | 2012-05-09 | 株式会社日立制作所 | 远程拷贝系统 |
CN102239479A (zh) * | 2008-12-18 | 2011-11-09 | Lsi公司 | 使用写队列机制实施多阵列一致性组的方法 |
CN101702113A (zh) * | 2009-11-23 | 2010-05-05 | 成都市华为赛门铁克科技有限公司 | 写操作处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN106250322A (zh) | 2016-12-21 |
WO2018028218A1 (zh) | 2018-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI444833B (zh) | Sas擴充器之資料預取 | |
US10120586B1 (en) | Memory transaction with reduced latency | |
CN106250322B (zh) | 一种写数据的方法和装置 | |
CN103441948B (zh) | 一种数据访问方法、网卡及存储系统 | |
CN106331153B (zh) | 一种业务请求的过滤方法、装置及系统 | |
US8850116B2 (en) | Data prefetch for SCSI referrals | |
WO2014176981A1 (zh) | 一种跨页预取方法、装置及系统 | |
CN105094686A (zh) | 数据缓存方法、缓存和计算机系统 | |
CN107122130B (zh) | 一种数据重删方法及装置 | |
KR102412978B1 (ko) | 이중 쓰기를 수행하는 스토리지 시스템 및 그것의 이중 쓰기 방법 | |
CN106326140A (zh) | 数据拷贝方法、直接内存访问控制器及计算机系统 | |
CN105393228B (zh) | 读写闪存中数据的方法、装置及用户设备 | |
CN110597887A (zh) | 一种基于区块链网络的数据管理方法、装置及存储介质 | |
CN104317716B (zh) | 分布式节点间的数据传输方法及分布式节点设备 | |
JPWO2017006675A1 (ja) | 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム | |
CN110109845A (zh) | 缓存数据管理方法、装置、计算机设备及存储介质 | |
CN105138481A (zh) | 存储数据的处理方法、装置和系统 | |
KR20150129808A (ko) | 메모리 노드를 포함하는 분산형 메모리 시스템을 위한 방법 및 장치 | |
CN110209341A (zh) | 一种数据写入方法、装置和存储设备 | |
WO2019000423A1 (zh) | 一种数据存储方法及设备 | |
CN114327270A (zh) | 一种请求处理方法、装置、设备及可读存储介质 | |
CN113596010A (zh) | 一种数据处理方法、装置、节点设备及计算机存储介质 | |
JP5158576B2 (ja) | 入出力制御システム、入出力制御方法、及び、入出力制御プログラム | |
CN105765542B (zh) | 访问文件的方法、分布式存储系统和存储节点 | |
CN110347614B (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 |