Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
STORAGE DEVICE AND ACCESSING METHOD THEREOF
Document Type and Number:
WIPO Patent Application WO/2014/139390
Kind Code:
A1
Abstract:
A method and device for accessing multiple drivers of a storage device are provided. The method comprises: receiving a request of writing a first data into a first logical address for the storage device; generating a first physical address for the first logical address; generating a writing command indicating to write the first data into the first physical address; confirming whether to generate a check data; and if yes, generating a first check data based on the first data, and writing the first check data into a second physical address.

More Like This:
Inventors:
LU XIANGFENG (CN)
YIN XUEBING (CN)
Application Number:
PCT/CN2014/073155
Publication Date:
September 18, 2014
Filing Date:
March 10, 2014
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
MEMBLAZE TECHNOLOGY BEIJING CO LTD (CN)
International Classes:
G06F11/10
Domestic Patent References:
WO2012064464A12012-05-18
Foreign References:
CN103150261A2013-06-12
CN103176858A2013-06-26
CN103218270A2013-07-24
Download PDF:
Claims:
权 利 要 求 书

1 . 一种用于访问存储设备的多个驱动器的方法, 所述方法包括:

接收将第一数据写入用于所述存储设备的第一逻辑地址的请求;

为所述第一逻辑地址生成第一物理地址;

生成写入命令,其指示将所述第一数据写入所述第一物理地址所指示的存储位置; 确定是否生成校验数据;

若是,基于所述第一数据生成第一校验数据,并将所述第一校验数据写入第二物 理地址所指示的存储位置。

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 个数据, 并确定 生成校验数据。

11 . 根据权利要求 8所述的方法, 其中在所述请求中指示生成校验数据。

12. 一种用于访问存储设备的多个驱动器的装置, 所述装置包括:

用于接收将第一数据写入用于所述存储设备的第一逻辑地址的请求的模块; 用于为所述第一逻辑地址生成第一物理地址的模块;

用于生成写入命令的模块,所述写入命令指示将所述第一数据写入所述第一物理 地址所指示的存储位置;

用于确定是否生成校验数据的模块;

用于在确定生成校验数据的情况下基于所述第一数据生成第一校验数据,并将所 述第一校验数据写入第二物理地址的模块所指示的存储位置。

13. 一种存储设备, 包括网络适配器、控制器以及耦合到所述控制器的多个驱 动器;

所述网络适配器将所述存储设备耜合到网络,并接收来自客户端的访问请求, 所述访问请求指示将第一数据写入用于所述存储设备的第一逻辑地址; 所述控制器为所述第一逻辑地址生成第一物理地址, 并生成写入命令发送给 所述多个驱动器之一,其指示将所述第一数据写入所述第一物理地址所指示的存 储位置;

所述控制器还确定是否生成校验数据, 若是, 基于所述第一数据生成第一校 验数据,并生成第二写入命令发送给所述多个驱动器之一, 其指示将所述第一校 验数据写入第二物理地址所指示的存储位置。

14. 根据权利要求 13所述的存储设备, 还包括:

所述控制器将元数据存储于所述多个驱动器中的一个或多个,所述元数据指示所 述第一物理地址、 所述第二物理地址具有关联关系。

15根据权利要求 13所述的存储设备, 其中所述控制器通过选择所述多个驱动器 中的第一驱动器来为所述第一逻辑地址生成第一物理地址,所述第一物理地址指 示所述第一驱动器中的存储位置。

16. 根据权利要求 15所述的存储设备, 其中在所述控制器中为每个驱动器维护 写指针, 写指针指示写入数据的物理地址; 所述控制器还基于所选择的第一驱动 器的写指针生成所述第一物理地址, 并使所述第一驱动器的写指针递增。

17. 根据权利要求 13所述的存储设备, 其中所述控制器响应于接收将第一数据 写入用于所述存储设备的第一逻辑地址的请求,分配存储单元組,所述存储組包 括多个存储单元, 所述多个存储单元中的每个位于所述多个驱动器之一。

18. 根据权利要求 17所述的存储设备, 其中所述控制器为存储单元組维护写指 针, 写指针指示所述存储单元組中的一个存储单元,所述控制器基于所分配的存 储单元組的写指针生成所述第一物理地址,并使所分配的存储单元組的写指针指 示所述存储单元組中的另一个存储单元。

19. 根据权利要求 17所述的存储设备, 其中响应于分配存储单元組, 所述控制 器查询所述存储单元組的各个存储单元所在的多个驱动器的状态,并基于所述状 态从所述存储单元組中选择一个存储单元来为所述第一逻辑地址生成第一物理 地址, 所述第一物理地址指示所选择的存储单元。

20. 根据权利要求 13所述的存储设备, 其中如果所述存储设备已经收到用于生 成校验数据的 N个数据, 则所述控制器确定生成校验数据, N是自然数。

21 . 根据权利要求 13或 20所述的存储设备, 其中如果所述存储设备尚未收到用 于生成校验数据的 N 个数据, 则所述控制器填充预定数据来形成用于生成校验 数据的 N个数据, 并确定生成校验数据。

22. 根据权利要求 13或 20所述的存储设备, 其中如果所述存储设备尚未收到用 于生成校验数据的 N 个数据, 则所述控制器发起用于所述多个驱动器的一个或 多个的垃圾回收操作来形成用于生成校验数据的 N 个数据, 并确定生成校验数 据。

23. 一种计算机系统, 包括主板、 布置于主板上的扩展卡、 CPU以及耦合到所述 扩展卡的多个驱动器;

所述 CPU把将第一数据写入第一逻辑地址的请求发送给所述扩展卡; 所述扩展卡为所述第一逻辑地址生成第一物理地址,并生成写入命令发送给所述 多个驱动器之一,所述写入命令指示将所述第一数据写入所述第一物理地址所指 示的存储位置;

所述扩展卡还确定是否生成校验数据,若是, 基于所述第一数据生成第一校验数 据,并生成第二写入命令发送给所述多个驱动器之一,所述第二写入命令指示将 所述第一校验数据写入第二物理地址所指示的存储位置。

24. 根据权利要求 23所述的计算机系统, 还包括:

所述扩展卡将元数据存储于所述多个驱动器中的一个或多个,所述元数据指示所 述第一物理地址、 所述第二物理地址具有关联关系。

25. 根据权利要求 23所述的计算机系统, 其中所述扩展卡通过选择所述多个驱 动器中的第一驱动器来为所述第一逻辑地址生成第一物理地址,所述第一物理地 址指示所述第一驱动器中的存储位置。

26. 根据权利要求 25所述的计算机系统, 其中在所述扩展卡中为每个驱动器维 护写指针, 写指针指示写入数据的物理地址; 所述扩展卡还基于所选择的第一驱 动器的写指针生成所述第一物理地址, 并使所述第一驱动器的写指针递增。 27. 根据权利要求 23所述的计算机系统, 其中所述扩展卡响应于接收将第一数 据写入用于所述存储设备的第一逻辑地址的请求,分配存储单元組, 所述存储組 包括多个存储单元, 所述多个存储单元中的每个位于所述多个驱动器之一。

28. 根据权利要求 27所述的计算机系统, 其中所述扩展卡为存储单元組维护写 指针, 写指针指示所述存储单元組中的一个存储单元,所述扩展卡基于所分配的 存储单元組的写指针生成所述第一物理地址,并使所分配的存储单元組的写指针 指示所述存储单元組中的另一个存储单元。

29. 根据权利要求 27所述的计算机系统, 其中响应于分配存储单元組, 所述扩 展卡查询所述存储单元組的各个存储单元所在的多个驱动器的状态,并基于所述 状态从所述存储单元組中选择一个存储单元来为所述第一逻辑地址生成第一物 理地址, 所述第一物理地址指示所选择的存储单元。

30. 根据权利要求 23所述的计算机系统,其中如果所述扩展卡已经收到用于生成 校验数据的 N个数据, 则确定生成校验数据, N是自然数。

31 . 根据权利要求 23或 30所述的计算机系统, 其中如果所述扩展卡尚未收到用 于生成校验数据的 N 个数据, 则所述扩展卡填充预定数据来形成用于生成校验 数据的 N个数据, 并确定生成校验数据。

32. 根据权利要求 23或 30所述的计算机系统, 其中如果所述扩展卡尚未收到用 于生成校验数据的 N 个数据, 则所述扩展卡发起用于所述多个驱动器的一个或 多个的垃圾回收操作来形成用于生成校验数据的 N 个数据, 并确定生成校验数 据。

Description:
说 明 书 存储设备及其访问方法 技术领域

本发明涉及固态存储设备 ( Solid Storage Device, SSD ) , 更具体地, 本发明 涉及用于同时访问多个固态盘的方法与装置。 背景技术

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

存储器目标 ( Target )是 NAND闪存封装内的共享芯片使能 ( CE, Chip Enable ) 信号的一个或多个逻辑单元( Logic Unit )。每个逻辑单元具有逻辑单元号( LUN, Logic Unit Number ) 。 NAND闪存封装内可包括一个或多个管芯 (Die ) 。 典型地, 逻辑单 元对应于单一的管芯。 逻辑单元可包括多个平面 (Plane ) 。 逻辑单元内的多个平面 可以并行存取, 而 NAND闪存芯片内的多个逻辑单元可以彼此独立 执行命令和报 告状态。 在可从

http://www.micron.eom/~/media/Documents/Products/Other%20 Documents/ONFI3_0Gol d.ashx获得的 "Open NAND Flash Interface Specification ( Revision 3.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 Independent Disks , 独立磁盘冗余阵列)模式引入到固态存储设 备中, 提高了固态存储设备的性能与可靠性。

然而, 存储设备中可能多个固态盘或多个存储卡, 每个固态盘或存储卡可能具 有不同的容量和性能,随着时间的流逝,各个 固态盘或存储卡也会表现出不同的特性。 在写入数据时, 考虑各个固态盘或存储卡的特定性能将有助于 提高存储设备的性能。 以及, 写入请求中所携带的数据量可能与 "步距" 的数据容量不同。 需要提供相应的 手段来匹配来自客户端的访问请求与存储设备 的存储单元的容量。 发明内容

本发明解决了固态盘形成的 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包括多个块, 例如块 0、 块 1、 块 2和块 3。 闪存芯片 中也可以包括其他数量的块。 在每个块中包括多个页。 对于 NAND闪存, 以页为单 位进行读、 写操作, 而以块为单位实施擦除操作, 这是由 NAND闪存的物理结构决 定的。 作为举例, 闪存芯片 201还包括平面 0与平面 1。 平面 0包括块 0与块 2, 而 平面 1包括块 1与块 3。 平面 0与平面 1各自具有页寄存器, 使得位于平面 0的块与 位于平面 1的块可以并行操作。 闪存芯片可以具有不同数量的页。 闪存芯片还可以包 括一个或多个管芯。

根据本发明的实施例, 固态盘 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的块 0的页 1、 盘 220的 芯片 221的块 0的页 1与盘 260的芯片 261的块 0的页 1组成另一个存储单元组。虽 然在图 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 ( Serial Advanced Technology Attachment , 串行高級技术附件 ) 、 USB ( Universal Serial Bus ,通用串行总线)、 PCIE、 SCSK Small Computer System Interface , 小型计算机系统接口 ) 、 IDE ( Integrated Drive Electronics , 集成驱动器电子) 等。 多个存储盘包括盘 320、 322、 324和 326。 扩展卡 314可耦合不同数量的存储盘。 扩 展卡 314中可包括闪存转换层( Flash Translation Layer, FTL )部件, 用以将基于逻辑 地址的存储盘访问请求转换为基于物理地址的 存储盘访问请求。 存储盘可以是固态 盘, 固态盘以闪存芯片作为存储介质, 固态盘也适用于其他类型的存储芯片, 例如, 相变存储器、 电阻存储器、 铁电存储器等。

在一个实施例中, 主板 310中可以不包括扩展卡 314, 而通过设置在主板 310 上的诸如 PCIE、 IDE, SCSI, 和 /或 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的每个页具有相同的物理地址 Ρ ( K+1 ); 则在分配存储单元 Κ之后, 分配 存储单元组 K+l。 在步骤 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计算校验数据。 以及为计算校 验数据, 还使用预定数据值 (例如, 0、 1或者其他预定值) 填充 N-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、PCI、 PCIE、 SCSI7、 IDE7等。 控制器 714还可通过芯片组或者扩展卡间接耦合到存储 盘。 多个存储盘包括盘 720、 722、 724和 726。 控制器 714可耦合不同数量的存储盘。 控 制器 714中可包括闪存转换层( Flash Translation 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。 已经为了示出和描述的目的而展现了对本发明 的描述, 并且不旨在以所公开 的形式穷尽或限制本发明。 对所属领域技术人员, 许多调整和变化是显而易见的。