CN105260128B - 一种将数据写入存储设备的方法及存储设备 - Google Patents
一种将数据写入存储设备的方法及存储设备 Download PDFInfo
- Publication number
- CN105260128B CN105260128B CN201510580227.2A CN201510580227A CN105260128B CN 105260128 B CN105260128 B CN 105260128B CN 201510580227 A CN201510580227 A CN 201510580227A CN 105260128 B CN105260128 B CN 105260128B
- Authority
- CN
- China
- Prior art keywords
- write
- memory space
- data
- capacity
- storage device
- 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
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种将数据写入存储设备的方法及存储设备,用于解决因写缓存中存储的数据过多而导致写缓存失效的技术问题。该方法包括:确定所述第一存储空间中可用的存储容量,所述第一存储空间用于存储通过回写模式写入的数据及通过透写模式写入的数据;若所述第一存储空间中可用的存储容量小于等于预设容量,则将所述写缓存中存储的数据写入所述第二存储空间;所述第二存储空间用于存储从所述写缓存写入的数据。
Description
技术领域
本发明涉及存储技术领域,特别涉及一种将数据写入存储设备的方法及存储设备。
背景技术
目前,存储设备为了缩短对主机的响应时延,通常都工作在回写(write back)模式下,回写模式是一种缓存技术,即,先将数据写到写缓存,再从写缓存中写到SSD(SolidState Drive,固态硬盘)中的缓存技术。在回写模式中,数据先写到写缓存中,一旦数据写到写缓存中,存储设备就会发送写请求已完成信号,之后再将写缓存的数据写到SSD中。
然而,随着写入的数据增多,SSD的空间也会逐渐耗尽,当SSD的空间耗尽时,如果写缓存中有未写入SSD中的数据,那么这些数据就会滞留在写缓存中,无法写入SSD。如果存储在写缓存中的数据过多,则可能会占满写缓存,导致写缓存失效。
发明内容
本发明实施例提供一种将数据写入存储设备的方法及存储设备,用于解决因写缓存中存储的数据过多而导致写缓存失效的技术问题。
第一方面,提供一种将数据写入存储设备的方法,所述存储设备包括SSD、写缓存和处理器,所述SSD至少包括第一存储空间和第二存储空间,所述写缓存中存储有数据;所述方法由所述处理器执行包括以下步骤:
确定所述第一存储空间中可用的存储容量,所述第一存储空间用于存储通过回写模式写入的数据及通过透写模式写入的数据;
若所述第一存储空间中可用的存储容量小于等于预设容量,则将所述写缓存中存储的数据写入所述第二存储空间;所述第二存储空间用于存储从所述写缓存写入的数据。
结合第一方面,在第一方面的第一种可能的实现方式中,所述存储设备还包括第一缓存,所述第一缓存用于存储写数据模式对应的标识,所述写数据模式对应的标识用于指示所述存储设备的写数据模式;在确定所述第一存储空间中可用的存储容量之后,还包括:
若所述第一存储空间中可用的存储容量小于等于所述预设容量,将所述写数据模式对应的标识设置为所述透写模式对应的标识,以将所述存储设备的写数据模式设置为所述透写模式。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,在将所述存储设备的写数据模式对应的标识设置为透写模式对应的标识之后,还包括:
接收待写入所述存储设备的第一数据;
根据所述写数据模式对应的标识确定所述存储设备的写数据模式为所述透写模式;
确定所述第一存储空间中可用的存储容量;
若所述第一存储空间中可用的存储容量小于等于所述预设容量,拒绝将所述第一数据写入所述SSD,并返回写入失败的消息;否则,将所述第一数据写入所述第一存储空间。
结合第一方面,在第一方面的第三种可能的实现方式中,在确定所述第一存储空间中可用的存储容量之后,还包括:
若所述第一存储空间中可用的存储容量小于等于所述预设容量,设置所述第一存储空间对应的标识,所述第一存储空间对应的标识用于指示所述第一存储空间中可用的存储容量小于等于所述预设容量;
接收待写入所述存储设备的第二数据;
判断是否存在所述第一存储空间对应的标识;
若存在所述第一存储空间对应的标识,则拒绝将所述第二数据写入所述存储设备,并返回写入失败的消息;否则,若不存在所述第一存储空间对应的标识,则根据写数据模式对应的标识确定当前的写数据模式,并根据确定的写数据模式将所述第二数据写入所述存储设备;其中,所述存储设备还包括第一缓存,所述第一缓存用于存储所述写数据模式对应的标识,所述写数据模式对应的标识用于指示所述存储设备的写数据模式。
结合第一方面的第三种可能的实现方式,在第一方面的第四种可能的实现方式中,在设置所述第一存储空间对应的标识之后,还包括:
若所述第一存储空间中可用的存储容量大于所述预设容量,则删除所述第一存储空间对应的标识。
结合第一方面或第一方面的第一种可能的实现方式至第四种可能的实现方式中的任一种可能的实现方式,在第一方面的第五种可能的实现方式中,所述第一存储空间中可用的存储容量通过以下公式计算:
K=S-R-Y
其中,K为所述第一存储空间中可用的存储容量,S为所述SSD的总存储容量,R为所述第二存储空间的存储容量,Y为所述第一存储空间中已用的存储容量;
其中,R通过以下公式计算:
R=C/U+B×T
其中,C为所述写缓存的存储容量,U为所述SSD的最差空间利用率,B为在写数据时系统能够接受的最大带宽,T为时长,且在所述时长内接收的待写入所述SSD的数据量小于等于所述第二存储空间的存储容量。
第二方面,提供一种存储设备,包括SSD、写缓存和处理器,所述SSD至少包括第一存储空间和第二存储空间,所述写缓存中存储有数据;其中,所述处理器用于:
确定所述第一存储空间中可用的存储容量,所述第一存储空间用于存储通过回写模式写入的数据及通过透写模式写入的数据;
若所述第一存储空间中可用的存储容量小于等于所述预设容量,则将所述写缓存中存储的数据写入所述第二存储空间;所述第二存储空间用于存储从所述写缓存写入的数据。
结合第二方面,在第二方面的第一种可能的实现方式中,所述存储设备还包括第一缓存,所述第一缓存用于存储写数据模式对应的标识,所述写数据模式对应的标识用于指示所述存储设备的写数据模式;
所述处理器还用于:
在确定所述第一存储空间中可用的存储容量之后,若所述第一存储空间中可用的存储容量小于等于所述预设容量,将所述写数据模式对应的标识设置为所述透写模式对应的标识,以将所述存储设备的写数据模式设置为所述透写模式。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述处理器还用于:
在将所述存储设备的写数据模式对应的标识设置为透写模式对应的标识之后,接收待写入所述存储设备的第一数据;
根据所述写数据模式对应的标识确定所述存储设备的写数据模式为所述透写模式;
确定所述第一存储空间中可用的存储容量;
若所述第一存储空间中可用的存储容量小于等于所述预设容量,拒绝将所述第一数据写入所述SSD,并返回写入失败的消息;否则,将所述第一数据写入所述第一存储空间。
结合第二方面,在第二方面的第三种可能的实现方式中,所述处理器还用于:
在确定所述第一存储空间中可用的存储容量之后,若所述第一存储空间中可用的存储容量小于等于所述预设容量,设置所述第一存储空间对应的标识,所述第一存储空间对应的标识用于指示所述第一存储空间中可用的存储容量小于等于所述预设容量;
接收待写入所述存储设备的第二数据;
判断是否存在所述第一存储空间对应的标识;
若存在所述第一存储空间对应的标识,则拒绝将所述第二数据写入所述存储设备,并返回写入失败的消息;否则,若不存在所述第一存储空间对应的标识,则根据写数据模式对应的标识确定当前的写数据模式,并根据确定的写数据模式将所述第二数据写入所述存储设备;其中,所述存储设备还包括第一缓存,所述第一缓存用于存储所述写数据模式对应的标识,所述写数据模式对应的标识用于指示所述存储设备的写数据模式。
结合第二方面的第三种可能的实现方式,在第二方面的第四种可能的实现方式中,所述处理器还用于:
在设置所述第一存储空间对应的标识之后,若所述第一存储空间中可用的存储容量大于所述预设容量,则删除所述第一存储空间对应的标识。
结合第二方面或第二方面的第一种可能的实现方式至第四种可能的实现方式,在第二方面的第五种可能的实现方式中,所述第一存储空间中可用的存储容量通过以下公式计算:
K=S-R-Y
其中,K为所述第一存储空间中可用的存储容量,S为所述SSD的总存储容量,R为所述第二存储空间的存储容量,Y为所述第一存储空间中已用的存储容量;
其中,R通过以下公式计算:
R=C/U+B×T
其中,C为所述写缓存的存储容量,U为所述SSD的最差空间利用率,B为在写数据时系统能够接受的最大带宽,T为时长,且在所述时长内接收的待写入所述SSD的数据量小于等于所述第二存储空间的存储容量。
本发明实施例中在SSD里预先划分第一存储空间和第二存储空间,第二存储空间可以看作是预留空间,在第一存储空间可用的存储容量大于预设容量时,可以将通过回写模式写入的数据或通过透写模式写入的数据写入第一存储空间,第二存储空间此时不启用,而如果第一存储空间可用的存储容量小于等于预设容量,则可以将写缓存中存储的数据写入第二存储空间,这样,预先在SSD中为写缓存中滞留的数据预留第二存储空间,当第一存储空间耗尽时,如果写缓存中有未写入SSD中的数据,可以将这些数据写入第二存储空间,避免这些数据滞留在写缓存中,减轻写缓存的负担,而且也尽量避免了写缓存因为被数据占满而导致缓存失效的情况出现,尽量保证系统能够正常运行。
附图说明
图1为本发明实施例中存储设备的第一种结构示意图;
图2为本发明实施例中存储设备的第二种结构示意图;
图3为本发明实施例中存储系统的示意图;
图4为本发明实施例中将数据写入存储设备的方法的流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明实施例保护的范围。
以下,对本发明实施例中的部分用语进行解释说明,以便于本领域技术人员理解。
1)存储池:用于存储数据的容器,所有应用服务器使用的存储空间都来自于存储池,存储池的存储资源来自于硬盘域。硬盘域是由多块相同或不同类型的硬盘组合而成。不同的硬盘域间相互隔离,如果将不同的业务承载到不同硬盘域中,就隔离了业务之间的性能影响和故障影响。
2)thin(瘦)卷:是主机可访问的一个逻辑硬盘,thin卷在创建时只被分配初始容量,当初始分配容量不足时,系统按照用户实际使用容量从存储池中动态分配存储资源。
可以理解为,主机在访问时,访问的是thin卷,thin卷是一个逻辑存储空间,实际在存储数据时,要存储到存储池中。
存储池和thin卷,可以位于存储设备中。
存储设备可以包括缓存(Cache)和非易失性存储介质,例如对应于写操作的缓存可以称为写缓存,非易失性存储介质例如可以是硬盘,当然也可能是其他可能的存储介质,本发明实施例中以非易失性存储介质是SSD为例。
存储设备接收主机写入的数据,如果SSD还有可用的存储空间,则最终将接收的主机写入的数据存储到SSD中。
3)回写(write back),是一种缓存技术,可以认为是写数据的一种模式,例如可以称为回写模式。回写模式例如可以定义为:存储设备将主机写入的数据先写入写缓存,之后再从写缓存写入SSD的模式。即,在回写模式中,数据是先写到写缓存中,之后再从写缓存中写到SSD中。以及,在回写模式中,一旦数据写到写缓存中,存储设备就会向主机发送写请求已完成信号(或者称为写入完成的消息),主机就会确定数据已写入完毕,而实际从写缓存再把数据写到SSD中的操作,可能立刻执行,也可能会延迟执行。
4)透写(write through),是一种缓存技术,可以认为是写数据的一种模式,例如可以称为透写模式。透写模式例如可以定义为:存储设备将主机写入的数据不经过写缓存,而直接写入SSD的模式。即,在透写模式中,数据可以不经过写缓存,而直接写到SSD中。以及,在透写模式中,只有在数据已经安全地写到SSD中之后,存储设备才会向主机发送写请求完成信号(或者称为写入完成的消息),主机才会确定数据已写入完毕。
5)本发明实施例中的术语“系统”和“网络”可被互换使用。“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
首先介绍一下本发明实施例的技术背景。
目前,存储设备为了缩短对主机的响应时延,通常都工作在回写模式下。
然而,然而,随着写入的数据增多,SSD的空间也会逐渐耗尽,当SSD的空间耗尽时,如果写缓存中有未写入SSD中的数据,那么这些数据就会滞留在写缓存中,无法写入SSD。如果存储在写缓存中的数据过多,则可能会占满写缓存,导致写缓存失效。另外,数据长期存储在缓存中的话,也容易丢失。
本发明实施例充分考虑到以上问题,在SSD里预先划分第一存储空间和第二存储空间,第二存储空间可以看作是预留空间,在第一存储空间可用的存储容量大于预设容量时,可以将通过回写模式写入的数据或通过透写模式写入的数据写入第一存储空间,第二存储空间此时不启用,而如果第一存储空间可用的存储容量小于等于预设容量,则可以将写缓存中存储的数据写入第二存储空间,这样,预先在SSD中为写缓存中滞留的数据预留第二存储空间,当第一存储空间耗尽时,如果写缓存中有未写入SSD中的数据,可以将这些数据写入第二存储空间,避免这些数据滞留在写缓存中,减轻写缓存的负担,而且也尽量避免了写缓存因为被数据占满而导致缓存失效的情况出现,尽量保证系统能够正常运行。而且,减少了缓存中存储的数据量,尽量避免数据丢失的情况出现,增强系统可靠性。
下面结合说明书附图对本发明实施例作进一步详细描述。
请参见图1,本发明实施例提供一种存储设备,该存储设备可以包括SSD101、写缓存102和处理器103。图1中只示出了一个SSD,需注意的是,在实际应用中,一个存储设备中可以包括多个SSD。
固态硬盘,可以是用固态电子存储芯片阵列而制成的硬盘,由控制单元和存储单元组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘基本相同,在产品外形和尺寸上也基本与普通硬盘一致,被广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等领域。固态硬盘的存储介质一般分为两种,一种是采用闪存作为存储介质,例如采用FLASH(闪存)芯片,另外一种是采用DRAM(DynamicRandom Access Memory,即动态随机存取存储器)作为存储介质。其中,采用闪存作为存储介质的固态硬盘,一般就是通常所说的SSD。
SSD101可以用于存储数据。本发明实施例中,SSD101至少可以包括第一存储空间(如图1中的A所示)和第二存储空间(如图1中的B所示),其中,图1中关于第一存储空间和第二存储空间的划分情况只是示意,不代表第一存储空间和第二存储空间的实际大小。
其中,第一存储空间可以用于存储处理器103通过回写模式写入的数据以及处理器103通过透写模式写入的数据。例如,在第一存储空间可用的存储容量大于预设容量时,第一存储空间既可以接收从写缓存102写入的数据,也可以接收处理器103不经过写缓存102而直接写入的数据。
第二存储空间可以用于存储从写缓存102写入的数据,这也可以理解为是处理器103通过回写模式写入的数据。但在第一存储空间可用的存储容量大于预设容量时,可以不启用第二存储空间,即此时只使用第一存储空间,当第一存储空间即将耗尽时,即当第一存储空间可用的存储容量小于等于预设容量时,存储设备可以自动开始启用第二存储空间,此时,第二存储空间用于接收写缓存102中滞留的数据,即,第二存储空间接收的这些数据是处理器103之前通过回写模式写入的数据,或者可以这样理解,第二存储空间在启用之后,存储的数据都是第二存储空间在启用之前处理器103通过回写模式写入的数据。
写缓存102,可以是指可以进行高速数据交换的存储器,例如可以是RAM(Random-Access Memory,随机存取存储器)。
本发明实施例中,写缓存102中存储有数据。例如,写缓存102可以用于存储该存储设备通过回写模式写入的数据,在回写模式下,处理器103从主机接收写入的数据后,先将接收的数据写入写缓存102,之后数据再从写缓存102写入第一存储空间,而处理器103在将接收的数据写入写缓存102之后,就会向主机回复写入完成的消息,主机就确定数据已写入完毕。
处理器103具体可以是CPU(中央处理器)或ASIC(Application SpecificIntegrated Circuit,特定应用集成电路),可以是一个或多个用于控制程序执行的集成电路,可以是使用FPGA(Field Programmable Gate Array,现场可编程门阵列)开发的硬件电路,可以是基带芯片。处理器103可以用于通过回写模式向存储设备写入数据,及可以用于通过透写模式向存储设备写入设备。另外,处理器103也可以完成从存储设备中读取数据等功能。
可选的,请参见图2,在本发明另一实施例中,该存储设备还可以包括第一缓存201,第一缓存201可以用于存储写数据模式对应的标识,写数据模式对应的标识可以用于指示该存储设备的写数据模式,即,写数据模式对应的标识可以用于指示该存储设备的写数据模式是透写模式还是回写模式。比如,写数据模式对应的标识可以是一个标识位,例如该标识位可以有两个取值,分别为“1”和“0”,那么这两个取值可以分别指示回写模式及透写模式。当然,写数据模式对应的标识也可以是其他形式,只要写数据模式对应的标识可以用于指示该存储设备的写数据模式即可。
在该实施例中,第一缓存201可以是存储设备中与写缓存102不同的另外的缓存,例如,一般处理器103中都会包括缓存,则第一缓存201就可以是处理器103中的缓存,或者例如,第一缓存201在存储设备中也可以是与处理器103相互独立的两个模块。图2中是以处理器103和第一缓存201相连接的方式示意,这种示意方式可以涵盖以上列举的第一缓存的两种形式。
请参见图3,基于同一发明构思及上述各实施例,本发明实施例提供一种存储系统,该存储系统可以包括如图1或图2所示的存储设备,以及还可以包括与存储设备相连的主机。主机用于向存储设备中写入数据,以及,在存储设备写入数据成功时,主机可以接收存储设备返回的写入完成的消息,在存储设备写入数据失败时,主机可以接收存储设备返回的写入失败的消息。
请参见图4,基于同一发明构思及上述各实施例,本发明实施例提供一种将数据写入存储设备的方法,该方法可以应用于图1、图2或图3中的存储设备,例如,该方法可以由处理器103执行。该方法的流程描述如下。
步骤401:确定第一存储空间中可用的存储容量,第一存储空间用于存储通过回写模式写入的数据及通过透写模式写入的数据;
步骤402:若第一存储空间中可用的存储容量小于等于预设容量,则将写缓存102中存储的数据写入第二存储空间;第二存储空间用于存储从写缓存102写入的数据。
本发明实施例中,预设容量可根据需要设置,例如预设容量可以为0,或者也可以大于0但接近于0,或者也可以是其他数值,本发明不作限制。
可选的,在本发明另一实施例中,处理器103可以在接收到主机写入的数据时再确定第一存储空间可用的存储容量,或者也可以周期性确定或定时确定第一存储空间可用的存储容量,等等,本发明对于何时确定第一存储空间可用的存储容量不作限制。
本发明实施例中,在SSD101里预先划分第一存储空间和第二存储空间,第二存储空间可以看作是预留空间,当第一存储空间耗尽时,如果写缓存102中有未写入SSD101中的数据,可以将这些数据写入第二存储空间,避免这些数据滞留在写缓存102中,减轻写缓存102的负担,而且也尽量避免了写缓存102因为被数据占满而导致缓存失效的情况出现,尽量保证系统能够正常运行。而且,减少了缓存中存储的数据量,尽量避免数据丢失的情况出现,增强系统可靠性。
在确定第一存储空间可用的存储容量小于等于预设容量后,除了可以将写缓存102中滞留的数据写入第二存储空间外,为了尽量减少写缓存102中滞留的数据,以及尽量避免存储设备过饱和,处理器103还可以有其他的一些处理措施,下面分别介绍。
第一种措施
可选的,在本发明另一实施例中,存储设备还包括第一缓存201,第一缓存201用于存储写数据模式对应的标识,写数据模式对应的标识用于指示存储设备的写数据模式;在确定第一存储空间中可用的存储容量之后,还包括:
若第一存储空间中可用的存储容量小于等于预设容量,将写数据模式对应的标识设置为透写模式对应的标识,以将存储设备的写数据模式设置为透写模式。
即,在第一存储空间可用的存储容量小于预设容量时,也就是在第一存储空间耗尽时,处理器103除了可以将写缓存102中滞留的数据写入第二存储空间之外,还可以将存储设备的写数据模式设置为透写模式。例如,在确定第一存储空间可用的存储容量之前,若写数据模式是回写模式,则存储设备根据该实施例,可以将写数据模式重新设置为透写模式,即可以将写数据模式对应的标识设置为透写模式对应的标识。这样,后面如果存储设备再接收数据,因为写数据模式为透写模式,则存储设备只会直接将数据写入SSD101,而不会写入写缓存102,进一步减少写缓存102中存储的数据量。
在该实施例中,如果SSD101中的第一存储空间可用的存储容量小于等于预设容量,可以将存储设备的写数据模式设置为透写模式,这样,之后存储设备再接收的数据可以直接写入SSD101,而不用再写入写缓存102,避免写缓存102中存储的数据过多,从而也尽量避免了写缓存102因为被数据占满而导致缓存失效的情况出现,尽量保证系统能够正常运行。而且,减少了缓存中存储的数据量,尽量避免数据丢失的情况出现,增强系统可靠性。
下面介绍在第一种措施下若处理器103再接收到主机写入的数据时可能的处理方式。
可选的,在本发明另一实施例中,在将存储设备的写数据模式对应的标识设置为透写模式对应的标识之后,还包括:
接收待写入存储设备的第一数据;
根据写数据模式对应的标识确定存储设备的写数据模式为透写模式;
确定第一存储空间中可用的存储容量;
若第一存储空间中可用的存储容量小于等于预设容量,拒绝将第一数据写入SSD101,并返回写入失败的消息;否则,将第一数据写入第一存储空间。
在该实施例中,将处理器103后续接收的数据称为第一数据。若处理器103又接收到第一数据,那么处理器103要根据写数据模式对应的标识确定当前的写数据模式,因为在第一种措施下已将存储设备的写数据模式设置为透写模式,因此处理器103可以确定当前的写数据模式为透写模式。以及,处理器103还要确定第一存储空间可用的存储容量,
在该实施例中,在将写数据模式设置为透写模式之后,处理器103还可能会接收主机写入的数据,本发明实施例中将其称为第一数据。处理器103在接收到主机写入的第一数据时,可以分别确定当前的写数据模式以及第一存储空间可用的存储容量,其中,处理器103根据写数据模式对应的标识确定当前的写数据模式,以及确定第一存储空间中可用的存储容量,这两个步骤之间的顺序可以任意。
因为在第一种措施下已将存储设备的写数据模式设置为透写模式,因此处理器103根据写数据模式对应的标识可以确定当前的写数据模式为透写模式,在透写模式下,主机写入的数据规定只能写入第一存储空间,第二存储空间只留给写缓存102中滞留的数据。则处理器103可以确定第一存储空间可用的存储容量,如果第一存储空间可用的存储容量大于预设容量,则处理器103可以将第一数据写入第一存储空间,而如果第一存储空间可用的存储容量小于等于预设容量,那么处理器103可以拒绝将第一数据写入SSD101,并向主机返回写入失败的消息。
按照如前的介绍,是在第一存储空间可用的存储容量小于等于预设容量时才将存储设备的写数据模式设置为透写模式,而在设置完之后,可能存储设备清理了第一存储空间,比如可能丢弃了第一存储空间中的部分数据,或者第一存储空间中的部分数据也可能丢失,或者也可能用户通过手动方式清理了第一存储空间,比如删除了第一存储空间的部分数据,等等,总之,第一存储空间可能又释放出了一些空间。因此,在后面再接到主机写入的数据时,处理器103还是可以判断第一存储空间是否有剩余容量,以尽量将接收的数据写入第一存储空间。
第二种措施
可选的,在本发明另一实施例中,在确定所述第一存储空间中可用的存储容量之后,还包括:
若所述第一存储空间中可用的存储容量小于等于所述预设容量,设置所述第一存储空间对应的标识,所述第一存储空间对应的标识用于指示所述第一存储空间中可用的存储容量小于等于所述预设容量;
接收待写入所述存储设备的第二数据;
判断是否存在所述第一存储空间对应的标识;
若存在所述第一存储空间对应的标识,则拒绝将所述第二数据写入所述存储设备,并返回写入失败的消息;否则,若不存在所述第一存储空间对应的标识,则根据写数据模式对应的标识确定当前的写数据模式,并根据确定的写数据模式将所述第二数据写入所述存储设备;其中,所述存储设备还包括第一缓存,所述第一缓存用于存储所述写数据模式对应的标识,所述写数据模式对应的标识用于指示所述存储设备的写数据模式。
在该实施例中,若确定第一存储空间的容量小于等于预设容量,处理器103除了可以将写缓存102中滞留的数据写入第二存储空间之外,还可以直接设置第一存储空间对应的标识,例如也可以将该标识称为存储池空闲空间耗尽标记,例如,第一存储空间对应的标识也可以存储在第一缓存201中。这样,如果处理器103再接收到主机写入的数据(例如称为第二数据),则处理器103可以直接确定第一缓存201中是否存在该存储池空闲空间耗尽标记,如果存在,则处理器103可以直接向主机发送写入失败的消息,而无需再进行判断写数据模式及判断第一存储空间可用的存储容量等步骤。这样,通过设置存储池空闲空间耗尽标记,处理器103后续可以无需每次接收到主机写入的数据时都去判断一下第一存储空间可用的存储容量,节省了处理器103的操作过程和操作时间,提高操作效率。
另外,在该实施例中,处理器103接收主机写入的第二数据后,可以先判断是否存在第一存储空间对应的标识,即第一缓存201中是否存储了第一存储空间对应的标识,如果存在,就表明第一存储空间已没有可用的存储容量可供写入数据,则处理器103可以无需进行后续的判断写数据模式等操作,而直接向主机返回写入失败的消息,执行写操作的过程所需时间较短,效率较高。而如果判断确定不存在第一存储空间对应的标识,则基本可以确定第一存储空间还有可用的存储容量可供写入第二数据,则处理器103可以按照正常流程进行写数据操作,即,可以根据写数据模式对应的标识确定当前的写数据模式,确定的写数据模式可能是回写模式,也可能是透写模式,比如,如果确定是回写模式,那么就先将第二数据写入写缓存102,然后向主机返回写入成功的消息,之后再将第二数据写入SSD101,如果确定是透写模式,那么就直接将第二数据写入第一存储空间,然后向主机返回写入完成的消息。
可选的,在本发明另一实施例中,在设置第一存储空间对应的标识之后,还包括:
若第一存储空间中可用的存储容量大于预设容量,则删除第一存储空间对应的标识。
第一存储空间对应的标识可以是处理器103设置的,在设置之后,处理器103可以实时、定时或在受触发(比如接收用户的指示等)时检测第一存储空间可用的存储容量,如果检测到第一存储空间剩余的容量又大于预设容量了,则处理器103可以删除第一存储空间对应的标识,即删除存储池空闲空间耗尽标记,这样,后续处理器103再接收到主机写入的数据时,又可以重新写入存储设备。这样,处理器103可以根据第一存储空间可用的存储容量情况动态确定是否设置第一存储空间对应的标识,方便了写数据的操作。
前面提到第一存储空间可用的存储容量,下面介绍得到第一存储空间可用的存储容量的一种可能的方式。
可选的,在本发明另一实施例中,第一存储空间中可用的存储容量通过以下公式计算:
K=S-R-Y (1)
其中,K为第一存储空间中可用的存储容量,S为SSD101的总存储容量,R为第二存储空间的存储容量,Y为第一存储空间中已用的存储容量;
其中,R通过以下公式计算:
R=C/U+B×T (2)
其中,C为写缓存102的存储容量,U为SSD101的最差空间利用率,B为在写数据时系统能够接受的最大带宽,T为时长,该时长的起点为第一存储空间写满的时刻,终点为第一存储空间和第二存储空间全部写满的时刻,在该时长内接收的待写入SSD101的数据量小于等于第二存储空间的容量,也就是说,在该时长内接收的可以是写缓存102中滞留的数据。
在该实施例中,在创建存储池时,可以确定存储池中预留容量的大小,并可以在系统初始化阶段完成资源的预留。其中,预留容量与存储池总容量的关系例如为:
存储池总容量(Total Capacity)=存储池空闲容量(Free Capacity)+存储池预留容量(Reserved Capacity)
其中,存储池总容量可以是SSD101的总存储容量,存储池空闲容量可以是第一存储空间的存储容量,存储池预留容量可以是第二存储空间的存储容量。
在实际应用中,第二存储空间的容量的大小可根据SSD101的情况来计算,总的原则是尽量保证第二存储空间足够容纳写缓存102中滞留的数据。从公式(2)可知,决定第二存储空间的容量大小的因素主要包括以下几点:
1)存储设备的写缓存102的容量。
写缓存102的容量通常由系统的内存容量和系统规格等共同决定。
2)系统的最大写带宽,即在写数据时系统能够接受的最大带宽。
系统的最大写带宽可以是指系统前端(例如如前提到的主机)能够接收的写IO(输入输出)数据流的最大带宽。
3)SSD101的最差空间利用率。
假设SSD101中,1个页面包含n个扇区,如果1个写I/O(可理解为一个写操作)只覆盖1个扇区,而写I/O可能都是随机的,那么这一个写I/O也会占用这一个扇区对应的页面,相当于一个写I/O就占据了一个页面,在这种情况下就能得到SSD101的最差空间利用率:1/n。
4)时间提前量,即时长。
时间提前量用于保证在存储池即将写满到存储池写满这个时长内,写缓存102中滞留的数据量小于存储池预留容量。例如,写缓存102中滞留的数据量可以通过以下方式计算:
写缓存102中滞留的数据量=写缓存102的容量/SSD101的最差空间利用率
公式(2)给出了一种获得第二存储空间的存储容量的方式,这只是一个例子,在实际应用中,也可以通过其他方式来获得第二存储空间的存储容量。例如,在本发明另一实施例中,在计算第二存储空间的存储容量时,也可以按存储池总容量的百分比进行预留,或者参照一个经验值进行预留,等等,只要能够保证存储池的可用容量(第一存储空间的存储容量)耗尽或即将耗尽时,写缓存102中的数据能够尽量全部写入第二存储空间即可。
本发明实施例中在SSD101里预先划分第一存储空间和第二存储空间,第二存储空间可以看作是预留空间,在第一存储空间可用的存储容量大于预设容量时,可以将通过回写模式写入的数据或通过透写模式写入的数据写入第一存储空间,第二存储空间此时不启用,而如果第一存储空间可用的存储容量小于等于预设容量,则可以将写缓存102中存储的数据写入第二存储空间,这样,预先在SSD101中为写缓存102中滞留的数据预留第二存储空间,当第一存储空间耗尽时,如果写缓存102中有未写入SSD101中的数据,可以将这些数据写入第二存储空间,避免这些数据滞留在写缓存102中,减轻写缓存102的负担,而且也尽量避免了写缓存102因为被数据占满而导致缓存失效的情况出现,尽量保证系统能够正常运行。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、设备和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM(Read-Only Memory,只读存储器)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,不应理解为对本发明的限制。本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (12)
1.一种将数据写入存储设备的方法,其特征在于,所述存储设备包括固态硬盘SSD、写缓存和处理器,所述SSD至少包括第一存储空间和第二存储空间,所述写缓存中存储有数据;所述方法由所述处理器执行包括以下步骤:
确定所述第一存储空间中可用的存储容量,所述第一存储空间用于存储通过回写模式写入的数据及通过透写模式写入的数据;
若所述第一存储空间中可用的存储容量小于等于预设容量,则将所述写缓存中存储的数据写入所述第二存储空间;所述第二存储空间用于存储从所述写缓存写入的数据;其中,
在确定所述第一存储空间中可用的存储容量之后,还包括:
若所述第一存储空间中可用的存储容量小于等于所述预设容量,将写数据模式对应的标识设置为所述透写模式对应的标识,以将所述存储设备的写数据模式设置为所述透写模式。
2.如权利要求1所述的方法,其特征在于,所述存储设备还包括第一缓存,所述第一缓存用于存储所述写数据模式对应的标识,所述写数据模式对应的标识用于指示所述存储设备的写数据模式。
3.如权利要求2所述的方法,其特征在于,在将所述存储设备的写数据模式对应的标识设置为透写模式对应的标识之后,还包括:
接收待写入所述存储设备的第一数据;
根据所述写数据模式对应的标识确定所述存储设备的写数据模式为所述透写模式;
确定所述第一存储空间中可用的存储容量;
若所述第一存储空间中可用的存储容量小于等于所述预设容量,拒绝将所述第一数据写入所述SSD,并返回写入失败的消息;否则,将所述第一数据写入所述第一存储空间。
4.如权利要求1所述的方法,其特征在于,在确定所述第一存储空间中可用的存储容量之后,还包括:
若所述第一存储空间中可用的存储容量小于等于所述预设容量,设置所述第一存储空间对应的标识,所述第一存储空间对应的标识用于指示所述第一存储空间中可用的存储容量小于等于所述预设容量;
接收待写入所述存储设备的第二数据;
判断是否存在所述第一存储空间对应的标识;
若存在所述第一存储空间对应的标识,则拒绝将所述第二数据写入所述存储设备,并返回写入失败的消息;否则,若不存在所述第一存储空间对应的标识,则根据写数据模式对应的标识确定当前的写数据模式,并根据确定的写数据模式将所述第二数据写入所述存储设备;其中,所述存储设备还包括第一缓存,所述第一缓存用于存储所述写数据模式对应的标识,所述写数据模式对应的标识用于指示所述存储设备的写数据模式。
5.如权利要求4所述的方法,其特征在于,在设置所述第一存储空间对应的标识之后,还包括:
若所述第一存储空间中可用的存储容量大于所述预设容量,则删除所述第一存储空间对应的标识。
6.如权利要求1-5任一所述的方法,其特征在于,所述第一存储空间中可用的存储容量通过以下公式计算:
K=S-R-Y
其中,K为所述第一存储空间中可用的存储容量,S为所述SSD的总存储容量,R为所述第二存储空间的存储容量,Y为所述第一存储空间中已用的存储容量;
其中,R通过以下公式计算:
R=C/U+B×T
其中,C为所述写缓存的存储容量,U为所述SSD的最差空间利用率,B为在写数据时系统能够接受的最大带宽,T为时长,且在所述时长内接收的待写入所述SSD的数据量小于等于所述第二存储空间的存储容量。
7.一种存储设备,其特征在于,包括固态硬盘SSD、写缓存和处理器,所述SSD至少包括第一存储空间和第二存储空间,所述写缓存中存储有数据;其中,所述处理器用于:
确定所述第一存储空间中可用的存储容量,所述第一存储空间用于存储通过回写模式写入的数据及通过透写模式写入的数据;
若所述第一存储空间中可用的存储容量小于等于预设容量,则将所述写缓存中存储的数据写入所述第二存储空间;所述第二存储空间用于存储从所述写缓存写入的数据;
在确定所述第一存储空间中可用的存储容量之后,若所述第一存储空间中可用的存储容量小于等于所述预设容量,将写数据模式对应的标识设置为所述透写模式对应的标识,以将所述存储设备的写数据模式设置为所述透写模式。
8.如权利要求7所述的存储设备,其特征在于,所述存储设备还包括第一缓存,所述第一缓存用于存储所述写数据模式对应的标识,所述写数据模式对应的标识用于指示所述存储设备的写数据模式。
9.如权利要求8所述的存储设备,其特征在于,所述处理器还用于:
在将所述存储设备的写数据模式对应的标识设置为透写模式对应的标识之后,接收待写入所述存储设备的第一数据;
根据所述写数据模式对应的标识确定所述存储设备的写数据模式为所述透写模式;
确定所述第一存储空间中可用的存储容量;
若所述第一存储空间中可用的存储容量小于等于所述预设容量,拒绝将所述第一数据写入所述SSD,并返回写入失败的消息;否则,将所述第一数据写入所述第一存储空间。
10.如权利要求7所述的存储设备,其特征在于,所述处理器还用于:
在确定所述第一存储空间中可用的存储容量之后,若所述第一存储空间中可用的存储容量小于等于所述预设容量,设置所述第一存储空间对应的标识,所述第一存储空间对应的标识用于指示所述第一存储空间中可用的存储容量小于等于所述预设容量;
接收待写入所述存储设备的第二数据;
判断是否存在所述第一存储空间对应的标识;
若存在所述第一存储空间对应的标识,则拒绝将所述第二数据写入所述存储设备,并返回写入失败的消息;否则,若不存在所述第一存储空间对应的标识,则根据写数据模式对应的标识确定当前的写数据模式,并根据确定的写数据模式将所述第二数据写入所述存储设备;其中,所述存储设备还包括第一缓存,所述第一缓存用于存储所述写数据模式对应的标识,所述写数据模式对应的标识用于指示所述存储设备的写数据模式。
11.如权利要求10所述的存储设备,其特征在于,所述处理器还用于:
在设置所述第一存储空间对应的标识之后,若所述第一存储空间中可用的存储容量大于所述预设容量,则删除所述第一存储空间对应的标识。
12.如权利要求7-11任一所述的存储设备,其特征在于,所述第一存储空间中可用的存储容量通过以下公式计算:
K=S-R-Y
其中,K为所述第一存储空间中可用的存储容量,S为所述SSD的总存储容量,R为所述第二存储空间的存储容量,Y为所述第一存储空间中已用的存储容量;
其中,R通过以下公式计算:
R=C/U+B×T
其中,C为所述写缓存的存储容量,U为所述SSD的最差空间利用率,B为在写数据时系统能够接受的最大带宽,T为时长,且在所述时长内接收的待写入所述SSD的数据量小于等于所述第二存储空间的存储容量。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510580227.2A CN105260128B (zh) | 2015-09-11 | 2015-09-11 | 一种将数据写入存储设备的方法及存储设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510580227.2A CN105260128B (zh) | 2015-09-11 | 2015-09-11 | 一种将数据写入存储设备的方法及存储设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105260128A CN105260128A (zh) | 2016-01-20 |
CN105260128B true CN105260128B (zh) | 2018-05-29 |
Family
ID=55099836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510580227.2A Active CN105260128B (zh) | 2015-09-11 | 2015-09-11 | 一种将数据写入存储设备的方法及存储设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105260128B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107436727A (zh) * | 2016-05-26 | 2017-12-05 | 中兴通讯股份有限公司 | 精简卷的存储空间管理方法和装置 |
CN105872107A (zh) * | 2016-06-13 | 2016-08-17 | 浪潮电子信息产业股份有限公司 | 一种存储方法、一种存储服务端及一种存储系统 |
CN106502579B (zh) * | 2016-09-22 | 2019-10-11 | 广州华多网络科技有限公司 | 一种数据存储失败时的重建方法及装置 |
CN109725841B (zh) * | 2017-10-30 | 2021-01-12 | 华为技术有限公司 | 数据写入方法、装置、存储系统、存储介质与控制器 |
US10922908B2 (en) * | 2018-02-14 | 2021-02-16 | The Boeing Company | System and method for vehicle sensor data storage and analysis |
CN112770356B (zh) * | 2021-01-06 | 2023-07-07 | 维沃移动通信有限公司 | 数据传输方法和电子设备 |
CN113342272B (zh) * | 2021-06-07 | 2023-02-10 | 深圳数联天下智能科技有限公司 | 一种坐姿数据的存储方法、展示方法、智能坐垫和系统 |
CN114063907A (zh) * | 2021-10-20 | 2022-02-18 | 郑州云海信息技术有限公司 | 一种存储空间分配方法、系统、存储介质及设备 |
CN115658328B (zh) * | 2022-12-07 | 2023-10-03 | 摩尔线程智能科技(北京)有限责任公司 | 用于管理存储空间的装置及方法、计算设备、芯片 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6032227A (en) * | 1996-09-30 | 2000-02-29 | International Business Machines Corporation | System and method for cache management in mobile user file systems |
CN1704910A (zh) * | 2004-06-03 | 2005-12-07 | 华为技术有限公司 | 一种磁盘阵列结构中的写处理方法 |
CN103455449A (zh) * | 2013-08-29 | 2013-12-18 | 华为技术有限公司 | 非易失性存储介质访问方法、数据更新方法及设备 |
CN103645859A (zh) * | 2013-11-19 | 2014-03-19 | 华中科技大学 | 一种虚拟ssd与ssd异构镜像的磁盘阵列缓存方法 |
-
2015
- 2015-09-11 CN CN201510580227.2A patent/CN105260128B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6032227A (en) * | 1996-09-30 | 2000-02-29 | International Business Machines Corporation | System and method for cache management in mobile user file systems |
CN1704910A (zh) * | 2004-06-03 | 2005-12-07 | 华为技术有限公司 | 一种磁盘阵列结构中的写处理方法 |
CN103455449A (zh) * | 2013-08-29 | 2013-12-18 | 华为技术有限公司 | 非易失性存储介质访问方法、数据更新方法及设备 |
CN103645859A (zh) * | 2013-11-19 | 2014-03-19 | 华中科技大学 | 一种虚拟ssd与ssd异构镜像的磁盘阵列缓存方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105260128A (zh) | 2016-01-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105260128B (zh) | 一种将数据写入存储设备的方法及存储设备 | |
CN102449607B (zh) | 具有多个闪存封装的存储系统 | |
CN104407933B (zh) | 一种数据的备份方法及装置 | |
CN103412822B (zh) | 操作非易失性内存和数据操作的方法和相关装置 | |
CN106406756B (zh) | 一种文件系统的空间分配方法及装置 | |
US20190340132A1 (en) | Flushing pages from solid-state storage device | |
CN105677580A (zh) | 访问缓存的方法和装置 | |
CN105335309B (zh) | 一种数据传输方法及计算机 | |
CN105373487B (zh) | 一种存储操作系统的碎片整理方法及系统 | |
CN108710583A (zh) | Ssd写缓存区的管理方法、装置、计算机设备及介质 | |
CN104991737B (zh) | 一种基于存储卡阵列架构的硬盘实现方法 | |
CN108205473A (zh) | 内存处理方法及装置、计算机装置及计算机可读存储介质 | |
CN108064377A (zh) | 一种多系统共享内存的管理方法及装置 | |
CN110196818A (zh) | 缓存数据的方法、缓存设备和存储系统 | |
CN108874683A (zh) | 固态存储设备的垃圾回收的方法以及计算机设备 | |
CN106469126A (zh) | 处理io请求的方法及其存储控制器 | |
CN108228470A (zh) | 一种处理向nvm写入数据的写命令的方法和设备 | |
CN108228092A (zh) | 存储系统和非易失性存储器的控制方法 | |
CN108762668A (zh) | 一种处理写入冲突的方法及装置 | |
CN105302489B (zh) | 一种异构多核远程嵌入式存储器系统与方法 | |
US9063667B2 (en) | Dynamic memory relocation | |
CN105701029B (zh) | 一种异构存储优化方法及装置 | |
CN109783000B (zh) | 一种数据处理方法及设备 | |
CN103902472B (zh) | 基于内存芯片互连的内存访问处理方法、内存芯片及系统 | |
CN104503924B (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 |