将数据写入存储设备的方法、装置及存储设备与流程

文档序号:18028025发布日期:2019-06-28 22:20阅读:330来源:国知局
将数据写入存储设备的方法、装置及存储设备与流程

本申请涉及固态存储设备(solidstoragedevice,ssd),更具体地,本申请涉及将数据写入固态存储设备的方法、装置以及实现了该方法的存储设备。



背景技术:

同机械式硬盘相类似,固态存储设备也是用于计算机系统的大容量、非易失性存储设备。固态存储设备一般以闪存(flash)作为存储介质。高性能的固态存储设备被用于高性能计算机。

在使用闪存的存储设备中,一般将数据的存储空间组织为块和或页,在每一存储块中可包括多个页。可对数据以页为单位进行写入操作。但当进行数据更新时,即使更新的是单一页的数据,一般也需要先擦除整个块,再将块中原有的数据以及更新的数据写入块中的每一页。为提高更新操作的性能,可选择存储设备中空闲的块来承载新写入的数据,以推后擦除操作的发生。当空闲块被耗尽或者其他一些条件下,实施垃圾回收操作来得到空闲块。

闪存块还具有有限的擦除次数。为延长使用闪存的存储设备的寿命,采用擦除均衡技术来将闪存块的磨损分散在整个闪存设备的多个或全部闪存块中。

垃圾回收和擦除均衡会增加对闪存块的擦除次数,这被称为写放大。写放大会降低闪存的使用寿命和性能。因而仔细设计存储设备的数据写入过程是非常有必要的。

公开号为cn102693184a的中国专利申请中公开了识别待写入的数据是否为动态数据;将动态数据写入到动态流块中。公开号为cn103019958a的中国专利申请中考虑了待写入数据的更多特性,如冷数据、热数据、随机访问、顺序访问、以及数据访问的尺寸等。

现有技术中已经意识到,对于空间分布上具有随机性且频繁写入的数据(热数据),为其分配专用的存储块或存储区,将有助于降低写放大。因为随时间的流逝,存储热数据的存储区中,由于数据再次写入(更新)的发生,无效数据增多,无效数据的占比相对较大;对这部分存储区实施垃圾回收所引入的写放大相对较小。



技术实现要素:

现有技术虽然将待更新数据分为冷数据和热数据,却只是关注于热数据的访问特点,而将不属于热数据的数据一概按冷数据处理。然而,在实际中存在大量无法明确区分数据冷热的情况,即使是数据的所有者也无法明确数据是否将被频繁更新。

申请人意识到,将只读数据或被更新的可能性较低的数据与其他数据进行区分,并在不同的物理存储位置存放,将有助于降低基于闪存的存储设备的写放大,并提高性能。由于只读数据或者被更新可能性较低的数据不大可能被更新,这使得相应的物理存储块中包含较大比例的有效块,换句话说,相应的物理存储块中包含较少的无效块。这使得这些存储块可以长期处于有效状态。进而,无需对这些块实施垃圾回收操作,从而降低了写放大,延长了存储设备的寿命。另一方面,由于这些块被更新的几率低,可以在擦除均衡操作中被直接作为长寿命块,而省去了数据块寿命检查的操作,进而提高了存储设备的性能。

因而本申请至少解决了固态存储设备中写放大问题,延长了存储设备的使用寿命。

根据本申请的一个实施例,提供了一种将数据写入固态存储设备的方法,包括:接收数据写入请求;基于该数据写入请求,确定该数据写入请求为第一类型、第二类型或第三类型;当该数据写入请求为第一类型时,将该数据写入请求对应的数据写入固态存储设备的第一存储区;当该数据写入请求为第二类型时,将该数据写入请求对应的数据写入固态存储设备的第二存储区;当该数据写入请求为第三类型时,将该数据写入请求对应的数据写入固态存储设备的第三存储区;其中,第一类型指示该数据写入请求所写入的数据会被频繁更新;第二类型指示该数据写入请求所写入的数据将极少被更新;第三类型指示该数据写入请求所写入的数据被更新的特性不同于上述第一类型或第二类型的指示。

根据本申请的另一个实施例,提供了一种将数据写入固态存储设备的系统,包括:用于接收数据写入请求的模块;用于基于该数据写入请求,确定该数据写入请求为第一类型、第二类型或第三类型的模块;用于当该数据写入请求为第一类型时,将该数据写入请求对应的数据写入固态存储设备的第一存储区的模块;用于当该数据写入请求为第二类型时,将该数据写入请求对应的数据写入固态存储设备的第二存储区的模块;用于当该数据写入请求为第三类型时,将该数据写入请求对应的数据写入固态存储设备的第三存储区的模块;其中,第一类型指示该数据写入请求所写入的数据会被频繁更新;第二类型指示该数据写入请求所写入的数据将极少被更新;第三类型指示该数据写入请求所写入的数据被更新的特性不同于上述第一类型或第二类型的指示。

根据本申请的依然另一个实施例,提供了一种存储设备,包括:网络适配器、控制器以及耦合到所述控制器的多个驱动器;所述网络适配器将所述存储设备耦合到网络,并接收数据写入请求;所述控制器基于该数据写入请求确定该数据写入请求为第一类型、第二类型或第三类型,当该数据写入请求为第一类型时,将该数据写入请求对应的数据写入多个驱动器的第一存储区;当该数据写入请求为第二类型时,将该数据写入请求对应的数据写入多个驱动器的第二存储区;当该数据写入请求为第三类型时,将该数据写入请求对应的数据写入多个驱动器的第三存储区;其中,第一类型指示该数据写入请求所写入的数据会被频繁更新;第二类型指示该数据写入请求所写入的数据将极少被更新;第三类型指示该数据写入请求所写入的数据被更新的特性不同于上述第一类型或第二类型的指示。

根据本申请的依然另一个实施例,提供了一种存储有计算机程序的存储介质,所述计算机程序当被计算机执行时,使得计算机通过执行下列步骤来将数据写入固态存储设备:接收数据写入请求;基于该数据写入请求,确定该数据写入请求为第一类型、第二类型或第三类型;当该数据写入请求为第一类型时,将该数据写入请求对应的数据写入固态存储设备的第一存储区;当该数据写入请求为第二类型时,将该数据写入请求对应的数据写入固态存储设备的第二存储区;当该数据写入请求为第三类型时,将该数据写入请求对应的数据写入固态存储设备的第三存储区;其中,第一类型指示该数据写入请求所写入的数据会被频繁更新;第二类型指示该数据写入请求所写入的数据将极少被更新;第三类型指示该数据写入请求所写入的数据被更新的特性不同于上述第一类型或第二类型的指示。

根据本申请的一种实施方式,提供了第一将数据写入存储设备的方法,包括:接收数据写入请求;基于该数据写入请求,确定该数据写入请求为第一类型或第二类型;当该数据写入请求为第一类型时,将该数据写入请求对应的数据写入存储设备的第一存储区;当该数据写入请求为第二类型时,将该数据写入请求对应的数据写入存储设备的第二存储区。

根据本申请的第一将数据写入存储设备的方法,提供了根据本申请的第二将数据写入存储设备的方法,其中基于该数据写入请求所携带的指示信息,确定该数据写入请求为第一类型或第二类型或第三类型。

根据本申请的第一或第二将数据写入存储设备的方法,提供了根据本申请的第三将数据写入存储设备的方法,其中,第一存储区与第二存储区不关联于特定的存储块。

根据本申请的第一或第三将数据写入存储设备的方法,提供了根据本申请的第四将数据写入存储设备的方法,其中基于该数据写入请求所指示的逻辑地址,确定该数据写入请求为第一类型或第二类型。

根据本申请的第一、第三或第四将数据写入存储设备的方法,提供了根据本申请的第五将数据写入存储设备的方法,其中基于该数据写入请求所指示的数据,确定该数据写入请求为第一类型或第二类型。

根据本申请的第一、第三至第五将数据写入存储设备的方法之一,提供了根据本申请的第六将数据写入存储设备的方法,其中基于该数据写入请求的上下文信息,确定该数据写入请求为第一类型或第二类型。

根据本申请的第一至第六将数据写入存储设备的方法之一,提供了根据本申请的第七将数据写入存储设备的方法,7.根据权利要求1-6之一所述的方法,其中第一类型指示该数据写入请求为地址随机分布的随机写请求且所写入的数据会被频繁更新;第二类型指示该数据写入请求为地址随机分布的随机写请求且所写入的数据将极少被更新;根据本申请的第一至第七将数据写入存储设备的方法之一,提供了根据本申请的第八将数据写入存储设备的方法,其中第一存储区中,物理地址与逻辑地址按页映射;第二存储区中,物理地址与逻辑地址按页映射。

根据本申请的第一至第八将数据写入存储设备的方法之一,提供了根据本申请的第九将数据写入存储设备的方法,其中基于该数据写入请求,确定该数据写入请求为第三类型;当该数据写入请求为第三类型时,将该数据写入请求对应的数据写入存储设备的第三存储区。

根据本申请的第九将数据写入存储设备的方法,提供了根据本申请的第十将数据写入存储设备的方法,其中,基于该数据写入请求,将第三类型的数据写入请求进一步确定为第四类型或第五类型,第四类型指示该数据写入请求所写入的数据的更新频率低于第一类型的数据写入请求所写入的数据的更新频率,但高于第五类型的数据写入请求所写入的数据的更新频率;该第五类型指示该数据写入请求所写入的数据的更新频率低于第四类型的数据写入请求所写入的数据的更新频率,但高于第二类型的数据写入请求所写入的数据的更新频率。

根据本申请的第十将数据写入存储设备的方法,提供了根据本申请的第十一将数据写入存储设备的方法,其中当该数据写入请求为第四类型时,从存储设备的第四存储区分配第四存储块,将该数据写入请求对应的数据写入该第四存储块;当该数据写入请求为第五类型时,从存储设备的第五存储区分配第五存储块,将该数据写入请求对应的数据写入该第五存储块。

根据本申请的第一至第十一将数据写入存储设备的方法之一,提供了根据本申请的第十二将数据写入存储设备的方法,还包括:调整所述第一存储区或第二存储区的大小。

根据本申请的第十二将数据写入存储设备的方法,提供了根据本申请的第十三将数据写入存储设备的方法,其中根据与第一类型的数据写入请求相对应的数量或频率而调整第一存储区的大小;和/或根据与第二类型的数据写入请求相对应的数量或频率而调整第二存储区的大小。

根据本申请的第十或第十一将数据写入存储设备的方法,提供了根据本申请的第十四将数据写入存储设备的方法,还包括:调整所述第三存储区的大小;其中根据与第三类型的数据写入请求相对应的数量或频率而调整第三存储区的大小。

根据本申请的第一至第十四将数据写入存储设备的方法之一,提供了根据本申请的第十五将数据写入存储设备的方法,还包括:当第一存储区的空闲存储块被耗尽后,将第一存储区的存储块与第二存储区或第三存储区的存储块交换。

根据本申请的第一至第十五将数据写入存储设备的方法之一,提供了根据本申请的第十六将数据写入存储设备的方法,其中:当该数据写入请求为第一类型时,从存储设备的第一存储区分配第一存储块,将该数据写入请求对应的数据写入该第一存储块;当该数据写入请求为第二类型时,从存储设备的第二存储区分配第二存储块,将该数据写入请求对应的数据写入该第二存储块。

根据本申请的第九至第十一或第十四将数据写入存储设备的方法之一,提供了根据本申请的第十七将数据写入存储设备的方法,其中当该数据写入请求为第三类型时,从存储设备的第三存储区分配第三存储块,将该数据写入请求对应的数据写入该第三存储块。

根据本申请的第九至第十一或第十四将数据写入存储设备的方法之一,提供了根据本申请的第十八将数据写入存储设备的方法,其中第三存储区不关联于特定的存储块。

根据本申请的第九至第十一、第十四或第十八将数据写入存储设备的方法之一,提供了根据本申请的第二十将数据写入存储设备的方法,其中第一类型指示该数据写入请求所写入的数据会被频繁更新;第二类型指示该数据写入请求所写入的数据将极少被更新。

根据本申请的第九至第十一、第十四或第十八将数据写入存储设备的方法之一,提供了根据本申请的第二十一将数据写入存储设备的方法,其中第三类型指示该数据写入请求所写入的数据被更新的特性不同于所述第一类型或第二类型的指示。

根据本申请的第九至第十一、第十四或第十八至第二十一将数据写入存储设备的方法之一,提供了根据本申请的第二十二将数据写入存储设备的方法,其中第三存储区中,物理地址与逻辑地址按块映射,以及其中每个块包括多个页。

根据本申请的第二方面,提供了根据本申请第二方面的将数据写入存储设备的系统,包括:用于接收数据写入请求的模块;用于基于该数据写入请求,确定该数据写入请求为第一类型或第二类型的模块;用于当该数据写入请求为第一类型时,将该数据写入请求对应的数据写入存储设备的第一存储区的模块;以及用于当该数据写入请求为第二类型时,将该数据写入请求对应的数据写入存储设备的第二存储区的模块。

根据本申请的第三方面,提供了根据本申请第三方面的存储设备,包括:网络适配器、控制器以及耦合到所述控制器的多个驱动器;所述网络适配器将所述存储设备耦合到网络,并接收数据写入请求;所述控制器基于该数据写入请求确定该数据写入请求为第一类型或第二类型,当该数据写入请求为第一类型时,将该数据写入请求对应的数据写入多个驱动器的第一存储区;当该数据写入请求为第二类型时,将该数据写入请求对应的数据写入多个驱动器的第二存储区。

根据本申请的第四方面,提供了根据本申请第四方面的存储有程序的存储介质,所述程序当被处理器执行时,使得处理器通过执行下列步骤来将数据写入存储设备:接收数据写入请求;基于该数据写入请求,确定该数据写入请求为第一类型或第二类型;当该数据写入请求为第一类型时,将该数据写入请求对应的数据写入存储设备的第一存储区;当该数据写入请求为第二类型时,将该数据写入请求对应的数据写入存储设备的第二存储区。

附图说明

当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本申请以及优选的使用模式和其进一步的目的和优点,其中附图包括:

图1是根据本申请实施例的存储设备的结构框图;

图2是根据本申请实施例的体系结构图;

图3示出了根据本申请实施例的存储设备的物理存储空间的分布;

图4是根据本申请实施例的将数据写入存储设备的流程图;

图5是根据本申请实施例的数据写入请求的地址与访问数量的对应关系的曲线图;

图6是根据本申请实施例的计算机系统的框图;以及

图7是根据本申请实施例的存储设备的框图。

具体实施方式

图1是根据本申请实施例的存储设备的结构框图。如图1所示的实施例包括主机101以及同主机101相耦合的存储设备102。主机101同存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如sata、ide、usb、pcie、scsi、以太网、光纤通道、无线通信网络等连接主机101与存储设备102。主机101可以是能够通过上述方式同存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制电路104、一个或多个闪存芯片105以及缓冲存储器106。接口103可适配于通过例如sata、ide、usb、pcie、scsi、以太网、光纤通道等方式与主机101交换数据。控制电路104用于控制在接口103、闪存芯片105以及缓冲存储器106之间的数据传输,还用于闪存管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。可通过软件、硬件、固件或其组合的多种方式实现控制电路104。控制电路104可以是fpga(field-programmablegatearray,现场可编程门阵列)、asic(applicationspecificintegratedcircuit,应用专用集成电路)或者其组合的形式。控制电路104也可以包括处理器或者控制器。

根据本申请的一个实施例,主机101向存储设备102发出读出请求或者写入请求。控制电路104经由接口103接收到该读出请求或写入请求。

根据本申请的另一个实施例,存储设备102并非直接耦合到主机101,而是通过中间设备(未示出)耦合到主机101。中间设备可耦合多个存储设备102,并向主机101呈现出单一的存储空间或彼此独立的多个存储空间。

图2示出了根据本申请实施例的存储系统的体系结构图。在图2的实施例中,应用202通过文件系统204提供的接口发出存储请求,存储请求可以是诸如读请求、写请求的存储设备访问请求。存储请求还可以包括访问下层装置(诸如闪存转换层206(ftl,flashtranslationlayer)或存储介质208)提供的特性。例如,应用202可以向存储系统的下层装置发出诸如垃圾回收请求,或者在读、写请求中附加相关信息,附加的相关信息可以指示该写请求是随机写请求,和/或该写请求所对应的地址或数据将被频繁更新。附加的相关信息还可以指示该写请求是随机写请求和/或该写请求所对应的地址或数据将很少被更新或不会被更新。该附加的相关信息也可以指示该写请求是顺序写请求或将有多组数据的连续写请求。该附加的相关信息还可以指示应用202不能确定该请求的特性,例如,不能确定该写请求对应的地址或数据是否会被频繁修改。

应用202可以是诸如字处理程序的客户引用,也可以操作系统进程或服务器进程。

文件系统204可以在逻辑地址空间上管理或维护存储设备,将存储系统抽象为提供文件、目录服务的设备,或提供“键-值”服务的设备。

ftl206主要负责在逻辑地址空间与存储介质208的物理地址空间之间的来回转换。通过逻辑地址空间与物理地址空间之间的映射来实现转换。映射的粒度可以基于数据块,也可以基于数据页。每个数据块可包括多个数据页。基于数据块的映射需要较少的存储空间存储映射表,而基于数据页的映射需要较大的存储空间存储映射表。也可以混合使用基于块的映射与基于页的映射。

存储介质208是由诸如闪存组成的物理存储设备。

文件系统204或ftl206并不是必须的,如果需要的话,应用202也可以直接访问并维护存储介质208。文件系统204、ftl206可以位于运行应用202的主机或服务器中,也可以集成于存储设备中。文件系统204、ftl206可以由软件、硬件、固件或其组合实现。

图3示出了根据本申请实施例的存储设备的物理存储空间的分布。存储设备302的物理存储空间包括普通数据区304、热数据区306以及冷数据区306。可用现有技术提供的通常方式使用普通数据区,用来存储数据。在根据本申请的实施例中,热数据区306用来存储频繁更新的数据,冷数据区308用来存储极少更新或不会被更新的数据,而普通数据区304用来存储其他数据,例如无法确定其更新频率的数据。

在进一步的优选实施例中,热数据区306用来存储随机写入且频繁更新的数据,冷数据区308用来存储随机写入且极少更新的数据,而普通数据区用来存储顺序写入的数据。还可以在存储设备302中提供随机数据区310,用来存储随机写入的、但无法确定其更新频率的数据。

在进一步的实施例中,可以提供更多的数据区,分别用来存储具有不同更新频率的数据。例如,可以提供第四数据区,用于存储比热数据区306中的数据的更新频率低,但比冷数据区306中的数据的更新频率高的数据;以及提供第五数据区,用来存储比第四数据区中的数据的更新频率低,但比冷数据区306中的数据的更新频率高的数据。

普通存储区304、热数据区306、冷数据区308以及随机数据区310无需位于存储设备302的物理存储空间中的固定位置。即,普通存储区304、热数据区306、冷数据区308以及随机数据区310无需关联于特定的物理存储块。而是可以由运行时的状态信息指示各个存储区的位置和/或大小。

一般而言,普通数据区304具有相对多的存储块因而具有相对大的存储容量,而热数据区306、冷数据区308具有相对少的存储块。随机数据区310也具有相对少的存储块。这是因为在一般的应用202(见图2)中,频繁更新的数据或极少更新的数据在所有需要更新的数据中所占的比例较低。以及因而,优选地,根据应用202的特点而调整普通数据区304、热数据区306以及冷数据区308和/或随机数据区310的大小。对普通数据区304、热数据区306以及冷数据区308和/或随机数据区310的大小的调整,可根据各数据区的实际使用情况而实施;也可以在应用202、文件系统204或ftl206的指示下实施。例如,应用202知晓其将随机而频繁地更新一组数据,应用202可指示存储设备302将热数据区306调整为较大的容量,以减少数据更新发生时,由于热数据区耗尽所带来的垃圾回收操作。类似地,应用202也可知晓某些数据的更新频率会很低,例如web服务器所维护的静态网页数据,应用202可指示存储设备302将冷数据区308调整为较大的容量。

现有技术中已经揭示了将频繁更新的数据集中存储在热数据区306所带来的益处。其使得热数据区306由于被频繁更新而聚集了较多无效数据,从而降低了对有效数据的不必要的迁移。

与热数据区306的情况相反,冷数据区308能够聚集较多的有效数据,从而由于无效数据较少而不必进行迁移。并且,随着时间流逝,在存储设备304中,冷数据区308的物理存储块的磨损程度较其他存储块相对低,在需要实施擦除均衡操作时,可将磨损程度高的存储块与冷数据区308的存储块进行交换,从而简化了寻找用于替换的存储块的过程。优选地,将热数据区306的存储块与冷数据区308的存储块交换,使得旧的热数据区变成冷数据区,而旧的冷数据区变成热数据区。在一些实施例中,将热数据区306的存储块与普通数据区304的存储块交换。在依然一些实施例中,将冷数据区308的存储块与普通数据区304的存储块交换。

在进一步的实施例中,基于块映射,将逻辑块地址映射为普通数据区304中的物理块地址;而基于页映射,将逻辑页地址映射为热数据区306、冷数据区308和/或随机数据区310中的物理页地址。基于页的地址映射能带来较高的存储设备的存储空间利用率并降低写放大,但需要更多的内存存储空间来存储映射表。基于块的地址映射所需要的存储映射表的存储空间相对较小。在另一些实施例中,对于普通数据区304、热数据区306以及冷数据区308都实施基于块的映射。在依然另一些实施例中,对于普通数据区304、热数据区306以及冷数据区308都实施基于页的映射。

图4是根据本申请实施例的将数据写入存储设备的流程图。接收数据写入请求(402),确定写入请求的类型(404)。数据写入请求可来自用户应用程序、操作系统或者服务器;数据写入请求也可以来自文件系统或者闪存转换层(ftl)。写入请求的类型包括但不限于:该写入请求是随机写请求,该写请求所对应的地址或数据将被频繁更新,该写请求是随机写请求和/或该写请求所对应的地址或数据将很少被更新或不会被更新,该写请求是顺序写请求或将有多组数据的连续写请求,和/或尚不确定该请求的特性。

在一个实施例中,基于应用程序提供的信息确定写入请求的类型。例如应用程序可在写请求中附加相关信息,附加的相关信息可以指示该写入请求是随机写请求,和/或该写请求所对应的地址或数据将被频繁更新。附加的相关信息还可以指示该写请求是随机写请求和/或该写请求所对应的地址或数据将很少被更新或不会被更新。该附加的相关信息也可以指示该写请求是顺序写请求或将有多组数据的连续写请求。该附加的相关信息还可以指示应用程序不能确定该请求的特性,例如,不能确定该写请求对应的地址或数据是否会被频繁修改。

在依然一个实施例中,基于写入请求的上下文确定写入请求的类型。例如,基于发出写入请求的用户、用户组、应用程序、应用程序类型和/或当前的会话来确定写入请求类型。

在依然一个实施例中,基于数据写入请求所指示的逻辑地址,确定该数据写入请求的类型。例如,建立地址与该地址的写入频率的映射表。基于写入频率确定针对与该频率相对应的地址的写入请求的类型。又例如,记录最近若干次写入请求的地址,基于最近最少访问(lru)算法或最近最多访问(mru)算法而确定写入请求的类型。

在依然一个实施例中,基于数据写入请求所指示的数据,确定该数据写入请求的类型。例如可基于频率或者lru、mru等算法确定写入请求的类型。所属领域技术人员将意识到,存在其他识别写入请求的类型的方式。

当判断数据写入请求为第一类型时,将该数据写入请求对应的数据写入热数据区(406)。在该过程中,可伴随着从固态存储设备的热数据区分配存储块的操作。在一个实施例中,第一类型指示该数据写入请求所写入的数据会被频繁更新;在依然一个实施例中,第一类型指示该数据写入请求为逻辑地址随机分布的随机写请求且所写入的数据会被频繁更新。

当该数据写入请求为第二类型时,将该数据写入请求对应的数据写入该冷数据区(408)。在该过程中,可伴随着从固态存储设备的冷数据区分配存储块的操作。在一个实施例中,第二类型指示该数据写入请求所写入的数据将极少被更新。在依然另一个实施例中,第二类型指示该数据写入请求为逻辑地址随机分布的随机写请求且所写入的数据将极少被更新。

当该数据写入请求为第三类型时,将该数据写入请求对应的数据写入该第三存储区(410)。在该过程中,可伴随着从固态存储设备的第三存储区分配存储块的操作。在一个实施例中,第三类型指示该数据写入请求所写入的数据被更新的特性不同于上述第一类型或第二类型的指示。在依然一个实施例中,第三类型指示尚无法确定该数据请求的特性。

图5是根据本申请实施例的数据写入请求的地址与访问数量的对应关系的曲线图。图5中,横坐标是写入请求的地址,纵坐标是一段时间内写入请求发生的数量。

图5的曲线图可通过测试、模拟、仿真或调优的过程获得。也可以在系统运行时对访问请求进行统计得到。通过图5可知,在地址范围a1-a2之间的写入请求发生频率较高,而地址范围小于a3或大于a4的写入请求发生频率较低。而地址范围在a3-a1或a2-a4之间的写入请求,其发生频率的特征并不明显。

在一个实施例中,根据地址范围a1-a2的写请求数量或频率调整热数据区306的大小。根据地址小于a3和或地址大于a4的写请求的数量或频率调整冷数据区308的大小。根据地址范围a3-a1或地址范围a2-a4的写请求的数量或频率调整普通数据区304的大小。

在另一个实施例中,根据地址范围a1-a2的随机写请求数量或频率调整热数据区306的大小。根据地址小于a3和或地址大于a4的写请求的数量或频率调整冷数据区308的大小。根据地址范围a3-a1或地址范围a2-a4的写请求的数量或频率调整普通数据区304或随机数据区310的大小。

在依然另一个实施例中,统计写入请求发生的时间,以获取写入请求在时间上的分布,或者与地址相关联的写入请求在时间上的分布。进而确定写请求是随机地址的写请求或连续地址的写请求,或者确定写请求的地址分布的随机程度。根据随机地址的写请求的数量或频率而调整热数据区306、冷数据区308、随机数据区310和/或普通数据区304的大小。

图6是根据本申请实施例的计算机系统的框图。计算机600可实施根据本申请实施例的方法,以将数据写入存储设备。

计算机600包括主板610。主板610上布置有中央处理单元(cpu,centralprocessingunit)612以及扩展卡614。主板610上还可布置有芯片组、存储器等部件。扩展卡614用于将多个存储盘耦合到计算机600。扩展卡614可通过诸如pcie

(peripheralcomponentinterconnectexpress,快速外围组件互连)、pci(peripheralcomponentinterconnect,外围组件互连)等多种接口耦合到主板610。扩展卡614可通过多种接口耦合存储盘,多种接口包括但不限于sata(serialadvancedtechnologyattachment,串行高级技术附件)、usb(universalserialbus,通用串行总线)、pcie、scsi(smallcomputersysteminterface,小型计算机系统接口)、ide(integrateddriveelectronics,集成驱动器电子)等。多个存储盘包括盘620、622、624和626。扩展卡614可耦合不同数量的存储盘。扩展卡614中可包括闪存转换层(flashtranslationlayer,ftl)部件,用以将基于逻辑地址的存储盘访问请求转换为基于物理地址的存储盘访问请求。存储盘可以是固态盘,固态盘以闪存芯片作为存储介质,固态盘也适用于其他类型的存储芯片,例如,相变存储器、电阻存储器、铁电存储器等。

在一个实施例中,主板610中可以不包括扩展卡614,而通过设置在主板610上的诸如pcie、ide、scsi、和/或sata等接口,将盘620、622、624和626耦合到主板610。以及,在计算机600的操作系统或应用程序中提供闪存转换层软件,用以将基于逻辑地址的存储盘访问请求转换为基于物理地址的存储盘访问请求。还可以将闪存转换层部件设置在cpu、芯片组或其他集成电路中。

扩展卡614上可布置有控制电路,用以实施根据本申请实施例的方法来控制对盘620、622、624、626的数据写入。控制电路可以是fpga(field-programmablegatearray,现场可编程门阵列)、asic(applicationspecificintegratedcircuit,应用专用集成电路)或者其组合的形式。控制电路也可以包括一个或多个处理器或者控制器。闪存转换层部件可在fpga、asic中以硬件电路形式实现,也可采用运行在处理器或控制器中的软件形式实现。

在一个实施例中,可将例如盘620设置为冷数据区,将盘622设置为热数据区,而将盘624-626设置为随机数据区。将盘622设置为热数据区,会将磨损集中在盘622上,进而可通过替换盘622来有效地实施系统维护。在另一个实施例中,热数据区和/或冷数据区可位于盘620-626中的同一个盘上。在依然另一个实施例中,热数据区和/或冷数据区可位于盘620-626中的多个盘上。

图7是根据本申请实施例的存储设备的框图。存储设备700可实施根据本申请实施例的方法,以将数据写入存储设备。上面在图6中已经公开了根据本申请实施例的计算机系统的框图。而图7的实施例为通过网络提供存储服务的存储设备。存储设备700包括背板710。背板710上布置有控制器714。背板710上还可布置有芯片组、存储器等部件。控制器714用于将多个存储盘耦合到存储设备700。控制器714可通过多种接口耦合存储盘,多种接口包括但不限于sata、usb、pci、pcie、scsi、ide等。控制器714还可通过芯片组或者扩展卡间接耦合到存储盘。多个存储盘包括盘720、722、724和726。控制器714可耦合不同数量的存储盘。控制器714中可包括闪存转换层(flashtranslationlayer,ftl)部件,用以将基于逻辑地址的存储盘访问请求转换为基于物理地址的存储盘访问请求。存储盘可以是固态盘,固态盘以闪存芯片作为存储介质,固态盘也适用于其他类型的存储芯片,例如,相变存储器、电阻存储器、铁电存储器等。

在一个实施例中,在存储设备700的操作系统或其他程序中提供闪存转换层软件,用以将基于逻辑地址的存储盘访问请求转换为基于物理地址的存储盘访问请求。还可以将闪存转换层部件设置在cpu、芯片组或其他集成电路中。

控制器714,可用以实施根据本申请实施例的方法来控制对盘720、722、724、726的访问。控制器714可以是fpga、asic或者其组合的形式。控制器714也可以包括一个或多个处理器或者控制器。闪存转换层部件可在fpga、asic中以硬件电路形式实现,也可采用运行在处理器或控制器中的软件形式实现。

背板710上还布置有网络适配器730、732。提供两个网络适配器,以提高存储设备的可靠性。也可以提供一个或其他数量的网络适配器。通过网络适配器730、732,存储设备700耦合到网络734。网络734可以是以太网、pcie网或光纤通道网络。客户端740、742也耦合到网络734,并通过网络734访问存储设备700。在其他实施例中,客户端740、742可不经由网络734而直接耦合到网络适配器730和/或732。

已经为了示出和描述的目的而展现了对本申请的描述,并且不旨在以所公开的形式穷尽或限制本申请。对所属领域技术人员,许多调整和变化是显而易见的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1