CN106527974A - 一种写数据的方法、设备及系统 - Google Patents

一种写数据的方法、设备及系统 Download PDF

Info

Publication number
CN106527974A
CN106527974A CN201610885958.2A CN201610885958A CN106527974A CN 106527974 A CN106527974 A CN 106527974A CN 201610885958 A CN201610885958 A CN 201610885958A CN 106527974 A CN106527974 A CN 106527974A
Authority
CN
China
Prior art keywords
data
data block
state
write
disk
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
CN201610885958.2A
Other languages
English (en)
Other versions
CN106527974B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610885958.2A priority Critical patent/CN106527974B/zh
Publication of CN106527974A publication Critical patent/CN106527974A/zh
Application granted granted Critical
Publication of CN106527974B publication Critical patent/CN106527974B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0674Disk device
    • G06F3/0676Magnetic disk device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种写数据的方法、设备及系统,用于减小写数据过程的时延。该方法包括:接收写请求,所述写请求包括待写入数据以及所述待写入数据的地址;根据所述地址确定所述缓存中所述地址对应的数据块;在确定所述地址对应的数据块的状态是刷盘状态时,将所述数据块的状态更新为取消状态,并且将所述待写入数据写入所述缓存;其中,所述刷盘状态表示所述数据块中的数据正在被写入所述磁盘,所述取消状态用于在将所述数据块中的数据写入所述磁盘后,根据所述取消状态确定停止执行删除所述数据块中的数据的操作。

Description

一种写数据的方法、设备及系统
技术领域
本发明涉及存储技术领域,特别涉及一种写数据的方法、设备及系统。
背景技术
一般来说,将数据写到缓存(cache)相对于将数据直接写到磁盘来说速度比较快,因此现在很多存储系统采用回写模式(write back)来写数据,所谓的回写模式,是指将数据写到缓存后就向主机反馈响应消息,而无需一次性将数据写入磁盘。
然而,缓存的存储空间毕竟是有限的,而且在安全性方面也不如硬盘,因此,在缓存中存储的数据达到一定数据量之后,存储设备可以进行刷盘(destage)操作。所谓的刷盘操作,就是将缓存中的数据写入磁盘。在刷盘过程中,若存储设备接收了写请求,且写请求携带的数据在缓存中的地址与缓存中正在刷盘的数据的地址一致,那么就是刷盘冲突。目前对于刷盘冲突的解决方案是,在出现刷盘冲突时,存储设备要等到刷盘过程结束之后再执行写请求,也就是说在刷盘过程中写请求只能等待,这显然增加了写请求的时延。
发明内容
本发明实施例提供一种写数据的方法、设备及系统,用于减小写数据过程的时延。
第一方面,提供一种写数据的方法,该方法应用于存储设备中,存储设备包括控制器和磁盘,控制器包括处理器和缓存,缓存包括若干个数据块,每个数据块的大小与缓存的最小组成单位相同。该方法可以由处理器执行,该方法包括:接收写请求,该写请求包括待写入数据以及待写入数据的地址。根据该地址确定缓存中该地址对应的数据块。在确定该地址对应的数据块的状态是刷盘状态时,将该数据块的状态更新为取消状态,并且将待写入数据写入缓存。其中,刷盘状态表示数据块中的数据正在被写入磁盘,取消状态用于在将数据块中的数据写入磁盘后,根据取消状态确定停止执行删除数据块中的数据的操作。
本发明实施例中,如果写请求携带的待写入数据需写入的地址对应的数据块的状态是刷盘状态,则将该数据块的状态更新为取消状态,且将待写入数据写入缓存,也就是说,如果存储设备在刷盘过程中接收了写请求,可以继续执行写请求,无需等待,从而减小了写数据过程的时延。
另外,在刷盘结束后一般会删除缓存中已经通过刷盘写入磁盘的数据,从而使得缓存可以存储新的数据。那么,若在刷盘过程中通过写请求向缓存里写入了新的数据,则很可能新的数据也会被删除。为解决该技术问题,本发明实施例中除了将待写入数据写入缓存之外,还将数据块的状态由刷盘状态更新为取消状态,从而在刷盘结束后,若数据块的状态为取消状态,存储设备可以确定停止删除该数据块中的数据,通过这种方式可以有效避免数据块中新写入的数据被删除。
结合第一方面,在第一方面的第一种可能的实现方式中,该方法还包括:在确定该地址对应的数据块的状态是刷盘状态时,若将该数据块中的数据写入磁盘的过程还未启动,则停止执行将该数据块中的数据写入磁盘。
即,若该数据块的刷盘过程还未启动,那么处理器可以停止将该数据块中的数据写入磁盘,即停止执行刷盘过程,这样可以避免刷盘冲突。而且,刷盘过程一般来说没有写请求对于时延的要求高,因此将刷盘过程延后执行,影响不会太大。
结合第一方面,在第一方面的第二种可能的实现方式中,在接收写请求之前,若需要将该数据块中的数据写入磁盘,则确定该数据块当前的状态。若确定该数据块的状态为等待刷盘状态,则将数据块的状态更新为刷盘状态,且将数据块中的数据写入磁盘。其中,等待刷盘状态用于指示数据块中的数据等待被写入磁盘。
也就是说,在接收写请求后,在该地址对应的数据块的状态是刷盘状态时,若该数据块的刷盘过程已启动,则一般来说刷盘过程无法取消,那么处理器还是会继续执行将该数据块中的数据写入磁盘的操作,在这种情况下,刷盘过程和处理写请求的过程就会同时进行,两个过程不会互相影响,不会因为要进行刷盘而延误写请求的执行。
结合第一方面或第一方面的第二种可能的实现方式,在第一方面的第三种可能的实现方式中,在将该数据块中的数据写入磁盘之后,确定该数据块的状态是取消状态时,获取该数据块中包括的数据的状态,以确定该数据块中新写入的数据。停止执行删除新写入的数据的操作,以及,删除该数据块中原有的数据。
一般来说,一个数据块可以存储多个数据,通过写请求写入的数据可能只占据一个数据块的部分存储区域,也就是说,一个数据块中,可能存储了通过写请求新写入的数据,还存储了以前的旧数据。那么,如果因为该数据块是取消状态就停止删除该数据块中包括的全部数据,则该数据块中包括的旧数据也不会被删除,较为浪费该数据块的存储空间。为解决该技术问题,本发明实施例中除了可以维护数据块的状态之外,还可以维护数据块中存储的每个数据的状态,在刷盘过程结束后,若数据块的状态为取消状态,则根据该数据块中的每个数据的状态就可以确定该数据块中哪些数据是在刷盘过程中通过写请求新写入的数据,那么在删除该数据块中的数据时可以不删除新写入的数据,而该数据块中原有的旧数据依然可以删除,从而在保留新数据的同时也可以尽量删除数据块中的冗余数据,节省存储空间。
第二方面,提供一种存储设备,该存储设备包括控制器和磁盘,控制器包括处理器和缓存,缓存包括若干个数据块,每个数据块的大小与缓存的最小组成单位相同。其中,处理器用于:接收写请求,写请求包括待写入数据以及待写入数据的地址。根据该地址确定缓存中该地址对应的数据块。在确定该地址对应的数据块的状态是刷盘状态时,将该数据块的状态更新为取消状态,并且将待写入数据写入缓存。其中,刷盘状态表示数据块中的数据正在被写入磁盘,取消状态用于在将数据块中的数据写入磁盘后,根据取消状态确定停止执行删除数据块中的数据的操作。
结合第二方面,在第二方面的第一种可能的实现方式中,处理器还用于:在确定该地址对应的数据块的状态是刷盘状态时,若将该数据块中的数据写入磁盘的过程还未启动,则停止执行将该数据块中的数据写入磁盘。
结合第二方面,在第二方面的第二种可能的实现方式中,处理器还用于:在接收写请求之前,若需要将该数据块中的数据写入磁盘,则确定该数据块当前的状态。若该数据块的状态为等待刷盘状态,则将该数据块的状态更新为刷盘状态,且将该数据块中的数据写入磁盘。其中,等待刷盘状态用于指示数据块中的数据等待被写入磁盘。
结合第二方面或第二方面的第二种可能的实现方式,在第二方面的第三种可能的实现方式中,处理器还用于:在将该数据块中的数据写入磁盘之后,确定该数据块的状态是取消状态时,获取该数据块中包括的数据的状态,以确定该数据块中新写入的数据。停止执行删除新写入的数据的操作,以及,删除该数据块中原有的数据。
第三方面,提供一种存储系统,该存储系统包括主机以及存储设备。其中,主机用于向存储设备发送写请求,写请求包括待写入数据以及待写入数据的地址。存储设备包括控制器和磁盘,控制器包括处理器和缓存,缓存包括若干个数据块,每个数据块的大小与缓存的最小组成单位相同。处理器用于:接收主机发送的写请求。根据写请求携带的地址确定缓存中该地址对应的数据块。在确定该地址对应的数据块的状态是刷盘状态时,将该数据块的状态更新为取消状态,并且将待写入数据写入缓存。刷盘状态表示数据块中的数据正在被写入磁盘,取消状态用于在将数据块中的数据写入磁盘后,根据取消状态确定停止执行删除该数据块中的数据的操作。
第四方面,提供一种计算机存储介质,用于储存为上述存储设备中的处理器所用的计算机软件指令,其包含用于执行上述第一方面或第一方面的任一种可能的实现方式为处理器所设计的程序。
本发明实施例中,如果存储设备在刷盘过程中接收了写请求,可以继续执行写请求,无需等待,从而减小了写数据过程的时延。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面所介绍的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的状态迁移方式示意图;
图2为本发明实施例提供的存储设备的结构示意图;
图3为本发明实施例提供的存储系统的结构示意图;
图4为本发明实施例提供的写数据的方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
以下,对本发明实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1)存储设备中可以包括控制器和非易失性存储介质,其中控制器包括处理器和缓存(Cache),非易失性存储介质例如为硬盘,或称为磁盘,当然也可以包括其他的非易失性存储介质。
存储设备接收主机写入的数据,在回写模式下,将数据写入缓存。在缓存中的数据达到一定数据量后,通过刷盘操作将缓存中的数据写入磁盘。
2)回写(write back),是一种缓存技术,可以认为是写数据的一种模式,例如称为回写模式。回写模式定义为:存储设备将主机写入的数据先写入缓存,之后再从缓存写入磁盘的模式。即,在回写模式中,数据是先写到缓存中,之后再从缓存中写到磁盘中。以及,在回写模式中,一旦数据写到缓存中,存储设备就会向主机发送写请求已完成信号(或者称为写入完成的消息),主机就会确定数据已写入完毕,而实际从缓存再把数据写到磁盘的操作,即刷盘操作,可能立刻执行,也可能会延迟执行。
3)本发明实施例中的术语“系统”和“网络”可被互换使用。“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
首先介绍一下本发明实施例的技术背景。
目前,在刷盘过程中,若存储设备接收了写请求,写请求携带的数据在缓存中的地址位于第一数据块中,而缓存中的第一数据块正在被刷盘,那么就出现了刷盘冲突。若按照现有技术的解决方案,存储设备要等到刷盘过程结束之后再执行该写请求,也就是说在刷盘过程中写请求只能等待,这显然增加了写请求的时延。
为了解决该技术问题,本发明实施例中,如果写请求携带的待写入数据需写入的地址对应的数据块的状态是刷盘状态,即存储设备正在对该数据块进行刷盘操作,则存储设备将该数据块的状态更新为取消状态,且将待写入数据写入缓存,也就是说,如果存储设备在刷盘过程中接收了写请求,可以继续执行写请求,无需等待,从而减小了写数据过程的时延。
根据以上介绍可知,本发明实施例为数据块设置了不同的状态,从而根据数据块的状态可以确定当前正在对数据块执行何种操作。下面首先介绍本发明实施例为数据块设置了哪些状态。
本发明实施例中为缓存中的数据块定义六种状态,存储设备可以维护每个数据块的状态,具体的,可以由缓存维护数据块的状态,即将数据块的状态存储在缓存中,或者可以由处理器维护数据块的状态,即将数据块的状态存储在处理器中,本发明实施例不作限制。这六种状态分别为初始化(init)状态、写(write)状态、等待(wait)状态、刷盘(destaging)状态、取消(cancel)状态、以及刷盘结束(destaged)状态,其中,wait状态也可以理解为等待刷盘状态。其中,init状态表示该数据块初始生成,没有对该数据块进行任何操作。write状态表示该数据块正在写的过程中,即正在向该数据块中写入数据。wait状态表示没有向该数据块执行写操作,该数据块等待刷盘。destaging状态表示该数据块正在被刷盘的过程中,其中,正在被刷盘的过程包括准备刷盘的过程、以及将数据写入磁盘的过程。cancel状态表示在对数据块进行刷盘的过程中刷盘过程被取消。destaged状态表示刷盘完成,且未接收写请求。
既然为数据块定义了状态,则对于同一个数据块来说,其状态是可以发生变化的,即存储设备可以更新数据块的状态。本发明实施例中,数据块可以由“写”、“写结束”、“刷盘”、以及“刷盘结束”等四个事件来触发状态变迁。例如参见图1,为本发明实施例中数据块的状态迁移方式示意图。举例来讲,对于处于init状态的数据块,在写事件来临时存储设备将其状态更新为写状态。对于处于write状态的数据块,在写结束事件来临时存储设备将其状态更新为等待状态。对于处于wait状态的数据块,在刷盘事件来临时存储设备将其状态更新为刷盘状态。同样对于处于wait状态的数据块,而在刷盘结束事件来临时存储设备将其状态更新为取消状态。图1中其他的状态迁移过程也是类似的,不多赘述。
另外还可以参见表1,为数据块的状态迁移表,即数据块的状态可以按照表1所示的方式进行迁移。表1中的NA表示发生该事件的时候,不可能是该状态。
表1
表1中,例如对于处于destaging状态的数据块,在写事件来临时,存储设备将其状态更新为cancel状态,或例如对于处于wait状态的数据块,在写事件来临时,存储设备将其状态更新为write状态,等等。
下面结合说明书附图对本发明实施例提供的方案作进一步详细描述。
请参见图2,本发明一实施例提供一种存储设备,该存储设备可以包括控制器201和磁盘202。其中,控制器201包括处理器2011和缓存2012。处理器2011可以接收主机下发的请求,例如写请求或读请求,写请求用于向缓存2012或直接向磁盘202中写入数据,读请求用于从缓存2012或从磁盘202中读取数据。在缓存2012中的数据达到一定数据量时,则该存储设备可以执行刷盘操作。
磁盘202,可以是任意类型的硬盘,例如固态硬盘(Solid State Drive,SSD)或机械硬盘(HDD)等,本发明实施例不作限制。
缓存2012,是指可以进行高速数据交换的存储器,例如随机存取存储器(Random-Access Memory,RAM)。缓存一般是存储设备或者计算机系统的内存资源,用于加速对存储设备或计算机系统的访问,其中包括读和写。尤其针对写请求,通过回写模式将数据写到内存后向主机返回写完成信息,以加速主机的写速度。
一般在高速缓存中,为了方便标识以及组织数据,会以一定大小的块作为数据的组织单位,这种块即可称为数据块(slice),比如以64K为粒度组织数据单元,后续在访问该数据块的时候都以该粒度进行访问。同时该数据块一般会以树形结构、哈希结构或者线性结构作为索引数据结构。在本发明实施例中,可以理解为,缓存2012的最小存储单位为数据块,缓存2012中可以包括若干个数据块,这里的“若干个”,可以理解为“至少一个”。缓存2012可以通过若干个数据块来存储数据。
本发明实施例中,缓存2012中存储有数据。在回写模式下,处理器2011从主机接收写入的数据后,先将接收的数据写入缓存2012,之后数据再从写缓存2012写入磁盘202。在缓存2012中存储的数据达到一定数据量时,处理器2011就可以执行刷盘操作。
处理器2011可以是中央处理器(CPU)或特定应用集成电路(ApplicationSpecific Integrated Circuit,ASIC),可以是一个或多个用于控制程序执行的集成电路,可以是使用现场可编程门阵列(Field Programmable Gate Array,FPGA)开发的硬件电路,也可以是基带芯片。处理器2011可以用于向缓存2012或磁盘202写入数据,也可以完成从缓存2012或磁盘202中读取数据等功能。其中,处理器2011执行任务所需的程序代码可以存储在缓存2012中,或者可以存储在其他的计算机存储介质中。
请参见图3,基于同一发明构思,本发明一实施例提供一种存储系统,该存储系统可以包括如图2所示的存储设备,以及还可以包括与该存储设备相连的主机。主机用于向存储设备中写入数据,以及,从存储设备中读取数据。
请参见图4,本发明一实施例提供一种写数据的方法,该方法应用于图2或图3所示的存储设备中。在该存储设备的缓存中包括若干个数据块,每个数据块的大小与缓存的最小组成单位相同,本发明实施例中的数据块应被理解为缓存中的最小存储单位,而不是数据的集合。例如本发明实施例中数据块的大小为64K,当然在实际应用中不限于此。图4所示的实施例所提供的方法可以由存储设备中的处理器2011执行。该方法的流程描述如下。
步骤401:接收写请求,写请求包括待写入数据以及待写入数据的地址;
步骤402:根据该地址确定缓存中该地址对应的数据块;
步骤403:在确定该地址对应的数据块的状态是刷盘状态时,将该数据块的状态更新为取消状态,并且将待写入数据写入缓存;其中,刷盘状态表示数据块中的数据正在被写入磁盘,取消状态用于在将数据块中的数据写入磁盘后,根据取消状态确定停止执行删除数据块中的数据的操作。
首先要说明的是,图4所示的实施例中各个步骤之前的编号不代表各个步骤的实际执行顺序,在实际应用中,各个步骤可以按照任意顺序执行。
在要向存储设备写入数据时,主机向存储设备发送写请求,则存储设备通过处理器2011接收主机发送的写请求,写请求可以携带待写入数据,以及还携带待写入数据的地址,这里待写入数据的地址是缓存2012中的地址。
处理器2011接收写请求后,确定写请求中携带的地址所对应的数据块,该数据块位于缓存2012中。在确定数据块后,处理器2011可以确定该数据块的状态,其中,若数据块的状态由处理器2011维护,则处理器2011可以直接在本地查询数据块的状态,若数据块的状态维护在缓存2012中,则处理器2011可以在缓存2012中查询数据块的状态。若数据块的状态为destaging状态,则表示数据块正在被刷盘,那么处理器2011可以将该数据块的状态更新为cancel状态,在数据块的状态为cancel状态时,则处理器2011可以将写请求携带的待写入数据写入缓存2012。即,本发明实施例中,即使数据块处于刷盘过程中,在接收写请求后存储设备也可以直接处理该写请求,无需在刷盘过程结束之后再处理写请求,减少了写请求的等待时间,减小时延。其中,本发明实施例中数据块究竟如何进行状态迁移,可参考图1或表1,不再多赘述。
在可能的实施方式中,在接受写请求之前,若需要执行刷盘过程,即需要将数据块中的数据写入磁盘,那么处理器2011可以确定该数据块当前的状态,若数据块当前的状态为wait状态,则确定可以刷盘,那么就可以将该数据块的状态更新为destaging状态,且可以将该数据块中的数据写入磁盘202。那么,在接收写请求后,刷盘过程有可能已经开始,或者也可能还未开始。则,在接收写请求后,在该地址对应的数据块的状态是destaging状态时,处理器2011除了可以将该数据块的状态更新为cancel状态之外,若该数据块的刷盘过程还未启动,即将该数据块中的数据写入磁盘202的过程还未启动,那么处理器2011可以停止将该数据块中的数据写入磁盘202,即停止执行刷盘过程,这样可以避免刷盘冲突。且刷盘过程一般来说没有写请求的时延要求高,因此将刷盘过程延后执行,影响不会太大。或者,在接收写请求后,在该地址对应的数据块的状态是destaging状态时,若该数据块的刷盘过程已启动,则一般来说刷盘过程无法取消,即处理器2011还是会继续执行将该数据块中的数据写入磁盘202的操作,在这种情况下,刷盘过程和处理写请求的过程就会同时进行。
如果刷盘过程和处理写请求的过程同时进行,则在刷盘结束后处理器2011一般会删除缓存2012中已经通过刷盘过程写入磁盘202的数据,从而使得缓存2012可以存储新的数据。那么,若在刷盘过程中通过写请求向缓存2012里写入了新的数据,则很可能新的数据也会被删除。为解决该技术问题,本发明实施例中,在刷盘过程结束后,即在将数据块中的数据写入磁盘202后,处理器2011可以确定数据块的状态,若数据块的状态为cancel状态,表明在执行刷盘操作的过程中还执行了写请求,那么处理器2011确定停止执行删除该数据块中的数据的操作,这样可以避免将通过写请求新写入该数据块的数据删除。
一般来说,一个数据块可以存储多个数据,通过写请求写入的数据可能只占据一个数据块的部分存储区域,也就是说,一个数据块中,可能存储了通过写请求新写入的数据,还存储了以前的旧数据。那么,如果因为该数据块是cancel状态就停止删除该数据块中包括的全部数据,则该数据块中包括的旧数据也不会被删除,较为浪费该数据块的存储空间。
为解决该技术问题,本发明实施例中除了可以维护数据块的状态之外,还可以维护数据块中存储的每个数据的状态,在刷盘过程结束后,若数据块的状态为取消状态,则根据该数据块中的每个数据的状态就可以确定该数据块中哪些数据是在刷盘过程中通过写请求新写入的数据,那么在删除该数据块中的数据时可以不删除新写入的数据,而该数据块中原有的旧数据依然可以删除,从而在保留新数据的同时也可以尽量删除数据块中的冗余数据,节省存储空间。
其中,可以通过为数据块中的每个数据设置标识来维护数据的状态,也就是说,通过数据的标识的取值就可以知道该数据的状态。在执行刷盘操作之前,一个数据块中的每个数据的标识的取值可以相同。例如每个数据的标识可以占用1位(bit),在执行刷盘操作之前,一个数据块中的每个数据的标识的取值均为“0”,如果在执行刷盘操作的过程中处理器2011未执行写请求,即未向该数据块写入新的数据,则该数据块中每个数据的标识的取值不会变,即,如果在执行刷盘操作的过程中处理器2011未处理写请求,则在刷盘过程结束后,该数据块中每个数据的标识的取值依然是“0”。而如果在执行刷盘操作的过程中处理器2011执行了写请求,即向该数据块中写入了新的数据,那么写入的新的数据的标识的取值为“1”,而其他数据的标识的取值保持不变。其中,新的数据可以写入该数据块中的空闲存储区,或者新的数据可以替换该数据块中原有的旧数据。在刷盘过程结束后,处理器2011若确定数据块的状态为cancel状态,则可以进一步获取该数据块中包括的每个数据的状态,即获取该数据块中每个数据的标识的取值,若获得的每个数据的标识的取值均为“0”,则处理器2011可以删除该数据块中的全部数据,以删除缓存中的冗余数据,节省出缓存的空间存储更多数据。而若获得的数据的标识中,有部分数据的标识取值为“1”,那么处理器2011确定这部分数据为在刷盘过程中新写入的数据,那么处理器2011可以确定不删除这部分新写入的数据,而对于该数据块中的其他原有数据,即标识取值为“0”的数据,处理器2011还是可以删除,既可以保留新写入的数据,也可以尽量删除缓存2012中的冗余数据。
同样的,数据的标识可以由处理器2011维护,或者也可以由缓存2012维护,本发明实施例不作限制。
本发明实施例中,如果写请求携带的待写入数据需写入的地址对应的数据块的状态是destaging状态,则将该数据块的状态更新为cancel状态,且将待写入数据写入缓存2012,也就是说,如果存储设备在刷盘过程中接收了写请求,可以继续执行写请求,无需等待,从而减小了写数据过程的时延。
另外,在刷盘结束后一般会删除缓存2012中已经通过刷盘写入磁盘202的数据,从而使得缓存2012可以存储新的数据。那么,若在刷盘过程中通过写请求向缓存2012里写入了新的数据,则很可能新的数据也会被删除。为解决该技术问题,本发明实施例中除了将待写入数据写入缓存2012之外,还将数据块的状态由destaging状态更新为cancel状态,从而在刷盘结束后,若数据块的状态为cancel状态,存储设备可以确定停止删除该数据块中的数据,通过这种方式可以有效避免数据块中新写入的数据被删除。
在本发明中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
本发明实施例还提供一种计算机存储介质,其中,该计算机存储介质可存储有程序,该程序执行时包括上述方法实施例中记载的任何一种视频通信过程中的带宽调整方法的部分或全部步骤。
在本发明实施例中的各功能单元可以集成在一个处理单元中,或者各个单元也可以均是独立的物理模块。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备,例如可以是个人计算机,服务器,或者网络设备等,或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:通用串行总线闪存盘(Universal Serial Bus flash drive)、移动硬盘、只读存储器(Read-Only Memory,ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以对本发明的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明实施例的方法,不应理解为对本发明实施例的限制。本技术领域的技术人员可轻易想到的变化或替换,都应涵盖在本发明实施例的保护范围之内。

Claims (9)

1.一种写数据的方法,其特征在于,所述方法应用于存储设备中,所述存储设备包括控制器和磁盘,所述控制器包括处理器和缓存,所述缓存包括若干个数据块,每个数据块的大小与所述缓存的最小组成单位相同,所述方法由所述处理器执行,包括:
接收写请求,所述写请求包括待写入数据以及所述待写入数据的地址;
根据所述地址确定所述缓存中所述地址对应的数据块;
在确定所述地址对应的数据块的状态是刷盘状态时,将所述数据块的状态更新为取消状态,并且将所述待写入数据写入所述缓存;其中,所述刷盘状态表示所述数据块中的数据正在被写入所述磁盘,所述取消状态用于在将所述数据块中的数据写入所述磁盘后,根据所述取消状态确定停止执行删除所述数据块中的数据的操作。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
在确定所述地址对应的数据块的状态是刷盘状态时,若将所述数据块中的数据写入所述磁盘的过程还未启动,则停止执行将所述数据块中的数据写入所述磁盘。
3.如权利要求1所述的方法,其特征在于,在接收所述写请求之前,所述方法还包括:
若需要将所述数据块中的数据写入所述磁盘,则确定所述数据块当前的状态;
若所述数据块的状态为等待刷盘状态,则将所述数据块的状态更新为刷盘状态,且将所述数据块中的数据写入所述磁盘;所述等待刷盘状态用于指示数据块中的数据等待被写入所述磁盘。
4.如权利要求1或3所述的方法,其特征在于,在将所述数据块中的数据写入所述磁盘之后,还包括:
确定所述数据块的状态是取消状态时,获取所述数据块中包括的数据的状态,以确定所述数据块中新写入的数据;
停止执行删除所述新写入的数据的操作,以及,删除所述数据块中原有的数据。
5.一种存储设备,其特征在于,包括控制器和磁盘,所述控制器包括处理器和缓存,所述缓存包括若干个数据块,每个数据块的大小与所述缓存的最小组成单位相同;其中,所述处理器用于:
接收写请求,所述写请求包括待写入数据以及所述待写入数据的地址;
根据所述地址确定所述缓存中所述地址对应的数据块;
在确定所述地址对应的数据块的状态是刷盘状态时,将所述数据块的状态更新为取消状态,并且将所述待写入数据写入所述缓存;其中,所述刷盘状态表示所述数据块中的数据正在被写入所述磁盘,所述取消状态用于在将所述数据块中的数据写入所述磁盘后,根据所述取消状态确定停止执行删除所述数据块中的数据的操作。
6.如权利要求5所述的存储设备,其特征在于,所述处理器还用于:
在确定所述地址对应的数据块的状态是刷盘状态时,若将所述数据块中的数据写入所述磁盘的过程还未启动,则停止执行将所述数据块中的数据写入所述磁盘。
7.如权利要求5所述的存储设备,其特征在于,所述处理器还用于:
在接收所述写请求之前,若需要将所述数据块中的数据写入所述磁盘,则确定所述数据块当前的状态;
若所述数据块的状态为等待刷盘状态,则将所述数据块的状态更新为刷盘状态,且将所述数据块中的数据写入所述磁盘;所述等待刷盘状态用于指示数据块中的数据等待被写入所述磁盘。
8.如权利要求5或7所述的存储设备,其特征在于,所述处理器还用于:
在将所述数据块中的数据写入所述磁盘之后,确定所述数据块的状态是取消状态时,获取所述数据块中包括的数据的状态,以确定所述数据块中新写入的数据;
停止执行删除所述新写入的数据的操作,以及,删除所述数据块中原有的数据。
9.一种存储系统,其特征在于,包括主机以及存储设备;其中:
所述主机,用于向所述存储设备发送写请求;所述写请求包括待写入数据以及所述待写入数据的地址;
所述存储设备,包括控制器和磁盘,所述控制器包括处理器和缓存,所述缓存包括若干个数据块,每个数据块的大小与所述缓存的最小组成单位相同;其中,所述处理器用于:接收所述写请求;根据所述地址确定所述缓存中所述地址对应的数据块;在确定所述地址对应的数据块的状态是刷盘状态时,将所述数据块的状态更新为取消状态,并且将所述待写入数据写入所述缓存;其中,所述刷盘状态表示所述数据块中的数据正在被写入所述磁盘,所述取消状态用于在将所述数据块中的数据写入所述磁盘后,根据所述取消状态确定停止执行删除所述数据块中的数据的操作。
CN201610885958.2A 2016-10-09 2016-10-09 一种写数据的方法、设备及系统 Active CN106527974B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610885958.2A CN106527974B (zh) 2016-10-09 2016-10-09 一种写数据的方法、设备及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610885958.2A CN106527974B (zh) 2016-10-09 2016-10-09 一种写数据的方法、设备及系统

Publications (2)

Publication Number Publication Date
CN106527974A true CN106527974A (zh) 2017-03-22
CN106527974B CN106527974B (zh) 2019-05-28

Family

ID=58331996

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610885958.2A Active CN106527974B (zh) 2016-10-09 2016-10-09 一种写数据的方法、设备及系统

Country Status (1)

Country Link
CN (1) CN106527974B (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106970765A (zh) * 2017-04-25 2017-07-21 杭州宏杉科技股份有限公司 数据存储方法及装置
CN110348245A (zh) * 2018-04-02 2019-10-18 深信服科技股份有限公司 基于nvm的数据完整性保护方法、系统、装置及存储介质
CN110502457A (zh) * 2019-08-23 2019-11-26 北京浪潮数据技术有限公司 一种元数据存储方法及装置
CN112084048A (zh) * 2020-09-25 2020-12-15 中国建设银行股份有限公司 Kafka同步刷盘方法、装置及消息服务器
WO2021063160A1 (zh) * 2019-09-30 2021-04-08 华为技术有限公司 访问固态硬盘的方法及存储设备
CN112817520A (zh) * 2020-12-31 2021-05-18 杭州宏杉科技股份有限公司 数据刷盘方法及装置
WO2021229368A1 (en) * 2020-05-15 2021-11-18 International Business Machines Corporation Write sort management in data storage system
CN115373610A (zh) * 2022-10-25 2022-11-22 北京智芯微电子科技有限公司 数据写入方法、装置、电子设备及存储介质
US11580022B2 (en) 2020-05-15 2023-02-14 International Business Machines Corporation Write sort management in a multiple storage controller data storage system
CN116382576A (zh) * 2023-03-17 2023-07-04 平头哥(上海)半导体技术有限公司 存储控制芯片、固态硬盘和相关方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102023809A (zh) * 2009-09-21 2011-04-20 成都市华为赛门铁克科技有限公司 存储系统、从存储系统读取数据的方法及写入数据的方法
CN103106122A (zh) * 2011-08-08 2013-05-15 Arm有限公司 针对同时待处理数据访问请求的数据冲突处理
US20130311748A1 (en) * 2009-03-17 2013-11-21 Memoir Systems, Inc. System and Method for Storing Data in a Virtualized Memory System With Destructive Reads
CN104505117A (zh) * 2014-12-30 2015-04-08 华中科技大学 一种动态存储器刷新方法与刷新控制器
CN105739924A (zh) * 2016-01-29 2016-07-06 华为技术有限公司 基于缓存集群的缓存方法和系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130311748A1 (en) * 2009-03-17 2013-11-21 Memoir Systems, Inc. System and Method for Storing Data in a Virtualized Memory System With Destructive Reads
CN102023809A (zh) * 2009-09-21 2011-04-20 成都市华为赛门铁克科技有限公司 存储系统、从存储系统读取数据的方法及写入数据的方法
CN103106122A (zh) * 2011-08-08 2013-05-15 Arm有限公司 针对同时待处理数据访问请求的数据冲突处理
CN104505117A (zh) * 2014-12-30 2015-04-08 华中科技大学 一种动态存储器刷新方法与刷新控制器
CN105739924A (zh) * 2016-01-29 2016-07-06 华为技术有限公司 基于缓存集群的缓存方法和系统

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106970765B (zh) * 2017-04-25 2020-07-17 杭州宏杉科技股份有限公司 数据存储方法及装置
CN106970765A (zh) * 2017-04-25 2017-07-21 杭州宏杉科技股份有限公司 数据存储方法及装置
CN110348245A (zh) * 2018-04-02 2019-10-18 深信服科技股份有限公司 基于nvm的数据完整性保护方法、系统、装置及存储介质
CN110502457A (zh) * 2019-08-23 2019-11-26 北京浪潮数据技术有限公司 一种元数据存储方法及装置
CN110502457B (zh) * 2019-08-23 2022-02-18 北京浪潮数据技术有限公司 一种元数据存储方法及装置
WO2021063160A1 (zh) * 2019-09-30 2021-04-08 华为技术有限公司 访问固态硬盘的方法及存储设备
US11580022B2 (en) 2020-05-15 2023-02-14 International Business Machines Corporation Write sort management in a multiple storage controller data storage system
WO2021229368A1 (en) * 2020-05-15 2021-11-18 International Business Machines Corporation Write sort management in data storage system
US11762559B2 (en) 2020-05-15 2023-09-19 International Business Machines Corporation Write sort management in a multiple storage controller data storage system
CN112084048A (zh) * 2020-09-25 2020-12-15 中国建设银行股份有限公司 Kafka同步刷盘方法、装置及消息服务器
CN112817520A (zh) * 2020-12-31 2021-05-18 杭州宏杉科技股份有限公司 数据刷盘方法及装置
CN115373610B (zh) * 2022-10-25 2023-08-18 北京智芯微电子科技有限公司 数据写入方法、装置、电子设备及存储介质
CN115373610A (zh) * 2022-10-25 2022-11-22 北京智芯微电子科技有限公司 数据写入方法、装置、电子设备及存储介质
CN116382576A (zh) * 2023-03-17 2023-07-04 平头哥(上海)半导体技术有限公司 存储控制芯片、固态硬盘和相关方法
CN116382576B (zh) * 2023-03-17 2024-02-27 平头哥(上海)半导体技术有限公司 存储控制芯片、固态硬盘和相关方法

Also Published As

Publication number Publication date
CN106527974B (zh) 2019-05-28

Similar Documents

Publication Publication Date Title
CN106527974A (zh) 一种写数据的方法、设备及系统
DE112018002951B4 (de) Verwenden eines spurformatcodes in einem cache-steuerblock für eine spur in einem cache, um lese- und schreibanforderungen in bezug auf die spur im cache zu verarbeiten
JP5305621B2 (ja) 複数のデータ構造を用いてキャッシュ内のデータを管理するシステム
US6976131B2 (en) Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
CN101784993B (zh) 使用闪存作为存储器的设备及其操作方法
US8732402B2 (en) Managing track discard requests to include in discard track messages
US10860494B2 (en) Flushing pages from solid-state storage device
US9804971B2 (en) Cache management of track removal in a cache for storage
CN106874217A (zh) 存储器系统及控制方法
CN104145252A (zh) 两级高速缓存系统中的自适应高速缓存提升
DE112012004540T5 (de) Selektive Speicherplatzfreigabe eines Datenspeichers unter Verwendung von Vergleichs- und Verlagerungskennzahlen
CN106406756A (zh) 一种文件系统的空间分配方法及装置
US20140075122A1 (en) Durable transactions with storage-class memory
CN105760311A (zh) trim命令响应方法和系统及操作系统
CN110196818A (zh) 缓存数据的方法、缓存设备和存储系统
CN104679684B (zh) 半导体器件及其操作方法
CN106909516A (zh) 存储系统及其操作方法
CN115061972A (zh) 处理器、数据读写方法、装置和存储介质
KR102144124B1 (ko) 하이브리드 메인 메모리 시스템의 비휘발성 메모리의 데이터 관리 방법 및 장치
US8095755B2 (en) System, method and computer program product for generating a consistent point in time copy of data
DE112020005147T5 (de) Cache-snooping-modus, der einen kohärenzschutz für bestimmte anforderungen erweitert
Shin et al. Performance analysis of buffer management policy considering internal parallelism of solid state drives
CN116820342A (zh) 磁盘阵列的数据处理方法、装置和磁盘阵列
Chen et al. Co-optimizing storage space utilization and performance for key-value solid state drives
JP4558003B2 (ja) データアクセス処理方法及び記憶制御装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant