具有多个固态盘的计算机的制作方法

文档序号:6400198阅读:226来源:国知局
专利名称:具有多个固态盘的计算机的制作方法
技术领域
本发明涉及固态存储设备(Solid Storage Device, SSD),更具体地,本发明涉及用于同时访问多个固态盘的计算机。
背景技术
同机械式硬盘相类似,固态存储设备也是用于计算机系统的大容量、非易失性存储设备。固态存储设备一般以闪存(Flash)作为存储介质。高性能的固态存储设备被用于高性能计算机。存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(Logic Unit)。每个逻辑单元具有逻辑单元号(LUN, Logic UnitNumber)0 NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron, com/ /media/Documents/Products/0ther%20Documents/0NFI3_0Gold.ashx 获得的 “Open NAND Flash Interface Specification (Revision3.0)” 中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义,其为现有技术的一部分。固态存储设备可具有扩展卡形状,可安装到主板上的PCIE或者类似的接口。固态存储设备还可具有3.5、2.5或1.8英寸驱动器形状,可安装到机架或盘阵设备中,其一般被称为固态盘(Solid State Disk)。公开号为CN102656567A的中国专利申请公开了固态存储器件内的数据管理。参看图1,固态存储器件的一组页被称为“步距(stride)”,每个步距包括来自每个通道的一组页,其中每个通道的一组页被称为“条”(strip)。对于标识了 LBA(Logic Block Address,逻辑块地址)的写入请求,实施在步距内的从LBA到PBA (Physical Block Address,物理块地址)的映射,并填充步距内的每个条(图1中的id分别为31、52、44、67的条)。对步距内多个条的填充可以是连续或并行的。这样,将RAID (Redundant Array of IndependentDisks,独立磁盘冗余阵列)模式引入到固态存储设备中,提高了固态存储设备的性能与可靠性。然而,存储设备中可能多个固态盘或多个存储卡,每个固态盘或存储卡可能具有不同的容量和性能,随着时间的流逝,各个固态盘或存储卡也会表现出不同的特性。在写入数据时,考虑各个固态盘或存储卡的特定性能将有助于提高存储设备的性能。以及,写入请求中所携带的数据量可能与“步距”的数据容量不同。需要提供相应的手段来匹配来自客户端的访问请求与存储设备的存储单元的容量。

发明内容
本发明解决了固态盘形成的RAID存储设备中写放大问题,延长了存储设备的使用寿命。
根据本发明的第一方面,提供了一种用于访问存储设备的多个驱动器的方法,所述方法包括:接收将第一数据写入用于所述存储设备的第一逻辑地址的请求;为所述第一逻辑地址生成第一物理地址;生成写入命令,其指示将所述第一数据写入所述第一物理地址;确定是否生成校验数据;若是,基于所述第一数据生成第一校验数据,并将所述第一校验数据写入第二物理地址。根据本发明的第一方面的方法,还包括:在所述多个驱动器中的一个或多个上存储元数据,所述元数据指示所述第一物理地址、所述第二物理地址具有关联关系。根据本发明的第一方面的方法,其中通过选择所述多个驱动器中的第一驱动器来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所述第一驱动器中的存储位置。根据本发明的第一方面的方法,其中为每个驱动器提供写指针,写指针指示写入数据的物理地址,基于所选择的第一驱动器的写指针生成所述第一物理地址,并使所述第一驱动器的写指针递增。根据本发明的第一方面的方法,其中响应于接收将第一数据写入用于所述存储设备的第一逻辑地址的请求,分配存储单元组,所述存储组包括多个存储单元,所述多个存储单元中的每个位于所述多个驱动器之一。根据本发明的第一方面的方法,其中所述存储单元为一个或多个页。根据本发明的第一方面的方法,其中为存储单元组提供写指针,写指针指示所述存储单元组中的一个存储单元,基于所分配的存储单元组的写指针生成所述第一物理地址,并使所分配的存储单元组的写指针指示所述存储单元组中的另一个存储单元。根据本发明的第一方面的方法,其中响应于分配存储单元组,基于所述存储单元组的各个存储单元所在的多个驱动器的状态,从所述存储单元组中选择一个存储单元来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所选择的存储单元。根据本发明的第一方面的方法,其中为所述多个驱动器中的每个驱动器提供写队列,用于在将写入命令发送给驱动器之前存储写入命令。根据本发明的第一方面的方法,其中如果已经收到用于生成校验数据的N个数据,则确定生成校验数据,N是自然数。根据本发明的第一方面的方法,其中如果尚未收到用于生成校验数据的N个数据,填充预定数据来形成用于生成校验数据的N个数据,并确定生成校验数据。根据本发明的第一方面的方法,其中如果尚未收到用于生成校验数据的N个数据,通过执行垃圾回收操作来形成用于生成校验数据的N个数据,并确定生成校验数据。根据本发明的第一方面的方法,其中在所述请求中指示生成校验数据。根据本发明的第一方面的方法,其中所述请求中指示所述N的值。根据本发明的第一方面的方法,其中如果尚未收到用于生成校验数据的N个数据,且所述请求中指示生成校验数据,填充数据来形成用于生成校验数据的N个数据,并生成校验数据。根据本发明的第一方面的方法,其中如果尚未收到用于生成校验数据的N个数据,且强制计算校验数据的事件发生,填充数据来形成用于生成校验数据的N个数据,并生成校验数据。
根据本发明的第一方面的方法,其中如果尚未收到用于生成校验数据的N个数据,且所述请求中指示生成校验数据,执行垃圾回收操作来形成用于生成校验数据的N个数据,并生成校验数据。根据本发明的第一方面的方法,其中如果尚未收到用于生成校验数据的N个数据,且强制计算校验数据的事件发生,执行垃圾回收操作来形成用于生成校验数据的N个数据,并生成校验数据。根据本发明的第二方面,提供了一种用于访问存储设备的多个驱动器的装置,所述装置包括:用于接收将第一数据写入用于所述存储设备的第一逻辑地址的请求的模块;用于为所述第一逻辑地址生成第一物理地址的模块;用于生成写入命令的模块,所述写入命令指示将所述第一数据写入所述第一物理地址;用于确定是否生成校验数据的模块;用于在确定生成校验数据的情况下基于所述第一数据生成第一校验数据,并将所述第一校验数据写入第二物理地址的模块。根据本发明的第三方面,提供了一种存储设备,包括网络适配器、控制器以及耦合到所述控制器的多个驱动器;所述网络适配器将所述存储设备耦合到网络,并接收来自客户端的访问请求,所述访问请求指示将第一数据写入用于所述存储设备的第一逻辑地址;所述控制器为所述第一逻辑地址生成第一物理地址,并生成写入命令发送给所述多个驱动器之一,其指示将所述第一数据写入所述第一物理地址;所述控制器还确定是否生成校验数据,若是,基于所述第一数据生成第一校验数据,并生成第二写入命令发送给所述多个驱动器之一,其指示将所述第一校验数据写入第二物理地址。根据本发明的第三方面的存储设备,还包括:所述控制器将元数据存储于所述多个驱动器中的一个或多个,所述元数据指示所述第一物理地址、所述第二物理地址具有关联关系。根据本发明的第三方面的存储设备,其中所述控制器通过选择所述多个驱动器中的第一驱动器来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所述第一驱动器中的存储位置。根据本发明的第三方面的存储设备,其中在所述控制器中为每个驱动器维护写指针,写指针指示写入数据的物理地址;所述控制器还基于所选择的第一驱动器的写指针生成所述第一物理地址,并使所述第一驱动器的写指针递增。根据本发明的第三方面的存储设备,其中所述控制器响应于接收将第一数据写入用于所述存储设备的第一逻辑地址的请求,分配存储单元组,所述存储组包括多个存储单元,所述多个存储单元中的每个位于所述多个驱动器之一。根据本发明的第三方面的存储设备,其中所述控制器为存储单元组维护写指针,写指针指示所述存储单元组中的一个存储单元,所述控制器基于所分配的存储单元组的写指针生成所述第一物理地址,并使所分配的存储单元组的写指针指示所述存储单元组中的另一个存储单元。根据本发明的第三方面的存储设备,其中响应于分配存储单元组,所述控制器查询所述存储单元组的各个存储单元所在的多个驱动器的状态,并基于所述状态从所述存储单元组中选择一个存储单元来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所选择的存储单元。
根据本发明的第三方面的存储设备,其中所述控制器为所述多个驱动器中的每个驱动器提供写队列,所述写队列用于在将写入命令发送给驱动器之前存储写入命令。根据本发明的第三方面的存储设备,其中如果所述存储设备已经收到用于生成校验数据的N个数据,则所述控制器确定生成校验数据,N是自然数。根据本发明的第三方面的存储设备,其中如果所述存储设备尚未收到用于生成校验数据的N个数据,则所述控制器填充预定数据来形成用于生成校验数据的N个数据,并确定生成校验数据。根据本发明的第三方面的存储设备,其中如果所述存储设备尚未收到用于生成校验数据的N个数据,则所述控制器发起用于所述多个驱动器的一个或多个的垃圾回收操作来形成用于生成校验数据的N个数据,并确定生成校验数据。根据本发明的第三方面的存储设备,其中所述请求中指示所述N的值。根据本发明的第三方面的存储设备,其中在所述请求中指示生成校验数据。根据本发明的第三方面的存储设备,其中所述请求中指示所述N的值。根据本发明的第三方面的存储设备,其中如果尚未收到用于生成校验数据的N个数据,且所述请求中指示生成校验数据,填充数据来形成用于生成校验数据的N个数据,并生成校验数据。根据本发明的第三方面的存储设备,其中如果尚未收到用于生成校验数据的N个数据,且强制计算校验数据的事件发生,填充数据来形成用于生成校验数据的N个数据,并生成校验数据。根据本发明的第三方面的存储设备,其中如果尚未收到用于生成校验数据的N个数据,且所述请求中指示生成校验数据,执行垃圾回收操作来形成用于生成校验数据的N个数据,并生成校验数据。根据本发明的第三方面的存储设备,其中如果尚未收到用于生成校验数据的N个数据,且强制计算校验数据的事件发生,执行垃圾回收操作来形成用于生成校验数据的N个数据,并生成校验数据。根据本发明的第四方面,提供了一种计算机系统,包括主板、布置于主板上的扩展卡、CPU以及耦合到所述扩展卡的多个驱动器;所述CPU把将第一数据写入第一逻辑地址的请求发送给所述扩展卡;所述扩展卡为所述第一逻辑地址生成第一物理地址,并生成写入命令发送给所述多个驱动器之一,所述写入命令指示将所述第一数据写入所述第一物理地址;所述扩展卡还确定是否生成校验数据,若是,基于所述第一数据生成第一校验数据,并生成第二写入命令发送给所述多个驱动器之一,所述第二写入命令指示将所述第一校验数据写入第二物理地址。根据本发明的第四方面的计算机系统,还包括:所述扩展卡将元数据存储于所述多个驱动器中的一个或多个,所述元数据指示所述第一物理地址、所述第二物理地址具有关联关系。根据本发明的第四方面的计算机系统,其中所述扩展卡通过选择所述多个驱动器中的第一驱动器来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所述第一驱动器中的存储位置。根据本发明的第四方面的计算机系统,其中在所述扩展卡中为每个驱动器维护写指针,写指针指示写入数据的物理地址;所述扩展卡还基于所选择的第一驱动器的写指针生成所述第一物理地址,并使所述第一驱动器的写指针递增。根据本发明的第四方面的计算机系统,其中所述扩展卡响应于接收将第一数据写入用于所述存储设备的第一逻辑地址的请求,分配存储单元组,所述存储组包括多个存储单元,所述多个存储单元中的每个位于所述多个驱动器之一。根据本发明的第四方面的计算机系统,其中所述扩展卡为存储单元组维护写指针,写指针指示所述存储单元组中的一个存储单元,所述扩展卡基于所分配的存储单元组的写指针生成所述第一物理地址,并使所分配的存储单元组的写指针指示所述存储单元组中的另一个存储单元。根据本发明的第四方面的计算机系统,其中响应于分配存储单元组,所述扩展卡查询所述存储单元组的各个存储单元所在的多个驱动器的状态,并基于所述状态从所述存储单元组中选择一个存储单元来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所选择的存储单元。根据本发明的第四方面的计算机系统,其中所述扩展卡为所述多个驱动器中的每个驱动器提供写队列,所述写队列用于在将写入命令发送给驱动器之前存储写入命令。根据本发明的第四方面的计算机系统,其中如果所述扩展卡已经收到用于生成校验数据的N个数据,则确定生成校验数据,N是自然数。根据本发明的第四方面的计算机系统,其中如果所述扩展卡尚未收到用于生成校验数据的N个数据,则所述扩展卡填充预定数据来形成用于生成校验数据的N个数据,并确定生成校验数据。根据本发明的第四方面的计算机系统,其中如果所述扩展卡尚未收到用于生成校验数据的N个数据,则所述扩展卡发起用于所述多个驱动器的一个或多个的垃圾回收操作来形成用于生成校验数据的N个数据,并确定生成校验数据。根据本发明的第四方面的计算机系统,其中所述请求中指示所述N的值。根据本发明的第四方面的计算机系统,其中所述请求中指示所述N的值。根据本发明的第四方面的计算机系统,其中在所述请求中指示生成校验数据。根据本发明的第四方面的计算机系统,其中所述请求中指示所述N的值。根据本发明的第四方面的计算机系统,其中如果尚未收到用于生成校验数据的N个数据,且所述请求中指示生成校验数据,填充数据来形成用于生成校验数据的N个数据,并生成校验数据。根据本发明的第四方面的计算机系统,其中如果尚未收到用于生成校验数据的N个数据,且强制计算校验数据的事件发生,填充数据来形成用于生成校验数据的N个数据,并生成校验数据。根据本发明的第四方面的计算机系统,其中如果尚未收到用于生成校验数据的N个数据,且所述请求中指示生成校验数据,执行垃圾回收操作来形成用于生成校验数据的N个数据,并生成校验数据。根据本发明的第四方面的计算机系统,其中如果尚未收到用于生成校验数据的N个数据,且强制计算校验数据的事件发生,执行垃圾回收操作来形成用于生成校验数据的N个数据,并生成校验数据。


当连同附图阅读时,通过参考后面对示出性的实施例的详细描述,将最佳地理解本发明以及优选的使用模式和其进一步的目的和优点,其中附图包括:图1展示了现有技术中的固态硬盘的数据组织;图2是根据本发明的实施例的存储设备的数据组织;图3是根据本发明实施例的计算机系统的框图;图4是根据本发明实施例的访问多个驱动器的方法的流程图;图5是根据本发明进一步实施例的访问多个驱动器的方法的流程图;图6是根据本发明依然进一步实施例的访问多个驱动器的方法的流程图;以及图7是根据本发明实施例的存储设备的框图。
具体实施例方式图2是根据本发明的实施例的存储设备的数据组织。存储设备包括固态盘200、固
态盘220......固态盘260。每个固态盘可以是具有标准尺寸的3.5,2.5或1.8英寸驱动器。
固态盘200可包括闪存芯片201与闪存芯片202。固态盘220包括闪存芯片221,而固态盘260包括闪存芯片261。固态盘200也可包括不同数量的闪存芯片。以及固态盘200、固态盘220与固态盘260可分别包括不同数量和/或不同容量的闪存芯片。固态盘中的闪存芯片可组织为多个通道,以在所使用的接口引脚数量和多个闪存芯片的并行访问之间进行取舍。例如,在申请号为201210448894.1、201210449387.X的中国专利申请中提供了多种将闪存芯片组织为通道的方式。作为举例,闪存芯片201包括多个块,例如块O、块1、块2和块3。闪存芯片中也可以包括其他数量的块。在每个块中包括多个页。对于NAND闪存,以页为单位进行读、写操作,而以块为单位实施擦除操作,这是由NAND闪存的物理结构决定的。作为举例,闪存芯片201还包括平面O与平面I。平面O包括块O与块2,而平面I包括块I与块3。平面O与平面I各自具有页寄存器,使得位于平面O的块与位于平面I的块可以并行操作。闪存芯片可以具有不同数量的页。闪存芯片还可以包括一个或多个管芯。根据本发明的实施例,固态盘200的页211、固态盘220的页231与固态盘260的页261被分组在一起,组成存储单元组。在申请号为201310003789.1与201310003898.3的中国专利申请中提供了将来自主机的逻辑地址映射到存储单元组的方式。存储单元组中的各个页被一起操作,其中可以存储用户数据以及由用户数据产生的校验数据。当存储单元组中的一个或多个页损坏时,可基于存储单元组中的其他页来恢复损坏的数据。例如,存储单元组可包括N+P个页,其中N个页用于存储用户数据,而P个页用于存储校验数据。优选地,分配存储单元组,使得当移除固态盘200、220与260中的一个或多个时,可利用剩余的固态盘恢复所移除固态盘中存储的数据。在一个例子中,页211、页231与页261分别在固态盘200、固态盘220与固态盘260中具有相同的物理地址,这样可以容易地确定组成存储单元组的各个页,而无须附加的元数据。以这种方式,盘200的芯片201的块O的页1、盘220的芯片221的块O的页I与盘260的芯片261的块O的页I组成另一个存储单元组。虽然在图2的实施例中示出了存储单元组包括3个页,可以理解,存储单元组可以具有其他不同数量的页。在一个实施例中,存储单元组中包括来个多个固态盘(200、220与260)的每一个的页。在另一个实施例中,存储单元组中包括来自多个固态盘的一个或多个的页。存储单元组中也可以包括来自一个固态盘的多个页。继续参照图2,在一个实施例中,页215、页235与页265组成存储单元组。页215、页235与页265可具有相同或不同的物理地址,因而需要提供附加的元数据来指示页215、页235与页265组成了存储单元组。可以在页215、页235与页265的带外(Out-Of-Band)数据中存储元数据,还可以在页215、页235与页265的用户数据区中存储元数据(相应地降低用户数据的存储容量),还可以在其他页中存储元数据。由于闪存中的页可能损坏,利用元数据指示组成存储单元组的多个页,可以有效地将损坏的页排除,并利用具有相同或不同物理地址的页组成存储单元组,从而提高存储空间的利用率。图3是根据本发明实施例的计算机系统的框图。计算机300包括主板310。主板310上布置有中央处理单元(CPU, Central Processing Unit) 312以及扩展卡314。主板310上还可布置有芯片组、存储器等部件。扩展卡314用于将多个存储盘耦合到计算机300。扩展卡 314 可通过诸如 PCIE (Peripheral Component Interconnect Express,快速外围组件互连)、PCI (Peripheral Component Interconnect,外围组件互连)等多种接口稱合到主板310。扩展卡314可通过多种接口耦合存储盘,多种接口包括但不限于SATA (SerialAdvanced Technology Attachment,串行高级技术附件)、USB (Universal Serial Bus,通用串行总线)、PCIE、SCSI (Small Computer System Interface,小型计算机系统接口)、IDE(Integrated Drive Electronics,集成驱动器电子)等。多个存储盘包括盘320、322、324和326。扩展卡314可耦合不同数量的存储盘。扩展卡314中可包括闪存转换层(FlashTranslation Layer, FTL)部件,用以将基于逻辑地址的存储盘访问请求转换为基于物理地址的存储盘访问请求。存储盘可以是固态盘,固态盘以闪存芯片作为存储介质,固态盘也适用于其他类型的存储芯片,例如,相变存储器、电阻存储器、铁电存储器等。在一个实施例中,主板310中可以不包括扩展卡314,而通过设置在主板310上的诸如PCIE、IDE、SCS1、和/或SATA等接口,将盘320、322、324和326耦合到主板310。以及,在计算机300的操作系统或应用程序中提供闪存转换层软件,用以将基于逻辑地址的存储盘访问请求转换为基于物理地址的存储盘访问请求。还可以将闪存转换层部件设置在CPU、芯片组或其他集成电路中。扩展卡314上可布置有控制电路,用以实施将在图4-图6中描述的各操作来控制对盘 320、322、324、326 的访问。控制电路可以是 FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC (Application Specific Integrated Circuit,应用专用集成电路)或者其组合的形式。控制电路也可以包括一个或多个处理器或者控制器。闪存转换层部件可在FPGA、ASIC中以硬件电路形式实现,也可采用运行在处理器或控制器中的软件形式实现。图4是根据本发明实施例的访问多个驱动器的方法的流程图。在步骤400,接收写请求。写请求可以来自计算机300的CPU 312。写请求可由运行在计算机300上的操作系统或者应用软件发出,并指示将数据写入到诸如固态盘的存储设备中。写请求中可以携带或者指示逻辑地址,逻辑地址指示存储设备所展现的逻辑地址空间。
在步骤410,获取物理地址。基于写请求获得逻辑地址,例如可以从写请求中提取逻辑地址,也可以基于写请求中的指示(例如,对存储逻辑地址的存储空间的指示,或相对于前一逻辑地址的偏移)来间接提取逻辑地址。接着,通过映射表将逻辑地址转换为物理地址。在进一步的实施例中,多个固态盘中的多个页被分组在一起,组成存储单元组。通过映射表或顺序映射方式将逻辑地址转换为用于存储单元组的地址。对于连续接收到的写请求,将其逻辑地址转换为相同的存储单元组地址,直到填充了存储单元组中的N个数据页。进而基于存储单元组的地址获得物理地址。所得到的物理地址指示了该存储单元组中的存储单元。而写请求或者逻辑地址可以无需维护存储单元组结构。在步骤420,基于物理地址,将写请求所指示的数据写入存储设备。在一个实施例中,为每个固态盘提供写队列,以先进先出的方式基于物理地址将数据写入存储设备。在另一个实施例中,为多个或所有固态盘提供共享的写队列。在进一步的实施例中,存储单元组中包括多个页,而写入请求对对应的数据少于存储单元组的容量。则还缓存写入数据,用以为对应的存储单元组生成校验数据。在一个实施例中,还向存储设备写入指示存储单元组信息的元数据。在步骤430,判断是否生成校验数据。若否,则返回步骤400以接收其他的写请求。若是,则在步骤440计算校验数据。基于N个页的用户数据计算得到P个页的校验数据。例如,可采用奇偶校验计算校验数据,也可以采用所有领域惯用的其他校验数据生成方式。在一个实施例中,计算校验数据之前,临时存储对应于一个存储单元组的用户数据,而在计算校验数据后,可释放临时存储用户数据的存储区。还基于存储单元组地址,确定用于存储P个页的校验数据的物理地址。在步骤450,基于物理地址,将校验数据写入存储设备。可提供写队列,以先进先出方式将校验数据写入存储设备。在一个实施例中,还向存储设备写入指示存储单元组信息的元数据。图5是根据本发明进一步实施例的访问多个驱动器的方法的流程图。图5中所示出的流程图,相对于图4中的流程图,进一步展示了基于写请求所对应的逻辑地址获取物理地址的多种方式。在步骤500,接收写请求。通过步骤511与步骤512,展示了一种获取物理地址的方式。在步骤511,分配多个固态盘之一。可通过多种方式分配固态盘。例如,可通过轮转方式分配固态盘;可通过查询固态盘的状态,并选择处于空闲状态的固态盘的方式分配固态盘;还可通过比较对应于固态盘的写入队列的长度,选择写入队列较短的固态盘的方式分配固态盘。在步骤512,针对选定的固态盘,将逻辑地址映射到指示该固态盘的物理地址。物理地址可指示该固态盘的页的物理位置。在一个实施例中,为连续的多个写请求分配的来自一个或多个固态盘的多个页组成存储单元组。存储单元组的N个页可来自N个固态盘的每一个,N个页可位于各固态盘的相同位置或不同位置。存储单元组的N个页也可以来自一个或少于N个固态盘。通过步骤513与步骤514,展示了又一种获取物理地址的方式。在步骤513,分配多个固态盘之一。可通过多种方式分配固态盘。例如,可通过轮转方式分配固态盘;可通过查询固态盘的状态,并选择处于空闲状态的固态盘的方式分配固态盘;还可通过比较对应于固态盘的写入队列的长度,选择写入队列较短的固态盘的方式分配固态盘。在步骤514,针对选定的固态盘,将该固态盘的写指针作为要写入数据的物理地址,并递增该写指针。以此方式,每个固态盘具有用于其自身的写指针,写指针指示了要写入数据的位置,使得在一个固态盘上的连续的写操作可在该固态盘的连续的物理地址上进行,进而可降低在擦除均衡过程中所引起的写放大效应,从而提高存储设备的使用寿命。物理地址可指示该固态盘的页的物理位置。在一个实施例中,为连续的多个写请求分配的来自一个或多个固态盘的多个页组成存储单元组。存储单元组的N个页可来自N个固态盘的每一个,N个页可位于各固态盘的相同位置或不同位置。存储单元组的N个页也可以来自一个或少于N个固态盘。通过步骤515与步骤516,展示了又一种获取物理地址的方式。在步骤515,分配存储单元组。存储单元组包括多个页。构成存储单元在的多个页来自多个固态盘。例如,存储单元组可包括N+P个页,N个页用于存储用户数据,而P个页用于存储校验数据。N+P个页来自N+P个固态盘,每个固态盘提供一个页。在另一个实施例中,N+P个页来自少于N+P个固态盘。在一个实施例中,包括多个固态盘的存储设备初始化期间,确定存储单元组的数量以及存储单元组到物理页的映射方式。存储单元组的多个页可位于多个固态盘的相同位置或不同位置。优选地,分配存储单元组,使得在一个固态盘上的连续的写操作可在该固态盘的连续的物理地址上进行。例如,若当前分配的存储单元组的一个页具有物理地址P(i),当分配下一存储单元组时,选择物理地址P(i+1)所对应的存储单元组。在另一个例子中,存储单元组K的N+P个页来自N+P个固态盘的每一个,且该N+P个页具有相同的物理地址P(K),而存储单元组K+1的每个页具有相同的物理地址P (Κ+l);则在分配存储单元K之后,分配存储单元组K+1。在步骤516,针对分配的存储单元组,将该存储单元组的写指针作为要写入数据的物理地址,并递增该写指针。以此方式,当前存储单元组具有用于其自身的写指针,写指针指示了要写入数据的位置。通过步骤517与步骤518,展示了又一种获取物理地址的方式。在步骤517,分配存储单元组。在步骤518,针对分配的存储单元组,选择存储单元组中尚未被分配的物理页,将该物理页的地址作为所分配的物理地址。可通过多种方式选择物理单元组中的尚未被分配物理页。例如,可基于物理单元组中尚未被分配的多个物理页所对应的多个磁盘的空闲状态来选择物理页;还可以基于存储单元组中尚未被分配的多个物理页所对应的多个磁盘的写队列长度来选择物理页。在步骤520,基于物理地址,将写请求所指示的数据写入存储设备。在步骤530,判断是否生成校验数据。若否,则返回步骤500以接收其他的写请求。若是,则在步骤540计算校验数据。还为校验数据确定物理地址。例如,对于存储单元组中的用户数据,为相对应的校验数据分配属于该存储单元组的P个页的物理地址,该P个页用于存储校验数据。又例如,对于用户数据和基于用户数据所生成的校验数据,分配物理地址,并使得该用户数据与校验数据存储于同一存储单元组。在步骤550,基于物理地址,将校验数据写入存储设备。图6是根据本发明依然进一步实施例的访问多个驱动器的方法的流程图。图6中所示出的流程图,相对于图4中的流程图,进一步展示了确定是否生成校验数据的多种方式。一般而言,当接收到一个存储单元组的全部用户数据后,基于这些用户数据生成校验数据。在诸如关机或掉电等其他一些情况下,也需要生成校验数据。在步骤600,接收写请求。在步骤610,获取物理地址。在步骤620,基于物理地址,将写请求所指示的数据写入存储设备。步骤632展示了一种获取确定是否生成校验数据的方式。在步骤632,确定是否已经接收到用于一个存储单元组的全部用户数据。若否,则返回步骤600以接收其他的写请求。若是,则在步骤640计算校验数据。一个存储单元组的全部用户数据可以是例如将存储在该存储单元组中的N个页。在一个实施例中,在顺序接收的多个写请求所对应的数据达到N个页的大小时,确定已经接收到用于一个存储单元组的全部用户数据。在另一个实施例中,存储单元组中的N个页已经被分配时,确定已经接收到用于一个存储单元组的全部用户数据。步骤634展示了另一种获取确定是否生成校验数据的方式。在步骤634,判断是否已经接收了 m (〈N)页数据,尚未接收到用于一个存储单元组的全部用户数据;但是出现了要求强制计算校验数据的事件。强制计算校验数据可能是由于计算机掉电、关机等意外情况,还可以是接收到操作系统或应用程序发出的冲刷缓冲区请求或者m页数据已经缓存了太长时间。如不计算校验数据,所临时存储的m页数据将丢失,在存储设备上也无法得到完成的存储单元组。若步骤634的判断为否,则返回步骤600以接收其他的写请求;若为是,则在步骤640计算校验数据。以及为计算校验数据,还使用预定数据值(例如,O、I或者其他预定值)填充Ν-m页数据,使得接收到的m页数据和填充的N-m页数据构成了 N页数据,并可在步骤640中计算P页校验数据。还可以在存储设备或固态盘上执行垃圾回收操作,使用垃圾回收操作中产生的写请求填充N-m页数据。在另一个实施例中,接收的数据可能不是按页边界对齐的,相应地,所填充的数据也可以不是按页边界对齐的。步骤636展示了另一种获取确定是否生成校验数据的方式。在步骤636,判断是否已经接收了 m (〈N)页数据,尚未接收到用于一个存储单元组的全部用户数据;但是在写请求中指示了要写入的数据只有m页。在写请求中指示了要写入的数据只有m页,意味着在来自操作系统或应用程序的写入操作已经完成,并暗示着在将来一段时间内可能没有后续的写请求;也可以意味着操作系统或应用程序预测在将来一段时间不大可能出现写请求。在此情况下,继续临时存储m页数据会增加耗电,并因存储空间被占用而降低存储设备的性能。若步骤636的判断为否,则返回步骤600以接收其他的写请求;若为是,则在步骤640计算校验数据。以及为计算校验数据,还使用预定数据值(例如,0、1或者其他预定值)填充N-m页数据,使得接收到的m页数据和填充的N-m页数据构成了 N页数据,并可在步骤640中计算P页校验数据。还可以在存储设备或固态盘上执行垃圾回收操作,使用垃圾回收操作中产生的写请求填充N-m页数据。在另一个实施例中,接收的数据可能不是按页边界对齐的,相应地,所填充的数据也可以不是按页边界对齐的。步骤638展示了另一种获取确定是否生成校验数据的方式。在步骤638,判断是否已经接收了 m (〈N)页数据,尚未接收到用于一个存储单元组的全部用户数据;但是要在存储设备上执行垃圾回收操作。若否,则返回步骤600以接收其他的写请求;若是,则使用垃圾回收操作中产生的写请求填充N-m页数据,并在步骤640中计算P页校验数据。在另一个实施例中,接收的数据可能不是按页边界对齐的,相应地,所填充的数据也可以不是按页边界对齐的。在步骤650,基于物理地址,将校验数据写入存储设备。通过上面描述的本发明的实施例,可将将数据同时写入到存储设备的多个固态盘,提高了写操作的并行度。并且,通过存储单元组提供对数据额外的保护,提高了存储设备的可靠性。图7是根据本发明实施例的存储设备的框图。上面在图3中已经公开了根据本发明实施例的计算机系统的框图。而图7的实施例为通过网络提供存储服务的存储设备。存储设备700包括背板710。背板710上布置有控制器714。背板710上还可布置有芯片组、存储器等部件。控制器714用于将多个存储盘耦合到存储设备700。控制器714可通过多种接口耦合存储盘,多种接口包括但不限于SATA7、USB7、PC1、PCIE、SCSI7、IDE7等。控制器714还可通过芯片组或者扩展卡间接耦合到存储盘。多个存储盘包括盘720、722、724和726。控制器714可耦合不同数量的存储盘。控制器714中可包括闪存转换层(FlashTranslation Layer, FTL)部件,用以将基于逻辑地址的存储盘访问请求转换为基于物理地址的存储盘访问请求。存储盘可以是固态盘,固态盘以闪存芯片作为存储介质,固态盘也适用于其他类型的存储芯片,例如,相变存储器、电阻存储器、铁电存储器等。在一个实施例中,在存储设备700的操作系统或其他程序中提供闪存转换层软件,用以将基于逻辑地址的存储盘访问请求转换为基于物理地址的存储盘访问请求。还可以将闪存转换层部件设置在CPU、芯片组或其他集成电路中。控制器714,可用以实施上面在图4-图6中描述的各操作来控制对盘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.一种计算机系统,包括主板、布置于主板上的扩展卡、CPU以及耦合到所述扩展卡的多个驱动器; 所述CPU把将第一数据写入第一逻辑地址的请求发送给所述扩展卡; 所述扩展卡为所述第一逻辑地址生成第一物理地址,并生成写入命令发送给所述多个驱动器之一,所述写入命令指示将所述第一数据写入所述第一物理地址所指示的存储位置; 所述扩展卡还确定是否生成校验数据,若是,基于所述第一数据生成第一校验数据,并生成第二写入命令发送给所述多个驱动器之一,所述第二写入命令指示将所述第一校验数据写入第二物理地址所指示的存储位置。
2.根据权利要求1所述的计算机系统,还包括: 所述扩展卡将元数据存储于所述多个驱动器中的一个或多个,所述元数据指示所述第一物理地址、所述第二物理地址具有关联关系。
3.根据权利要求1所述的计算机系统,其中所述扩展卡通过选择所述多个驱动器中的第一驱动器来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所述第一驱动器中的存储位置。
4.根据权利要求3所述的计算机系统,其中在所述扩展卡中为每个驱动器维护写指针,写指针指示写入数据的物理地址;所述扩展卡还基于所选择的第一驱动器的写指针生成所述第一物理地址,并使所述第一驱动器的写指针递增。
5.根据权利要求1所述的计算机系统,其中所述扩展卡响应于接收将第一数据写入用于所述存储设备的第一逻辑地址的请求,分配存储单元组,所述存储组包括多个存储单元,所述多个存储单元中的每个位于所述多个驱动器之一。
6.根据权利要求5所述的计算机系统,其中所述扩展卡为存储单元组维护写指针,写指针指示所述存储单元组中的一个存储单元,所述扩展卡基于所分配的存储单元组的写指针生成所述第一物理地址,并使所分配的存储单元组的写指针指示所述存储单元组中的另一个存储单元。
7.根据权利要求5所述的计算机系统,其中响应于分配存储单元组,所述扩展卡查询所述存储单元组的各个存储单元所在的多个驱动器的状态,并基于所述状态从所述存储单元组中选择一个存储单元来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指示所选择的存储单元。
8.根据权利要求1所述的计算机系统,其中如果所述扩展卡已经收到用于生成校验数据的N个数据,则确定生成校验数据,N是自然数。
9.根据权利要求1或8所述的计算机系统,其中如果所述扩展卡尚未收到用于生成校验数据的N个数据,则所述扩展卡填充预定数据来形成用于生成校验数据的N个数据,并确定生成校验数据。
10.根据权利要求1或8所述的计算机系统,其中如果所述扩展卡尚未收到用于生成校验数据的N个数据,则所述扩展卡发起用于所述多个驱动器的一个或多个的垃圾回收操作来形成用于生成校验数据的N个数据,并确定生成校验数据。
全文摘要
提供了计算机系统。该计算机系统,包括主板、布置于主板上的扩展卡、CPU以及耦合到所述扩展卡的多个驱动器;所述CPU将第一数据写入第一逻辑地址的请求发送给所述扩展卡;所述扩展卡为所述第一逻辑地址生成第一物理地址,并生成写入命令发送给所述多个驱动器之一,其指示将所述第一数据写入所述第一物理地址;所述扩展卡还确定是否生成校验数据,若是,基于所述第一数据生成第一校验数据,并生成第二写入命令发送给所述多个驱动器之一,其指示将所述第一校验数据写入第二物理地址。本发明解决了固态盘形成的RAID存储设备中写放大问题,延长了存储设备的使用寿命。
文档编号G06F11/10GK103218270SQ20131007677
公开日2013年7月24日 申请日期2013年3月11日 优先权日2013年3月11日
发明者殷雪冰, 路向峰 申请人:北京忆恒创源科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1