存储空间的自动配置的设备及方法与流程

文档序号:22313494发布日期:2020-09-23 01:34阅读:122来源:国知局
存储空间的自动配置的设备及方法与流程

本申请大体涉及存储空间管理,且具体来说,涉及一种存储空间的自动配置的设备及方法。



背景技术:

已开发出一些方案以提供安全数据存储。然而,随着技术发展,数据或文件(或数据的备份)的安全性成为关键问题。



技术实现要素:

提议一种新的数据分配机制。将阵列中的存储单元分类为若干组。以特定方式布置待存储于存储单元中的数据,使得一个组中的一个失效存储单元的重建置工作可由其它组中的存储单元分担。具体来说,根据彼此正交的拉丁方阵(latinsquare)布置待存储于存储单元中的数据,使得可使用存储于来自其它组中的每一者的仅一个存储单元中的数据来重建置一个组中的存储单元上的特定数据。这可增加重建置存储于失效存储单元中的数据的速度。另外,提议一种新的数据分配机制以基于相互正交的拉丁方阵的扩展而改进存储单元的阵列的容量效率。

根据本发明的一些实施例,公开一种设备。所述设备包含:控制单元;存储器,其具有计算机程序代码;及n个存储单元组,其电连接到所述控制单元。所述n个存储单元组中的每一者具有n个存储单元,所述n个存储单元中的每一者具有n个存储区域,其中n为正整数。所述存储器及所述计算机程序代码经配置以与所述控制单元一起致使所述设备执行:(1)将第一数据段存储到第k个存储单元组中的第一存储单元的第i个存储区域中;(2)将第二数据段存储到所述第k个存储单元组中的第二存储单元的第i个存储区域中;(3)将第三数据段存储到所述第k个存储单元组中的第三存储单元的第i个存储区域中;(4)将第四数据段存储到第(k+1)个存储单元组中的第一存储单元的第i个存储区域中;(5)将第五数据段存储到所述第(k+1)个存储单元组中的第二存储单元的第i个存储区域中;及(6)将第六数据段存储到所述第(k+1)个存储单元组中的第三存储单元的第i个存储区域中。其中i为小于或等于n的正整数,其中k为小于或等于n的正整数。其中所述第一数据段与所述第四数据段相关联,所述第一数据段独立于所述第五数据段,且所述第一数据段独立于所述第六数据段。

根据本发明的一些实施例,公开一种设备。所述设备包含:控制单元;存储器,其耦合到控制单元,且包含计算机程序代码;及s个存储单元组,其电连接到所述控制单元。第1存储单元组到第(s-1)个存储单元组各自具有n个存储单元,第s个存储单元组具有m个存储单元。所述s个存储单元组中的每一存储单元具有n个存储区域,其中n、s及m为正整数。s及m小于n。所述存储器及所述计算机程序代码经配置以与所述控制单元一起致使所述设备执行:(1)将第一数据段存储到第k个存储单元组中的第一存储单元的第i个存储区域中;(2)将第二数据段存储到所述第k个存储单元组中的第二存储单元的第i个存储区域中;(3)将第三数据段存储到所述第k个存储单元组中的第三存储单元的第i个存储区域中;(4)将第四数据段存储到所述第s个存储单元组中的第一存储单元的第i个存储区域中;(5)将第五数据段存储到所述第s个存储单元组中的第二存储单元的第i个存储区域中;及(6)将第六数据段存储到所述第s个存储单元组中的第三存储单元的第i个存储区域中。其中i为小于或等于n的正整数,其中k为小于或等于n的正整数。其中所述第一数据段与所述第四数据段相关联,所述第一数据段独立于所述第五数据段,且所述第一数据段独立于所述第六数据段。

根据本发明的一些实施例,公开一种用于将数据存储于存储系统中的方法。所述存储系统具有n个存储单元组,所述n个存储单元组各自具有n个存储单元。所述n个存储单元组中的每一存储单元具有n个存储区域,其中n为正整数。所述方法包括:(1)将第一数据段存储到第k个存储单元组中的第一存储单元的第i个存储区域中;(2)将第二数据段存储到所述第k个存储单元组中的第二存储单元的第i个存储区域中;(3)将第三数据段存储到所述第k个存储单元组中的第三存储单元的第i个存储区域中;(4)将第四数据段存储到第(k+1)个存储单元组中的第一存储单元的第i个存储区域中;(5)将第五数据段存储到所述第(k+1)个存储单元组中的第二存储单元的第i个存储区域中;及(6)将第六数据段存储到所述第(k+1)个存储单元组中的第三存储单元的第i个存储区域中。其中i为小于或等于n的正整数,其中k为小于或等于n的正整数。其中所述第一数据段与所述第四数据段相关联,所述第一数据段独立于所述第五数据段,且所述第一数据段独立于所述第六数据段。

附图说明

当结合附图阅读时,从以下详细描述容易地理解本发明的方面。应注意,各种特征可能未按比例绘制,且各种特征的尺寸可出于论述的清晰起见而任意增大或减小。

图1为说明根据本申请的一些实施例的设备的示意图。

图2为说明根据本申请的一些比较实施例的存储空间配置的示意图。

图3为说明根据本申请的一些实施例的存储空间配置的示意图。

图4为说明根据本申请的一些实施例的存储空间配置的示意图。

图4a为说明根据本发明的一些实施例的用于存储单元阵列的数据分配算法的示意图。

图5a为说明根据本申请的一些实施例的存储空间配置的示意图。

图5b为说明根据本申请的一些实施例的存储空间配置的示意图。

图5c为说明根据本申请的一些实施例的存储空间配置的示意图。

图5d为说明根据本申请的一些实施例的存储空间配置的示意图。

图5e为说明根据本申请的一些实施例的存储空间配置的示意图。

图5f为说明根据本申请的一些实施例的存储空间配置的示意图。

图5g为说明根据本申请的一些实施例的存储空间配置的示意图。

图5h为说明根据本申请的一些实施例的存储空间配置的示意图。

图5i为说明根据本申请的一些实施例的存储空间配置的示意图。

图5j为说明根据本申请的一些实施例的存储空间配置的示意图。

图6为说明根据本申请的一些实施例的存储空间配置的示意图。

图6a为说明根据本申请的一些实施例的存储空间配置的示意图。

图7为说明根据本申请的一些实施例的数据分配组合的示意图。

图7a为说明根据本申请的一些实施例的数据分配组合的示意图。

图7b为说明根据本发明的一些实施例的用以导出错误校正数据的方法的示意图。

图8a为说明根据本申请的一些实施例的存储空间配置的示意图。

图8b为说明根据本申请的一些实施例的存储空间配置的示意图。

图8c为说明根据本申请的一些实施例的存储空间配置的示意图。

具体实施方式

下文详细论述本发明的实施例及其用途。然而,应了解,所述实施例阐述可实施于广泛多种特定情境中的许多适用概念。应理解,以下公开内容提供实施各种实施例的不同特征的许多不同实施例或实例。下文出于论述的目的而描述组件及布置的特定实例。当然,这些组件及布置仅为实例且不打算为限制性的。

除非另有指定,否则包含例如“在……上方”、“在……下方”、“上”、“左”、“右”、“下”、“顶部”、“底部”、“竖直”、“水平”、“侧面”、“较高”、“下部”、“上部”、“在……上面”、“在……下面”等等的术语的空间描述在本文中是相对于对应图中展示的定向使用。应理解,本文中所使用的空间描述是出于说明的目的,且本文中所描述的结构的实际实施方案可以任何定向或方式在空间上布置,前提是本发明的实施例的优点不因此布置而有偏差。

下文使用特定语言公开图中所说明的实施例或实例。然而,将理解,实施例及实例并不打算为限制性的。如相关领域中的一般技术人员通常将想到,所公开实施例的任何更改及修改,及公开于本文中的原理的任何其它应用属于本发明的范围内。

另外,本发明可在各种实例中重复参考标号及/或字母。此重复是出于简单及清楚的目的,且本身并不规定本文中所论述的各种实施例及/或配置之间的关系。

将若干存储单元布置成阵列以提供较大存储空间及/或较高性能为已广泛用于产业中的技术。举例来说,在20世纪80年代开发了raid(独立磁盘的冗余阵列)。raid技术的初始目标为通过将若干便宜且低性能的存储单元(例如,硬盘机)组合成阵列来提供较大存储空间及高性能。由于此阵列可包含大量存储单元,因此数据保护及数据完整性成为阵列的重要考虑因素。已开发出各种方案以提供安全数据存储。

用于向存储单元阵列提供数据保护的常见方法为将冗余数据型样(例如,错误校正数据型样、奇偶校验数据型样)包含于阵列内。已开发出不同技术(例如,raid级别5及raid级别6)以提供存储单元阵列内的数据完整性。一旦阵列内的存储单元中的任一者失效,或存储于存储单元中的任一者中的数据丢失,即可基于冗余数据重构建或重建置丢失的数据。

当重建置阵列的一个存储单元时,阵列的输入/输出端子(i/o)将被大量占据且阵列的总体操作变得较慢。另外,阵列在重建置存储单元阵列的一个存储单元时的持续时间内处于临界状态,这是因为所述阵列在此持续时间期间无法容许更多存储单元失效。随着技术发展,数据恢复(recovery)的速度已成为重要考虑因素,这是因为随着存储单元的容量增大,重构建存储于失效存储单元中的所有数据所需的时间也增加。需要开发一种增加重建置存储单元阵列的速度的新机制。

图1为说明根据本申请的一些实施例的设备的示意图。

参考图1,设备1包含控制单元2、加速度单元4、存储器单元10、收发单元12及存储系统16。设备1可包含服务器、数据中心、数据存储设备等等。

数个外部装置或客户端主机14经由有线或无线通信接口(图1中未显示)电连接到设备1。包含多个存储单元的存储系统17经由有线或无线通信接口电连接到设备1。

存储器单元10包含高速缓冲存储器6。存储器单元10包含一组查找表8。存储器10可包含存储于其中的计算机程序代码(图1中未显示)。存储器单元10及计算机程序代码经配置以与控制单元12一起致使设备1执行将在以下段落中描述的若干操作。

控制单元2可包含但不限于(例如)中央处理单元(cpu)、微处理器、专用指令集处理器(asip)、机器控制单元(mcu)、图形处理单元(gpu)、物理处理单元(ppu)、数字信号处理器(dsp)、图像处理器、共处理器、存储控制器、浮点单元、网络处理器、多核处理器、前端处理器等等。控制单元2电连接到存储器单元10。控制单元2电连接到加速度单元4。控制单元2电连接到收发单元12。控制单元2电连接到存储系统16。

加速度单元4可包含但不限于(例如)微处理器、共处理器、专用指令集处理器(asip)、物理处理单元(ppu)、数字信号处理器(dsp)、协同处理元件或类似者。加速度单元4能够补充控制单元2的功能。由加速度单元4执行的操作可包含但不限于(例如)浮点算术、图形、信号处理、字符串处理、密码术或与外围装置i/o介接。设备1的执行可借助于加速度单元4加速,所述加速度单元与控制单元2分担一些任务。

存储器单元10可包含但不限于随机存取存储器(ram),例如静态ram(sram)或动态ram(dram)。在一些实施例中,存储器单元10可包含只读存储器(rom)。存储器单元10包含高速缓冲存储器6,所述高速缓冲存储器6用于存储最近已存取的数据,使得可较快地服务对所述数据的未来请求。存储于高速缓冲存储器6中的数据可包含控制单元2或加速度单元4的较早计算的结果。存储于高速缓冲存储器6中的数据可包含存储于存储单元16中的一者中的数据的副本。

存储器单元10包含一组查找表8。查找表8可包含存储系统16中的存储单元待指派给数据的地址。查找表8可包含数据属性。查找表8可包含与数据属性相关联的分类。查找表8可包含存储系统16中的存储单元的待指派给错误校正数据的地址。查找表8可包含存储系统16中的存储单元的待指派给重构建数据的地址。亦可考虑到查找表8可集成到一个单个查找表内。

设备1可基于查找表8存取存储系统16。基于查找表8,设备1可重构建或重建置存储系统16中的数据。基于查找表8,设备1可将经重构建或经重建置的数据存储于存储系统16中的备用区域或空间中。

控制单元2可经配置以创建或产生查找表8且将其存储于存储器单元10中。控制单元2经配置以针对存储系统16中新的或不同的数据布置、部署或分配方案更新查找表8。控制单元2经配置以创建或产生查找表8且将其存储于存储系统16。控制单元2经配置以从存储系统16读取查找表8且将其写入于存储器单元10中。

收发单元12涉及设备1与外部装置14之间的通信。收发单元12涉及设备1与存储系统17之间的通信。收发单元12可包含硬件组件、与接口或通信协议兼容的软件实施方案,包含但不限于(例如)以太网、以太网光纤信道(fcoe)、外围组件互连高速(pcie)、高级主机控制器接口(ahci)、蓝牙、wifi及蜂窝式数据服务(例如gsm、cdma、gprs、wcdma、edge、cdma2000或lte),或以上各者的组合。控制单元2与收发单元12之间存在电连接。控制单元2与收发单元12之间的电连接可包含但不限于高速i/o连接。

存储系统16包含多个存储单元。存储系统16的存储单元可包含但不限于(例如)硬盘(hdd)、固态硬盘(ssd)、嵌入式多媒体卡(emmc)、安全数字(sd)记忆卡或其它类型的存储装置。存储系统16的存储单元可布置成阵列且电连接到控制单元2。在一些实施例中,查找表8可存储于存储单元16中的一者中,且控制单元2可确定何时读取所述查找表及将其置于存储器单元10中。

存储系统17类似于存储系统16。存储系统17可充当存储系统16的本地数据备份。存储系统17可充当存储系统16的云端备份或在线备份。

客户端主机14可包含电子装置,例如但不限于个人计算机、笔记本电脑、服务器、移动电话、平板计算机、物联网(iot)装置等等。

图2为说明根据本申请的一些比较实施例的存储空间配置的示意图。

为简单起见,仅说明设备1的存储系统16中的存储单元16-1、16-2、16-3、16-4、16-5、16-6、16-7及16-8。

参考图2,存储单元16-1到16-8被分类为阵列20。存储单元16-1、16-2、16-3及16-4被进一步分组成子阵列20-1。存储单元16-5、16-6、16-7及16-8被进一步分组成子阵列20-2。

存储单元16-1到16-8中的每一者包含多个存储区域。在图2中所展示的实施例中,存储单元16-1到16-8中的每一者包含四个连续存储区域(例如,16-8a、16-8b、16-8c及16-8d)。在一些实施例中,连续存储区域(例如,16-8a、16-8b、16-8c及16-8d)被分类为不同分区以存储数据。

尽管图2中未标注,但存储单元16-1包含连续存储区域16-1a、16-1b、16-1c及16-1d。存储单元16-2包含连续存储区域16-2a、16-2b、16-2c及16-2d。存储单元16-3包含连续存储区域16-3a、16-3b、16-3c及16-3d。存储单元16-4包含连续存储区域16-4a、16-4b、16-4c及16-4d。存储单元16-5包含连续存储区域16-5a、16-5b、16-5c及16-5d。存储单元16-6包含连续存储区域16-6a、16-6b、16-6c及16-6d。存储单元16-7包含连续存储区域16-7a、16-7b、16-7c及16-7d。存储单元16-8包含连续存储区域16-8a、16-8b、16-8c及16-8d。亦可考虑到,可将更多或更少存储区域分配于存储单元中的每一者中。

待存储于存储单元的连续存储区域中的数据在后续段落中可被称作数据段(segment)。待存储于存储单元的连续存储区域中的数据在后续段落中可被称作数据型样(pattern)。

在一些实施例中,连续存储区域16-8a可包含一系列物理或逻辑上连续的地址。连续存储区域16-8b可包含一系列物理或逻辑上连续的地址。连续存储区域16-8c可包含一系列物理或逻辑上连续的地址。连续存储区域16-8d可包含一系列物理或逻辑上连续的地址。

举例来说,连续存储区域16-8a可包含存储单元16-8中的一系列逻辑上连续的地址[ww0001]、[ww0002]、[ww0003]、[ww0004]、[ww0005]。连续存储区域16-8b可包含存储单元16-8中的一系列逻辑上连续的地址[xx0001]、[xx0002]、[xx0003]、[xx0004]、[xx0005]。连续存储区域16-8c可包含存储单元16-8中的一系列逻辑上连续的地址[yy0001]、[yy0002]、[yy0003]、[yy0004]、[yy0005]。连续存储区域16-8d可包含存储单元16-8中的一系列逻辑上连续的地址[zz0001]、[zz0002]、[zz0003]、[zz0004]、[zz0005]。

在一些实施例中,连续存储区域16-8b紧邻连续存储区域16-8a。连续存储区域16-8c紧邻连续存储区域16-8b。连续存储区域16-8d紧邻连续存储区域16-8c。在一些实施例中,连续存储区域16-8a、16-8b、16-8c及16-8d可彼此邻近。在一些实施例中,连续存储区域16-8a、16-8b、16-8c及16-8d并非彼此邻近的区域。

在一些实施例中,连续存储区域16-8a可包含存储单元16-8中的轨道1上的一系列物理上连续的扇区1、2、3、4、5。连续存储区域16-8b可包含存储单元16-8中的轨道1上的一系列物理上连续的扇区6、7、8、9、10。连续存储区域16-1c可包含存储单元16-8中的轨道1上的一系列物理上连续的扇区11、12、13、14、15。连续存储区域16-1d可包含存储单元16-8中的轨道1上的一系列物理上连续的扇区16、17、18、19、20。

在一些实施例中,连续存储区域16-8a及16-8b经配置以具有端对端布置。连续存储区域16-8b及16-8c经配置以具有端对端布置。连续存储区域16-8c及16-8d经配置以具有端对端布置。亦可考虑到连续存储区域16-8a、16-8b、16-8c及16-8d中的任两者可交换。

存储单元16-1到16-7中的每一者可具有与存储单元16-8相同或类似的存储配置。亦可考虑到存储单元16-1到16-8中的每一者可经配置以具有更多或更少连续存储区域。

控制单元2可根据如图1中所展示的查找表8将数据存储到存储单元16-1到16-8中。对待存储到存储单元16-1到16-8中的数据分类,随后将其存储到存储单元16-1到16-8中。将待存储到存储单元16-1到16-8中的数据划分成区段,随后将其存储到存储单元16-1到16-8中。

在图2中所展示的实施例中,个别数据完整性保护被应用于子阵列20-1及20-2。参考图2,待存储于存储单元16-1、16-2、16-3及16-4中的数据被分类为数据保护组g1(其包含子组g1a、g1b、g1c及g1d),且待存储于存储单元16-5、16-6、16-7及16-8中的数据被分类为数据保护组g2(其包含子组g2a、g2b、g2c及g2d)。

子阵列20-1及20-2中的数据完整性保护是由组实施。对分类为同一组的数据提供数据保护。举例来说,如果存储单元16-1失效或受损,那么可根据存储于存储单元16-2、16-3及16-4中的数据重构建或重建置存储于其中的数据。类似地,如果存储单元16-5失效或受损,那么可根据存储于存储单元16-6、16-7及16-8中的数据重构建或重建置存储于其中的数据。

子阵列20-1及20-2中的数据完整性保护是由子组实施。对分类为同一子组的数据提供数据保护。举例来说,对分类为子组g1a的数据提供数据保护。对分类为子组g1b的数据提供数据保护。对分类为子组g1c的数据提供数据保护。对分类为子组g1d的数据提供数据保护。

类似地,对分类为子组g2a的数据提供数据保护。对分类为子组g2b的数据提供数据保护。对分类为子组g2c的数据提供数据保护。对分类为子组g2d的数据提供数据保护。

以子阵列20-1为例,短划线矩形24指示跨存储单元16-1到16-4存储且分类为子组g1a的一组数据。对子组g1a内的数据提供数据保护。在一些实施例中,分类为子组g1a的四个数据中的一者包含与子组g1a相关联的错误校正数据。

在一些实施例中,错误校正数据可包含与分类为子组g1a的数据相关联的偶校验数据。在一些实施例中,错误校正数据可包含与分类为子组g1a的数据相关联的奇校验数据。亦可考虑到子组g1a可包含由其它糾刪碼(erasurecode)技术采用的任何其它错误校正数据。

假定存储于存储单元16-2的存储区域16-2a中的数据包含与分类为子组g1a的数据相关联的错误校正数据。在分类于子组g1a内的数据(例如,存储于存储单元16-1的存储区域16-1a中的数据)失效或受损后,可根据错误校正数据及子组g1a的剩余数据(例如,存储于存储单元16-3的存储区域16-3a中的数据及存储于存储单元16-4的存储区域16-4a中的数据)重构建或重建置存储于其中的数据。

以子阵列20-2为例,短划线矩形26指示跨存储单元16-5到16-8存储且分类为子组g2d的一组数据。对子组g2d内的数据提供数据保护。在一些实施例中,分类为子组g2d的四个数据中的一者包含与子组g2d相关联的错误校正数据。

在一些实施例中,错误校正数据可包含与分类为子组g2d的数据相关联的偶校验数据。在一些实施例中,错误校正数据可包含与分类为子组g2d的数据相关联的奇校验数据。亦可考虑到子组g2d可包含由其它糾刪碼技术采用的任何其它错误校正数据。

假定存储于存储单元16-6的存储区域16-6d中的数据包含与分类为子组g2d的数据相关联的错误校正数据。在分类于子组g2d内的数据(例如,存储于存储单元16-5的存储区域16-5d中的数据)失效或受损后,可根据错误校正数据及子组g2d的剩余数据(例如,存储于存储单元16-7的存储区域16-7a中的数据及存储于存储单元16-8的存储区域16-8a中的数据)重构建或重建置存储于其中的数据。

在一些实施例中,在将从外部装置(例如,图1中所展示的客户端主机14中的一者)接收到的文件存储于子阵列20-1中之前,将其划分成区段。在一些实施例中,存储于子阵列20-2的存储单元中的数据为存储于子阵列20-1的存储单元中的数据的复制版本。

在一些实施例中,在将从外部装置(例如,图1中所展示的客户端主机14中的一者)接收到的文件存储于子阵列20-1及20-2中之前,将其划分成区段。

然而,图2中所展示的数据分配机制有其限制。从存储单元阵列中的存储单元失效恢复数据的过程被称为数据重构建。大体而言,数据重构建过程包含:从尚存存储单元读取所有数据的步骤;基于存储于尚存存储单元中的数据重建置或重构建失效存储单元中的数据的步骤;及将经重建置数据写回到失效存储单元或另一备用存储单元的步骤。

使用图2中所展示的数据分配机制,如果子阵列20-1的一个存储单元失效,那么子阵列20-1内的所有其它尚存存储单元在失效存储单元的重构建过程期间将被过度读取/写入操作占据,而子阵列20-2内的所有存储单元空闲。举例来说,如果子阵列20-1的存储单元16-1失效,那么需要在重构建过程期间读出存储于尚存存储单元16-2、16-3及16-4中的所有数据。存储单元16-2、16-3及16-4中的每一者的重工作负载不利地影响阵列20的性能,而子阵列20-2的所有存储单元16-5到16-8在重构建过程中空闲。

图3为说明根据本申请的一些实施例的存储空间配置的示意图。

为简单起见,仅说明设备1的存储系统16中的存储单元16-1、16-2、16-3、16-4、16-5、16-6、16-7及16-8。

控制单元2可根据如图1中所展示的查找表8将数据存储到存储单元16-1到16-8中。对待存储到存储单元16-1到16-8中的数据分类,随后将其存储到存储单元16-1到16-8中。

图3的阵列20中的数据完整性保护是以与图2的方式不同的方式实施。参考图3,待存储于存储单元16-1到16-8中的数据被分类为两个数据保护组g1及g2。组数据保护组g1被进一步分类为子组g1a、g1b、g1c及g1d。组数据保护组g2被进一步分类为子组g2a、g2b、g2c及g2d。

阵列20中的数据完整性保护是由组实施。对分类为同一组的数据提供数据保护。举例来说,对分类为组g1的数据提供数据保护。对分类为组g2的数据提供数据保护。

阵列20中的数据完整性保护是由子组实施。对分类为同一子组的数据提供数据保护。举例来说,对分类为子组g1a的数据提供数据保护。对分类为子组g1b的数据提供数据保护。对分类为子组g1c的数据提供数据保护。对分类为子组g1d的数据提供数据保护。

类似地,对分类为子组g2a的数据提供数据保护。对分类为子组g2b的数据提供数据保护。对分类为子组g2c的数据提供数据保护。对分类为子组g2d的数据提供数据保护。

在一些实施例中,分类为子组g1a的四个数据中的一者包含与子组g1a相关联的错误校正数据。在一些实施例中,分类为子组g1b的四个数据中的一者包含与子组g1b相关联的错误校正数据。在一些实施例中,分类为子组g1c的四个数据中的一者包含与子组g1c相关联的错误校正数据。在一些实施例中,分类为子组g1d的四个数据中的一者包含与子组g1d相关联的错误校正数据。

在一些实施例中,分类为子组g2a的四个数据中的一者包含与子组g2a相关联的错误校正数据。在一些实施例中,分类为子组g2b的四个数据中的一者包含与子组g2b相关联的错误校正数据。在一些实施例中,分类为子组g2c的四个数据中的一者包含与子组g2c相关联的错误校正数据。在一些实施例中,分类为子组g2d的四个数据中的一者包含与子组g2d相关联的错误校正数据。

分类为不同子组的数据不彼此相关联。分类为不同子组的数据彼此独立。

如果子组(例如,子组g1a)中的数据中的一者受损或失效,那么可根据同一子组中的其它数据重建置或重构建受损的数据。举例来说,如果存储单元16-1失效或受损,那么可根据子组g1a中的其它数据(例如,存储于连续存储区域16-3a、16-5a及16-7a中的数据)重建置或重构建存储于存储单元16-1的连续存储区域16-1a中的数据。可根据子组g1b中的其它数据(例如,存储于连续存储区域16-3b、16-6b及16-8b中的数据)重建置或重构建存储于存储单元16-1的连续存储区域16-1b中的数据。可根据子组g1c中的其它数据(例如,存储于连续存储区域16-4c、16-5c及16-8c中的数据)重建置或重构建存储于存储单元16-1的连续存储区域16-1c中的数据。可根据子组g1d中的其它数据(例如,存储于连续存储区域16-4d、16-6d及16-7d中的数据)重建置或重构建存储于存储单元16-1的连续存储区域16-1d中的数据。

参考图3,如果存储单元16-1失效或受损,那么数据重构建过程的工作负载由六个存储单元(即,存储单元16-3到16-8)分担。对于涉及数据重构建过程的每一存储单元,仅需要存取一半的存储区域。以存储单元16-3为例,在存储单元16-1的数据重构建过程期间仅需要存取存储区域16-3a及16-3b。类似地,如果观察存储单元16-4,那么在存储单元16-1的数据重构建过程期间仅需要存取存储单元16-4的存储区域16-4c及16-4d。

在图3中所展示的存储空间配置中,用于重建置失效存储单元的工作负载由阵列中的多个存储单元分担。由多个存储单元分担数据重构建过程的工作负载增加了阵列20内的存储单元中的每一者的寿命。另外,遵循如图3中所展示的存储空间配置,数据重构建过程的速度可相比于图2的速度增加多倍,这是因为更多存储单元参与数据重构建过程。具体来说,存储单元16-3到16-8中的每一者仅需要在数据重构建过程中提供其数据的50%,可预期,从存储单元16-3到16-8读取数据所花费的时间减少50%。数据重构建过程的速度随即加倍。

图4为说明根据本申请的一些实施例的存储空间配置的示意图。为简单起见,仅说明设备1的存储系统16中的存储单元16-1、16-2、16-3、16-4、16-5、16-6、16-7、16-8及16-9。

参考图4,存储单元16-1、16-2、16-3、16-4、16-5、16-6、16-7、16-8及16-9被分类为阵列30。存储单元16-1、16-2及16-3被进一步分类为子阵列30-1。存储单元16-4、16-5及16-6被进一步分类为子阵列30-2。存储单元16-7、16-8及16-9被进一步分类为子阵列30-3。

尽管图4中未标注,但存储单元16-1包含连续存储区域16-1a、16-1b及16-1c。存储单元16-2包含连续存储区域16-2a、16-2b及16-2c。存储单元16-3包含连续存储区域16-3a、16-3b及16-3c。存储单元16-4包含连续存储区域16-4a、16-4b及16-4c。存储单元16-5包含连续存储区域16-5a、16-5b及16-5c。存储单元16-6包含连续存储区域16-6a、16-6b及16-6c。存储单元16-7包含连续存储区域16-7a、16-7b及16-7c。存储单元16-8包含连续存储区域16-8a、16-8b及16-8c。存储单元16-9包含连续存储区域16-9a、16-9b及16-9c。亦可考虑到可将更多或更少存储区域分配于存储单元中的每一者中。

控制单元2可根据如图1中所展示的查找表8将数据存储到存储单元16-1到16-9中。对待存储到存储单元16-1到16-9中的数据分类,随后将其存储到存储单元16-1到16-9中。

阵列30中的数据完整性保护是由组实施。对分类为同一组的数据提供数据保护。举例来说,对分类为组g1的数据提供数据保护。对分类为组g2的数据提供数据保护。对分类为组g3的数据提供数据保护。

阵列30中的数据完整性保护是由子组实施。对分类为同一子组的数据提供数据保护。举例来说,对分类为子组g1a的数据提供数据保护。对分类为子组g1b的数据提供数据保护。对分类为子组g1c的数据提供数据保护。

对分类为子组g2a的数据提供数据保护。对分类为子组g2b的数据提供数据保护。对分类为子组g2c的数据提供数据保护。

类似地,对分类为子组g3a的数据提供数据保护。对分类为子组g3b的数据提供数据保护。对分类为子组g3c的数据提供数据保护。

在一些实施例中,分类为子组g1a的三个数据中的一者包含与子组g1a相关联的错误校正数据。在一些实施例中,分类为子组g1b的三个数据中的一者包含与子组g1b相关联的错误校正数据。在一些实施例中,分类为子组g1c的三个数据中的一者包含与子组g1c相关联的错误校正数据。

在一些实施例中,分类为子组g2a的三个数据中的一者包含与子组g2a相关联的错误校正数据。在一些实施例中,分类为子组g2b的三个数据中的一者包含与子组g2b相关联的错误校正数据。在一些实施例中,分类为子组g2c的三个数据中的一者包含与子组g2c相关联的错误校正数据。

在一些实施例中,分类为子组g3a的三个数据中的一者包含与子组g3a相关联的错误校正数据。在一些实施例中,分类为子组g3b的三个数据中的一者包含与子组g3b相关联的错误校正数据。在一些实施例中,分类为子组g3c的三个数据中的一者包含与子组g3c相关联的错误校正数据。

如果子组(例如,子组g1a)中的数据中的一者受损或失效,那么可根据同一子组中的其它数据重建置或重构建受损的数据。举例来说,如果存储单元16-1失效或受损,那么可根据子组g1a中的其它数据(例如,存储于连续存储区域16-4a及16-7a中的数据)重建置或重构建存储于存储单元16-1的连续存储区域16-1a中的数据。可根据子组g1b中的其它数据(例如,存储于连续存储区域16-6b及16-8b中的数据)重建置或重构建存储于存储单元16-1的连续存储区域16-1b中的数据。可根据子组g1c中的其它数据(例如,存储于连续存储区域16-5c及16-9c中的数据)重建置或重构建存储于存储单元16-1的连续存储区域16-1c中的数据。

在图4中所展示的存储空间配置中,当重建置子阵列内的存储单元的一个存储区域时,仅需要涉及来自其它两个子阵列中的每一者的一个存储单元。举例来说,当重建置存储于存储单元16-1的存储区域16-1a中的数据时,需要存取来自子阵列30-2的存储单元16-4及来自子阵列30-3的存储单元16-7,而不涉及子阵列30-2及30-3的剩余存储单元。类似地,当重建置存储于存储单元16-2的存储区域16-2a中的数据时,需要存取来自子阵列30-2的存储单元16-5及来自子阵列30-3的存储单元16-8,而不涉及子阵列30-2及30-3的剩余存储单元。

在图4中所展示的存储空间配置中,用于重建置子阵列内的失效存储单元的工作负载由属于其它子阵列的存储单元分担。由所有存储单元分担数据重构建过程的工作负载增加了阵列30内的存储单元中的每一者的寿命。另外,遵循如图4中所展示的数据分配机制,数据重构建过程的速度可相比于图2的速度增加多倍,这是因为更多存储单元并行地参与数据重构建过程。

具体来说,涉及数据重构建过程的存储单元中的每一者仅需要提供其数据的33%,可预期,从涉及的存储单元读取数据所花费的时间减少67%。数据重构建过程的速度随即增加三倍。

图4a为说明根据本发明的一些实施例的用于存储单元阵列的数据分配算法的示意图。为了平衡存储单元阵列内的数据重构建过程的工作负载,以特定方式布置待存储于阵列中的数据。

图4a展示三个矩阵35a、35b及35c,所述三个矩阵中的每一者为3阶矩阵(即,矩阵35a、35b及35c的尺寸为3×3)。矩阵35a被称作基本矩阵。矩阵35b及35c为3×3相互正交的拉丁方阵集合。n阶的拉丁方阵为填充有n个不同项的n×n矩阵,所述n个不同项中的每一者在矩阵的每一列及行中恰好出现一次。在后续段落中将解释“正交”及“正交拉丁方阵集合”的含义。

如图4a中所展示,矩阵35a包含三个阵列:a1={1,1,1}t、a2={2,2,2}t及a3={3,3,3}t。矩阵35b包含三个阵列:b1={1,2,3}t、b2={2,3,1}t及b3={3,1,2}t。矩阵35c包含三个阵列:c1={1,3,2}t、c2={2,1,3}t及c3={3,2,1}t

矩阵35a的阵列a1、a2及a3彼此正交,这是因为阵列a1、a2及a3符合以下等式:

即,阵列a1、a2及a3中的任两者的交集为空集合。类似地,矩阵35b的阵列b1、b2及b3彼此正交,且矩阵35c的阵列c1、c2及c3彼此正交。阵列b1、b2、b3、c1、c2及c3符合以下等式:

即,阵列b1、b2及b3中的任两者的交集为空集合,且阵列c1、c2及c3中的任两者的交集为空集合。

矩阵35b及35c为相互正交的拉丁方阵集合,那么阵列b1、b2、b3、c1、c2及c3符合以下等式:

bi∩cj={{1,2,3}中的一个元素}(4)

即,矩阵35b的一个阵列与矩阵35c的一个阵列的交集为一个元素。举例来说,阵列b1与阵列c1的交集为“1”,阵列b1与阵列c2的交集为“3”,且阵列b1与阵列c3的交集为“2”。

矩阵35a、35b及35c还符合以下等式:

ai∩bj={{1,2,3}中的一个元素}(5)

ai∩cj={{1,2,3}中的一个元素}(6)

即,矩阵35a的一个阵列与矩阵35b的一个阵列的交集为一个元素,且矩阵35a的一个阵列与矩阵35c的一个阵列的交集为一个元素。举例来说,阵列a1与阵列b1的交集为“1”,阵列a1与阵列b2的交集为“1”,且阵列a1与阵列b3的交集为“1”。类似地,阵列a2与阵列c1的交集为“2”,阵列a2与阵列c2的交集为“2”,且阵列a2与阵列c3的交集为“2”。

遵循上文所说明的规则,矩阵35a内的任何阵列与矩阵35b内的任何阵列的仅一个元素及矩阵35c内的任何阵列的仅一个元素相交。矩阵35b内的一个阵列与矩阵35a内的任何阵列的仅一个元素及矩阵35c内的任何阵列的仅一个元素相交。矩阵35c内的一个阵列与矩阵35a内的任何阵列的仅一个元素及矩阵35b内的任何阵列的仅一个元素相交。

参考图4a,基于矩阵35a、35b及35c布置存储单元的阵列30的数据保护组g1、g2及g3。遵循使用基础3×3矩阵及相互正交的拉丁方阵集合的分配机制,阵列30内的失效存储单元的重建置速度可增加多倍。在使用3阶相互正交的拉丁方阵集合的状况下,重建置速度可增加3倍。

亦可考虑到可利用高阶相互正交的拉丁方阵集合。举例来说,如果使用4阶相互正交的拉丁方阵集合,那么重建置速度可增加4倍,且如果使用5阶相互正交的拉丁方阵集合,那么重建置速度可增加5倍。

图5a为说明根据本申请的一些实施例的存储空间配置的示意图。根据图5a到图5j论述将拉丁方阵集合部署到较多存储单元中的方法。图5a展示矩阵36a、36b及36c。利用先前根据图4a所论述的阵列a1、a2及a3来扩展可根据本发明使用的存储单元的数目。

矩阵36a、36b及36c中的每一者包含基于如根据图4a所说明的相互正交的拉丁方阵集合原理而布置的若干阵列a1、a2及a3。将阵列a1、a2及a3的项填充到矩阵36a、36b及36c中。即,将项{1,1,1}t、{2,2,2}t及{3,3,3}t填充到矩阵36a、36b及36c中。

图5b为说明根据本申请的一些实施例的存储空间配置的示意图。在将阵列a1、a2及a3的项填充到矩阵36a、36b及36c中之后,可获得九种存储单元的数据分配组合。即,待存储于存储单元16-1到16-9中的数据可遵循如图5b中所展示的组合。矩阵36a、36b及36c还可被称作子阵列36a、36b及36c。

参考图5b,待存储于存储单元16-1到16-9中的数据被分类为三个数据保护组(在图5b中标注为数字“1”、“2”及“3”)。所述三个数据保护组将进一步分类成子组,所述子组将在后续段落中加以描述。

图5c为说明根据本申请的一些实施例的存储空间配置的示意图。

尽管图5c中未标注,但存储单元16-1包含连续存储区域16-1a、16-1b、16-1c、16-1d、16-1e、16-1f、16-1g、16-1h及16-1i。存储单元16-2包含连续存储区域16-2a、16-2b、16-2c、16-2d、16-2e、16-2f、16-2g、16-2h及16-2i。存储单元16-3包含连续存储区域16-3a、16-3b、16-3c、16-3d、16-3e、16-3f、16-3g、16-3h及16-3i。存储单元16-4包含连续存储区域16-4a、16-4b、16-4c、16-4d、16-4e、16-4f、16-4g、16-4h及16-4i。存储单元16-5包含连续存储区域16-5a、16-5b、16-5c、16-5d、16-5e、16-5f、16-5g、16-5h及16-5i。存储单元16-6包含连续存储区域16-6a、16-6b、16-6c、16-6d、16-6e、16-6f、16-6g、16-6h及16-6i。存储单元16-7包含连续存储区域16-7a、16-7b、16-7c、16-7d、16-7e、16-7f、16-7g、16-7h及16-7i。存储单元16-8包含连续存储区域16-8a、16-8b、16-8c、16-8d、16-8e、16-8f、16-8g、16-8h及16-8i。存储单元16-9包含连续存储区域16-9a、16-9b、16-9c、16-9d、16-9e、16-9f、16-9g、16-9h及16-9i。

参考图5c,数据保护组“1”被进一步分类成子组1a、1b、1c、1d、1e、1f、1g、1h及1i。数据保护组“2”被进一步分类成子组2a、2b、2c、2d、2e、2f、2g、2h及2i。数据保护组“3”被进一步分类成子组3a、3b、3c、3d、3e、3f、3g、3h及3i。

子阵列36a、36b及36c中的数据完整性保护是由子组实施。对分类为同一子组的数据提供数据保护。举例来说,对分类为子组1a的数据提供数据保护。对分类为子组1b的数据提供数据保护。对分类为子组1c的数据提供数据保护。对分类为子组1d的数据提供数据保护。对分类为子组1e的数据提供数据保护。对分类为子组1f的数据提供数据保护。对分类为子组1g的数据提供数据保护。对分类为子组1h的数据提供数据保护。对分类为子组1i的数据提供数据保护。

类似地,对分类为子组2a的数据提供数据保护。对分类为子组2b的数据提供数据保护。对分类为子组2c的数据提供数据保护。对分类为子组2d的数据提供数据保护。对分类为子组2e的数据提供数据保护。对分类为子组2f的数据提供数据保护。对分类为子组2g的数据提供数据保护。对分类为子组2h的数据提供数据保护。对分类为子组2i的数据提供数据保护。

另外,对分类为子组3a的数据提供数据保护。对分类为子组3b的数据提供数据保护。对分类为子组3c的数据提供数据保护。对分类为子组3d的数据提供数据保护。对分类为子组3e的数据提供数据保护。对分类为子组3f的数据提供数据保护。对分类为子组3g的数据提供数据保护。对分类为子组3h的数据提供数据保护。对分类为子组3i的数据提供数据保护。

在一些实施例中,分类为子组1a的三个数据中的一者包含与子组1a相关联的错误校正数据。在一些实施例中,分类为子组1b的三个数据中的一者包含与子组1b相关联的错误校正数据。在一些实施例中,分类为子组1c的三个数据中的一者包含与子组1c相关联的错误校正数据。在一些实施例中,分类为子组1d的三个数据中的一者包含与子组1d相关联的错误校正数据。在一些实施例中,分类为子组1e的三个数据中的一者包含与子组1e相关联的错误校正数据。在一些实施例中,分类为子组1f的三个数据中的一者包含与子组1f相关联的错误校正数据。在一些实施例中,分类为子组1g的三个数据中的一者包含与子组1g相关联的错误校正数据。在一些实施例中,分类为子组1h的三个数据中的一者包含与子组1h相关联的错误校正数据。在一些实施例中,分类为子组1i的三个数据中的一者包含与子组1i相关联的错误校正数据。

在一些实施例中,分类为子组2a的三个数据中的一者包含与子组2a相关联的错误校正数据。在一些实施例中,分类为子组2b的三个数据中的一者包含与子组2b相关联的错误校正数据。在一些实施例中,分类为子组2c的三个数据中的一者包含与子组2c相关联的错误校正数据。在一些实施例中,分类为子组2d的三个数据中的一者包含与子组2d相关联的错误校正数据。在一些实施例中,分类为子组2e的三个数据中的一者包含与子组2e相关联的错误校正数据。在一些实施例中,分类为子组2f的三个数据中的一者包含与子组2f相关联的错误校正数据。在一些实施例中,分类为子组2g的三个数据中的一者包含与子组2g相关联的错误校正数据。在一些实施例中,分类为子组2h的三个数据中的一者包含与子组2h相关联的错误校正数据。在一些实施例中,分类为子组2i的三个数据中的一者包含与子组2i相关联的错误校正数据。

在一些实施例中,分类为子组3a的三个数据中的一者包含与子组3a相关联的错误校正数据。在一些实施例中,分类为子组3b的三个数据中的一者包含与子组3b相关联的错误校正数据。在一些实施例中,分类为子组3c的三个数据中的一者包含与子组3c相关联的错误校正数据。在一些实施例中,分类为子组3d的三个数据中的一者包含与子组3d相关联的错误校正数据。在一些实施例中,分类为子组3e的三个数据中的一者包含与子组3e相关联的错误校正数据。在一些实施例中,分类为子组3f的三个数据中的一者包含与子组3f相关联的错误校正数据。在一些实施例中,分类为子组3g的三个数据中的一者包含与子组3g相关联的错误校正数据。在一些实施例中,分类为子组3h的三个数据中的一者包含与子组3h相关联的错误校正数据。在一些实施例中,分类为子组3i的三个数据中的一者包含与子组3i相关联的错误校正数据。

分类为不同子组的数据不彼此相关联。分类为不同子组的数据彼此独立。

如果子组(例如,子组1a)中的数据中的一者受损或失效,那么可根据同一子组中的其它数据重建置或重构建受损的数据。

举例来说,如果存储单元16-4失效或受损,那么可根据子组1a中的其它数据(例如,存储于连续存储区域16-1a及16-7a中的数据)重建置或重构建存储于存储单元16-4的连续存储区域16-4a中的数据。可根据子组1b中的其它数据(例如,存储于连续存储区域16-1b及16-7b中的数据)重建置或重构建存储于存储单元16-4的连续存储区域16-4b中的数据。可根据子组1c中的其它数据(例如,存储于连续存储区域16-1c及16-7c中的数据)重建置或重构建存储于存储单元16-4的连续存储区域16-4c中的数据。

可根据子组2d中的其它数据(例如,存储于连续存储区域16-2d及16-9d中的数据)重建置或重构建存储于存储单元16-4的连续存储区域16-4d中的数据。可根据子组2e中的其它数据(例如,存储于连续存储区域16-2e及16-9e中的数据)重建置或重构建存储于存储单元16-4的连续存储区域16-4e中的数据。可根据子组2f中的其它数据(例如,存储于连续存储区域16-2f及16-9f中的数据)重建置或重构建存储于存储单元16-4的连续存储区域16-4f中的数据。

可根据子组3g中的其它数据(例如,存储于连续存储区域16-3g及16-8g中的数据)重建置或重构建存储于存储单元16-4的连续存储区域16-4g中的数据。可根据子组3h中的其它数据(例如,存储于连续存储区域16-3h及16-8h中的数据)重建置或重构建存储于存储单元16-4的连续存储区域16-4h中的数据。可根据子组3i中的其它数据(例如,存储于连续存储区域16-3i及16-8i中的数据)重建置或重构建存储于存储单元16-4的连续存储区域16-4i中的数据。

参考图5c,在一个子阵列(例如,子阵列36b)的存储单元的存储区域(例如,存储区域16-4a)的重构建过程期间,仅需要涉及来自其它两个子阵列(例如,子阵列36a及36c)的两个存储单元(例如,存储单元16-1及16-7)。

图5d为说明根据本申请的一些实施例的存储空间配置的示意图。图5d展示矩阵37a、37b及37c。利用先前根据图4a所论述的阵列b1、b2及b3来扩展可根据本发明使用的存储单元的数目。

矩阵37a、37b及37c中的每一者包含基于如根据图4a所说明的相互正交的拉丁方阵集合原理而布置的若干阵列b1、b2及b3。将阵列b1、b2及b3的项填充到矩阵37a、37b及37c中。即,将项{1,2,3}t、{2,3,1}t及{3,1,2}t填充到矩阵37a、37b及37c中。

图5e为说明根据本申请的一些实施例的存储空间配置的示意图。在将阵列b1、b2及b3的项填充到矩阵37a、37b及37c中之后,可获得九种存储单元的数据分配组合。即,待存储于存储单元16-10到16-18中的数据可遵循如图5e中所展示的组合。矩阵37a、37b及37c还可被称作子阵列37a、37b及37c。

参考图5e,待存储于存储单元16-10到16-18中的数据被分类为三个数据保护组(在图5e中标注为数字“1”、“2”及“3”)。三个数据保护组将进一步分类成子组,所述子组将在后续段落中加以描述。

图5f为说明根据本申请的一些实施例的存储空间配置的示意图。

尽管图5f中未标注,但存储单元16-10包含连续存储区域16-10a、16-10b、16-10c、16-10d、16-10e、16-10f、16-10g、16-10h及16-10i。存储单元16-11包含连续存储区域16-11a、16-11b、16-11c、16-11d、16-11e、16-11f、16-11g、16-11h及16-11i。存储单元16-12包含连续存储区域16-12a、16-12b、16-12c、16-12d、16-12e、16-12f、16-12g、16-12h及16-12i。存储单元16-13包含连续存储区域16-13a、16-13b、16-13c、16-13d、16-13e、16-13f、16-13g、16-13h及16-13i。存储单元16-14包含连续存储区域16-14a、16-14b、16-14c、16-14d、16-14e、16-14f、16-14g、16-14h及16-14i。存储单元16-15包含连续存储区域16-15a、16-15b、16-15c、16-15d、16-15e、16-15f、16-15g、16-15h及16-15i。存储单元16-16包含连续存储区域16-16a、16-16b、16-16c、16-16d、16-16e、16-16f、16-16g、16-16h及16-16i。存储单元16-17包含连续存储区域16-17a、16-17b、16-17c、16-17d、16-17e、16-17f、16-17g、16-17h及16-17i。存储单元16-18包含连续存储区域16-18a、16-18b、16-18c、16-18d、16-18e、16-18f、16-18g、16-18h及16-18i。

参考图5f,数据保护组“1”被进一步分类成子组1a、1b、1c、1d、1e、1f、1g、1h及1i。数据保护组“2”被进一步分类成子组2a、2b、2c、2d、2e、2f、2g、2h及2i。数据保护组“3”被进一步分类成子组3a、3b、3c、3d、3e、3f、3g、3h及3i。

子阵列37a、37b及37c中的数据完整性保护是由子组实施。对分类为同一子组的数据提供数据保护。举例来说,对分类为子组1a的数据提供数据保护。对分类为子组1b的数据提供数据保护。对分类为子组1c的数据提供数据保护。对分类为子组1d的数据提供数据保护。对分类为子组1e的数据提供数据保护。对分类为子组1f的数据提供数据保护。对分类为子组1g的数据提供数据保护。对分类为子组1h的数据提供数据保护。对分类为子组1i的数据提供数据保护。

类似地,对分类为子组2a的数据提供数据保护。对分类为子组2b的数据提供数据保护。对分类为子组2c的数据提供数据保护。对分类为子组2d的数据提供数据保护。对分类为子组2e的数据提供数据保护。对分类为子组2f的数据提供数据保护。对分类为子组2g的数据提供数据保护。对分类为子组2h的数据提供数据保护。对分类为子组2i的数据提供数据保护。

另外,对分类为子组3a的数据提供数据保护。对分类为子组3b的数据提供数据保护。对分类为子组3c的数据提供数据保护。对分类为子组3d的数据提供数据保护。对分类为子组3e的数据提供数据保护。对分类为子组3f的数据提供数据保护。对分类为子组3g的数据提供数据保护。对分类为子组3h的数据提供数据保护。对分类为子组3i的数据提供数据保护。

在一些实施例中,分类为子组1a的三个数据中的一者包含与子组1a相关联的错误校正数据。在一些实施例中,分类为子组1b的三个数据中的一者包含与子组1b相关联的错误校正数据。在一些实施例中,分类为子组1c的三个数据中的一者包含与子组1c相关联的错误校正数据。在一些实施例中,分类为子组1d的三个数据中的一者包含与子组1d相关联的错误校正数据。在一些实施例中,分类为子组1e的三个数据中的一者包含与子组1e相关联的错误校正数据。在一些实施例中,分类为子组1f的三个数据中的一者包含与子组1f相关联的错误校正数据。在一些实施例中,分类为子组1g的三个数据中的一者包含与子组1g相关联的错误校正数据。在一些实施例中,分类为子组1h的三个数据中的一者包含与子组1h相关联的错误校正数据。在一些实施例中,分类为子组1i的三个数据中的一者包含与子组1i相关联的错误校正数据。

在一些实施例中,分类为子组2a的三个数据中的一者包含与子组2a相关联的错误校正数据。在一些实施例中,分类为子组2b的三个数据中的一者包含与子组2b相关联的错误校正数据。在一些实施例中,分类为子组2c的三个数据中的一者包含与子组2c相关联的错误校正数据。在一些实施例中,分类为子组2d的三个数据中的一者包含与子组2d相关联的错误校正数据。在一些实施例中,分类为子组2e的三个数据中的一者包含与子组2e相关联的错误校正数据。在一些实施例中,分类为子组2f的三个数据中的一者包含与子组2f相关联的错误校正数据。在一些实施例中,分类为子组2g的三个数据中的一者包含与子组2g相关联的错误校正数据。在一些实施例中,分类为子组2h的三个数据中的一者包含与子组2h相关联的错误校正数据。在一些实施例中,分类为子组2i的三个数据中的一者包含与子组2i相关联的错误校正数据。

在一些实施例中,分类为子组3a的三个数据中的一者包含与子组3a相关联的错误校正数据。在一些实施例中,分类为子组3b的三个数据中的一者包含与子组3b相关联的错误校正数据。在一些实施例中,分类为子组3c的三个数据中的一者包含与子组3c相关联的错误校正数据。在一些实施例中,分类为子组3d的三个数据中的一者包含与子组3d相关联的错误校正数据。在一些实施例中,分类为子组3e的三个数据中的一者包含与子组3e相关联的错误校正数据。在一些实施例中,分类为子组3f的三个数据中的一者包含与子组3f相关联的错误校正数据。在一些实施例中,分类为子组3g的三个数据中的一者包含与子组3g相关联的错误校正数据。在一些实施例中,分类为子组3h的三个数据中的一者包含与子组3h相关联的错误校正数据。在一些实施例中,分类为子组3i的三个数据中的一者包含与子组3i相关联的错误校正数据。

分类为不同子组的数据不彼此相关联。分类为不同子组的数据彼此独立。

如果子组(例如,子组1a)中的数据中的一者受损或失效,那么可根据同一子组中的其它数据重建置或重构建受损的数据。

举例来说,如果存储单元16-13失效或受损,那么可根据子组1a中的其它数据(例如,存储于连续存储区域16-10a及16-16a中的数据)重建置或重构建存储于存储单元16-13的连续存储区域16-13a中的数据。可根据子组2b中的其它数据(例如,存储于连续存储区域16-10b及16-16b中的数据)重建置或重构建存储于存储单元16-13的连续存储区域16-13b中的数据。可根据子组3c中的其它数据(例如,存储于连续存储区域16-10c及16-16c中的数据)重建置或重构建存储于存储单元16-13的连续存储区域16-13c中的数据。

可根据子组2d中的其它数据(例如,存储于连续存储区域16-11d及16-18d中的数据)重建置或重构建存储于存储单元16-13的连续存储区域16-13d中的数据。可根据子组3e中的其它数据(例如,存储于连续存储区域16-11e及16-18e中的数据)重建置或重构建存储于存储单元16-13的连续存储区域16-13e中的数据。可根据子组1f中的其它数据(例如,存储于连续存储区域16-11f及16-18f中的数据)重建置或重构建存储于存储单元16-13的连续存储区域16-13f中的数据。

可根据子组3g中的其它数据(例如,存储于连续存储区域16-12g及16-17g中的数据)重建置或重构建存储于存储单元16-13的连续存储区域16-13g中的数据。可根据子组1h中的其它数据(例如,存储于连续存储区域16-12h及16-17h中的数据)重建置或重构建存储于存储单元16-13的连续存储区域16-13h中的数据。可根据子组2i中的其它数据(例如,存储于连续存储区域16-12i及16-17i中的数据)重建置或重构建存储于存储单元16-13的连续存储区域16-13i中的数据。

参考图5f,在一个子阵列(例如,子阵列37b)的存储单元的存储区域(例如,存储区域16-13a)的重构建过程期间,仅需要涉及来自其它两个子阵列(例如,子阵列37a及37c)的两个存储单元(例如,存储单元16-10及16-16)。

图5g为说明根据本申请的一些实施例的存储空间配置的示意图。图5e展示矩阵38a、38b及38c。利用先前根据图4a所论述的阵列c1、c2及c3来扩展可根据本发明在阵列中使用的存储单元的数目。

矩阵38a、38b及38c中的每一者包含基于如根据图4a所说明的相互正交的拉丁方阵集合原理而布置的若干阵列c1、c2及c3。将阵列c1、c2及c3的项填充到矩阵38a、38b及38c中。即,将项{1,3,2}t、{2,1,3}t及{3,2,1}t填充到矩阵38a、38b及38c中。

图5h为说明根据本申请的一些实施例的存储空间配置的示意图。在将阵列c1、c2及c3的项填充到矩阵38a、38b及38c中之后,可获得九种存储单元的数据分配组合。即,待存储于存储单元16-19到16-27中的数据可遵循如图5h中所展示的组合。矩阵38a、38b及38c还可被称作子阵列38a、38b及38c。

参考图5h,待存储于存储单元16-19到16-27中的数据被分类为三个数据保护组(在图5h中标注为数字“1”、“2”及“3”)。三个数据保护组将进一步分类成子组,所述子组将在后续段落中加以描述。

图5i为说明根据本申请的一些实施例的存储空间配置的示意图。

尽管图5i中未标注,但存储单元16-19包含连续存储区域16-19a、16-19b、16-19c、16-19d、16-19e、16-19f、16-19g、16-19h及16-19i。存储单元16-20包含连续存储区域16-20a、16-20b、16-20c、16-20d、16-20e、16-20f、16-20g、16-20h及16-20i。存储单元16-21包含连续存储区域16-21a、16-21b、16-21c、16-21d、16-21e、16-21f、16-21g、16-21h及16-21i。存储单元16-22包含连续存储区域16-22a、16-22b、16-22c、16-22d、16-22e、16-22f、16-22g、16-22h及16-22i。存储单元16-23包含连续存储区域16-23a、16-23b、16-23c、16-23d、16-23e、16-23f、16-23g、16-23h及16-23i。存储单元16-24包含连续存储区域16-24a、16-24b、16-24c、16-24d、16-24e、16-24f、16-24g、16-24h及16-24i。存储单元16-25包含连续存储区域16-25a、16-25b、16-25c、16-25d、16-25e、16-25f、16-25g、16-25h及16-25i。存储单元16-26包含连续存储区域16-26a、16-26b、16-26c、16-26d、16-26e、16-26f、16-26g、16-26h及16-26i。存储单元16-27包含连续存储区域16-27a、16-27b、16-27c、16-27d、16-27e、16-27f、16-27g、16-27h及16-27i。

参考图5i,数据保护组“1”被进一步分类成子组1a、1b、1c、1d、1e、1f、1g、1h及1i。数据保护组“2”被进一步分类成子组2a、2b、2c、2d、2e、2f、2g、2h及2i。数据保护组“3”被进一步分类成子组3a、3b、3c、3d、3e、3f、3g、3h及3i。

子阵列38a、38b及38c中的数据完整性保护是由子组实施。对分类为同一子组的数据提供数据保护。举例来说,对分类为子组1a的数据提供数据保护。对分类为子组1b的数据提供数据保护。对分类为子组1c的数据提供数据保护。对分类为子组1d的数据提供数据保护。对分类为子组1e的数据提供数据保护。对分类为子组1f的数据提供数据保护。对分类为子组1g的数据提供数据保护。对分类为子组1h的数据提供数据保护。对分类为子组1i的数据提供数据保护。

类似地,对分类为子组2a的数据提供数据保护。对分类为子组2b的数据提供数据保护。对分类为子组2c的数据提供数据保护。对分类为子组2d的数据提供数据保护。对分类为子组2e的数据提供数据保护。对分类为子组2f的数据提供数据保护。对分类为子组2g的数据提供数据保护。对分类为子组2h的数据提供数据保护。对分类为子组2i的数据提供数据保护。

另外,对分类为子组3a的数据提供数据保护。对分类为子组3b的数据提供数据保护。对分类为子组3c的数据提供数据保护。对分类为子组3d的数据提供数据保护。对分类为子组3e的数据提供数据保护。对分类为子组3f的数据提供数据保护。对分类为子组3g的数据提供数据保护。对分类为子组3h的数据提供数据保护。对分类为子组3i的数据提供数据保护。

在一些实施例中,分类为子组1a的三个数据中的一者包含与子组1a相关联的错误校正数据。在一些实施例中,分类为子组1b的三个数据中的一者包含与子组1b相关联的错误校正数据。在一些实施例中,分类为子组1c的三个数据中的一者包含与子组1c相关联的错误校正数据。在一些实施例中,分类为子组1d的三个数据中的一者包含与子组1d相关联的错误校正数据。在一些实施例中,分类为子组1e的三个数据中的一者包含与子组1e相关联的错误校正数据。在一些实施例中,分类为子组1f的三个数据中的一者包含与子组1f相关联的错误校正数据。在一些实施例中,分类为子组1g的三个数据中的一者包含与子组1g相关联的错误校正数据。在一些实施例中,分类为子组1h的三个数据中的一者包含与子组1h相关联的错误校正数据。在一些实施例中,分类为子组1i的三个数据中的一者包含与子组1i相关联的错误校正数据。

在一些实施例中,分类为子组2a的三个数据中的一者包含与子组2a相关联的错误校正数据。在一些实施例中,分类为子组2b的三个数据中的一者包含与子组2b相关联的错误校正数据。在一些实施例中,分类为子组2c的三个数据中的一者包含与子组2c相关联的错误校正数据。在一些实施例中,分类为子组2d的三个数据中的一者包含与子组2d相关联的错误校正数据。在一些实施例中,分类为子组2e的三个数据中的一者包含与子组2e相关联的错误校正数据。在一些实施例中,分类为子组2f的三个数据中的一者包含与子组2f相关联的错误校正数据。在一些实施例中,分类为子组2g的三个数据中的一者包含与子组2g相关联的错误校正数据。在一些实施例中,分类为子组2h的三个数据中的一者包含与子组2h相关联的错误校正数据。在一些实施例中,分类为子组2i的三个数据中的一者包含与子组2i相关联的错误校正数据。

在一些实施例中,分类为子组3a的三个数据中的一者包含与子组3a相关联的错误校正数据。在一些实施例中,分类为子组3b的三个数据中的一者包含与子组3b相关联的错误校正数据。在一些实施例中,分类为子组3c的三个数据中的一者包含与子组3c相关联的错误校正数据。在一些实施例中,分类为子组3d的三个数据中的一者包含与子组3d相关联的错误校正数据。在一些实施例中,分类为子组3e的三个数据中的一者包含与子组3e相关联的错误校正数据。在一些实施例中,分类为子组3f的三个数据中的一者包含与子组3f相关联的错误校正数据。在一些实施例中,分类为子组3g的三个数据中的一者包含与子组3g相关联的错误校正数据。在一些实施例中,分类为子组3h的三个数据中的一者包含与子组3h相关联的错误校正数据。在一些实施例中,分类为子组3i的三个数据中的一者包含与子组3i相关联的错误校正数据。

分类为不同子组的数据不彼此相关联。分类为不同子组的数据彼此独立。

如果子组(例如,子组1a)中的数据中的一者受损或失效,那么可根据同一子组中的其它数据重建置或重构建受损的数据。

举例来说,如果存储单元16-22失效或受损,那么可根据子组1a中的其它数据(例如,存储于连续存储区域16-19a及16-25a中的数据)重建置或重构建存储于存储单元16-22的连续存储区域16-22a中的数据。可根据子组3b中的其它数据(例如,存储于连续存储区域16-19b及16-25b中的数据)重建置或重构建存储于存储单元16-22的连续存储区域16-22b中的数据。可根据子组2c中的其它数据(例如,存储于连续存储区域16-19c及16-25c中的数据)重建置或重构建存储于存储单元16-22的连续存储区域16-22c中的数据。

可根据子组2d中的其它数据(例如,存储于连续存储区域16-20d及16-27d中的数据)重建置或重构建存储于存储单元16-22的连续存储区域16-22d中的数据。可根据子组1e中的其它数据(例如,存储于连续存储区域16-20e及16-27e中的数据)重建置或重构建存储于存储单元16-22的连续存储区域16-22e中的数据。可根据子组3f中的其它数据(例如,存储于连续存储区域16-20f及16-27f中的数据)重建置或重构建存储于存储单元16-22的连续存储区域16-22f中的数据。

可根据子组3g中的其它数据(例如,存储于连续存储区域16-21g及16-26g中的数据)重建置或重构建存储于存储单元16-22的连续存储区域16-22g中的数据。可根据子组2h中的其它数据(例如,存储于连续存储区域16-21h及16-26h中的数据)重建置或重构建存储于存储单元16-22的连续存储区域16-22h中的数据。可根据子组1i中的其它数据(例如,存储于连续存储区域16-21i及16-26i中的数据)重建置或重构建存储于存储单元16-22的连续存储区域16-22i中的数据。

参考图5i,在一个子阵列(例如,子阵列38b)的存储单元的存储区域(例如,存储区域16-22a)的重构建过程期间,仅需要涉及来自其它两个子阵列(例如,子阵列38a及38c)的两个存储单元(例如,存储单元16-19及16-25)。

图5j为说明根据本申请的一些实施例的存储空间配置的示意图。先前论述的子阵列36a、36b、36c、37a、37b、37c、38a、38b及38c可经组合以形成较大的数据分配组合。

如图5j中所展示,子阵列36a、36b、36c、37a、37b、37c、38a、38b及38c的组合为多达27个存储单元(例如,存储单元16-1到16-27)提供数据分配组合。

所述27个存储单元中的数据完整性保护是由子组实施。对分类为同一子组的数据提供数据保护。举例来说,对分类为子组1a的数据提供数据保护。对分类为子组1b的数据提供数据保护。对分类为子组1c的数据提供数据保护。对分类为子组1d的数据提供数据保护。对分类为子组1e的数据提供数据保护。对分类为子组1f的数据提供数据保护。对分类为子组1g的数据提供数据保护。对分类为子组1h的数据提供数据保护。对分类为子组1i的数据提供数据保护。

类似地,对分类为子组2a的数据提供数据保护。对分类为子组2b的数据提供数据保护。对分类为子组2c的数据提供数据保护。对分类为子组2d的数据提供数据保护。对分类为子组2e的数据提供数据保护。对分类为子组2f的数据提供数据保护。对分类为子组2g的数据提供数据保护。对分类为子组2h的数据提供数据保护。对分类为子组2i的数据提供数据保护。

另外,对分类为子组3a的数据提供数据保护。对分类为子组3b的数据提供数据保护。对分类为子组3c的数据提供数据保护。对分类为子组3d的数据提供数据保护。对分类为子组3e的数据提供数据保护。对分类为子组3f的数据提供数据保护。对分类为子组3g的数据提供数据保护。对分类为子组3h的数据提供数据保护。对分类为子组3i的数据提供数据保护。

在一些实施例中,分类为子组1a的九个数据中的一者包含与子组1a相关联的错误校正数据。在一些实施例中,分类为子组1b的九个数据中的一者包含与子组1b相关联的错误校正数据。在一些实施例中,分类为子组1c的九个数据中的一者包含与子组1c相关联的错误校正数据。在一些实施例中,分类为子组1d的九个数据中的一者包含与子组1d相关联的错误校正数据。在一些实施例中,分类为子组1e的九个数据中的一者包含与子组1e相关联的错误校正数据。在一些实施例中,分类为子组1f的九个数据中的一者包含与子组1f相关联的错误校正数据。在一些实施例中,分类为子组1g的九个数据中的一者包含与子组1g相关联的错误校正数据。在一些实施例中,分类为子组1h的九个数据中的一者包含与子组1h相关联的错误校正数据。在一些实施例中,分类为子组1i的九个数据中的一者包含与子组1i相关联的错误校正数据。

在一些实施例中,分类为子组2a的九个数据中的一者包含与子组2a相关联的错误校正数据。在一些实施例中,分类为子组2b的九个数据中的一者包含与子组2b相关联的错误校正数据。在一些实施例中,分类为子组2c的九个数据中的一者包含与子组2c相关联的错误校正数据。在一些实施例中,分类为子组2d的九个数据中的一者包含与子组2d相关联的错误校正数据。在一些实施例中,分类为子组2e的九个数据中的一者包含与子组2e相关联的错误校正数据。在一些实施例中,分类为子组2f的九个数据中的一者包含与子组2f相关联的错误校正数据。在一些实施例中,分类为子组2g的九个数据中的一者包含与子组2g相关联的错误校正数据。在一些实施例中,分类为子组2h的九个数据中的一者包含与子组2h相关联的错误校正数据。在一些实施例中,分类为子组2i的九个数据中的一者包含与子组2i相关联的错误校正数据。

在一些实施例中,分类为子组3a的九个数据中的一者包含与子组3a相关联的错误校正数据。在一些实施例中,分类为子组3b的九个数据中的一者包含与子组3b相关联的错误校正数据。在一些实施例中,分类为子组3c的九个数据中的一者包含与子组3c相关联的错误校正数据。在一些实施例中,分类为子组3d的九个数据中的一者包含与子组3d相关联的错误校正数据。在一些实施例中,分类为子组3e的九个数据中的一者包含与子组3e相关联的错误校正数据。在一些实施例中,分类为子组3f的九个数据中的一者包含与子组3f相关联的错误校正数据。在一些实施例中,分类为子组3g的九个数据中的一者包含与子组3g相关联的错误校正数据。在一些实施例中,分类为子组3h的九个数据中的一者包含与子组3h相关联的错误校正数据。在一些实施例中,分类为子组3i的九个数据中的一者包含与子组3i相关联的错误校正数据。

分类为不同子组的数据不彼此相关联。分类为不同子组的数据彼此独立。

如果子组中的数据中的一者受损或失效,那么受损数据可根据同一子组中的其它数据重建置或重构建。举例来说,如果存储于存储单元16-1(例如,子组1a)的存储区域16-1a中的数据受损或失效,那么可根据存储于存储单元16-4、16-7、16-10、16-13、16-16、16-19、16-22及16-25的存储区域16-4a、16-7a、16-10a、16-13a、16-16a、16-19a、16-22a及16-25a中的数据重建置或重构建受损数据。

类似地,如果存储于存储单元16-2(例如,子组2c)的存储区域16-2c中的数据受损或失效,那么可根据存储于存储单元16-5、16-8、16-12、16-15、16-18、16-19、16-22及16-25的存储区域16-5c、16-8c、16-12c、16-15c、16-18c、16-19c、16-22c及16-25c中的数据重建置或重构建受损数据。

当需要重建置来自子阵列中的一者(例如,子阵列36b)的一个存储单元的存储区域(例如,存储区域16-6a)时,涉及各自来自子阵列36a、36c、37a、37b、37c、38a、38b及38c的一个存储区域(例如,存储区域16-3a、16-9a、16-12a、16-15a、16-18a、16-21a、16-24a及16-27a)。仅每一存储单元的1/3涉及数据重构建,且重建置速度与图2相比将为3倍。

使用如根据图5a到图5j所说明的方法,可针对不同数目个存储单元(包含范围介于n2个存储单元到n3个存储单元)获得不同数据分配机制。在一些实施例中,用于多达64个存储单元的数据分配机制可基于四阶(即,尺寸为4×4的矩阵)相互正交的拉丁方阵集合来获得,且重建置速度与图2比较将为4倍。在一些实施例中,用于多达125个存储单元的数据分配机制可基于五阶(即,尺寸为5×5的矩阵)相互正交的拉丁方阵集合来获得,且重建置速度与图2比较将为5倍。

在一些实施例中,用于总共n2个存储单元的数据分配机制可基于n阶(即,尺寸为n×n的矩阵)相互正交的拉丁方阵集合来获得,且重建置速度与图2比较将为n倍。

在一些实施例中,可通过使用阵列作为n阶(即,尺寸为n×n的矩阵)相互正交的拉丁方阵集合中的元素来获得总共n3个存储单元的数据分配机制,且重建置速度与图2比较将为n倍。

图6为说明根据本申请的一些实施例的存储空间配置的示意图。基于四阶(即,尺寸为4×4的矩阵)相互正交的拉丁方阵集合而导出数据分配机制。

将图6中所展示的存储空间配置应用于包含16个存储单元的阵列40。在图6中所展示的实施例中,阵列40的存储单元被分组成子阵列40-1、40-2、40-3及40-4。子阵列中的每一者包含四个存储单元,且存储单元中的每一者包含多个存储区域。在图6中所展示的实施例中,存储单元中的每一者包含四个存储区域。亦可考虑到,可将更多或更少存储区域分配于存储单元中的每一者中。

如图6中所展示,待存储于子阵列40-1、40-2、40-3及40-4的存储单元中的数据被分类成四个数据保护组“1”、“2”、“3”及“4”。数据保护组“1”被进一步分类成子组1a、1b、1c及1d。数据保护组“2”被进一步分类成子组2a、2b、2c及2d。数据保护组“3”被进一步分类成子组3a、3b、3c及3d。数据保护组“4”被进一步分类成子组4a、4b、4c及4d。

阵列40中的数据完整性保护是由子组实施。对分类为同一子组的数据提供数据保护。举例来说,对分类为子组1a的数据提供数据保护。对分类为子组1b的数据提供数据保护。对分类为子组1c的数据提供数据保护。对分类为子组1d的数据提供数据保护。

对分类为子组2a的数据提供数据保护。对分类为子组2b的数据提供数据保护。对分类为子组2c的数据提供数据保护。对分类为子组2d的数据提供数据保护。

类似地,对分类为子组3a的数据提供数据保护。对分类为子组3b的数据提供数据保护。对分类为子组3c的数据提供数据保护。对分类为子组3b的数据提供数据保护。对分类为子组3d的数据提供数据保护。

用于待存储于阵列40中的数据的数据完整性保护及重构建过程与先前根据图4、图5c、图5f及图5i所论述的那些数据完整性保护及重构建过程相同。

在一个子阵列的存储单元的存储区域的重构建过程期间,需要涉及来自其它三个子阵列的三个存储单元。参考图6,假定需要重建置存储于来自子阵列40-2的存储单元16-6的存储区域16-6a中的数据,那么使用存储于形成子阵列40-1、40-3及40-4的对应存储区域(例如,存储区域16-2a、16-6a、16-10a及16-14a)中的数据。可使用相同方式重构建存储于阵列40中的所有存储单元中的数据。

在图6中所展示的数据分配机制中,用于重建置子阵列内的失效存储单元的工作负载由属于其它子阵列的存储单元分担。由所有存储单元分担数据重构建过程的工作负载增加了阵列40内的存储单元中的每一者的寿命。另外,遵循如图6中所展示的数据分配机制,数据重构建过程的速度相比于图2的速度可增加四倍。

具体来说,参与数据重构建过程的存储单元中的每一者仅需要提供其数据的25%,可预期,从参与数据重构建过程的存储单元读取数据所花费的时间减少75%。举例来说,在存储单元16-6的数据重构建期间,存储单元16-2仅提供其数据的25%。类似地,存储单元16-10及16-14在存储单元16-6的数据重构建期间仅提供其数据的25%。阵列40的每一存储单元的数据重构建过程的速度随即相比于图2的速度增加四倍。

图6a为说明根据本申请的一些实施例的存储空间配置的示意图。基于四阶(即,尺寸为4×4的矩阵)相互正交的拉丁方阵集合而导出数据分配机制。不同于如图6中所展示的数据分配机制,每一子阵列中的存储单元的数目可不相同。

在图6a中所展示的实施例中,阵列42的存储单元被分组成子阵列42-1、42-2、42-3及42-4。子阵列42-1、42-2及42-3中的每一者包含四个存储单元,而子阵列42-4包含两个存储单元。存储单元中的每一者包含多个存储区域。在图6a中所展示的实施例中,存储单元中的每一者包含四个存储区域。亦可考虑到,可将更多或更少存储区域分配于存储单元中的每一者中。

用于待存储于阵列42中的数据的数据完整性保护及重构建过程与先前根据图4、图5c、图5f及图5i所论述的那些数据完整性保护及重构建过程相同。尽管阵列42中的存储单元的总数目减少,但阵列42的数据保护能力保持不变。另外,阵列42的每一存储单元的数据重构建过程的速度同样相比于图2的速度增加四倍。

图7为说明根据本申请的一些实施例的数据分配组合的示意图。阵列44包含被分组成子阵列44-1、44-2、44-3及44-4的16个存储单元。阵列44的数据分配组合与图6中所展示的数据分配组合相同,所述数据分配组合利用四阶正交拉丁方阵集合。

参考图7,存储于子阵列44-1的存储单元16-1、16-2、16-3及16-4中的数据为第一种类的错误校正数据(即,数据p1a、p1b、p1c、p1d、p2a、p2b、p2c、p2d、p3a、p3b、p3c、p3d、p4a、p4b、p4c及p4d)。存储于子阵列44-2的存储单元16-5、16-6、16-7及16-8中的数据为第二种类的错误校正数据(即,数据q1a、q1b、q1c、q1d、q2a、q2b、q2c、q2d、q3a、q3b、q3c、q3d、q4a、q4b、q4c及q4d)。子阵列44-3及44-4中的所有存储单元用以存储从外部装置(例如,图1中所展示的客户端主机14)接收到的用户数据或客户端数据(即,数据d1a、d1b、d1c、d1d、d2a、d2b、d2c、d2d、d3a、d3b、d3c、d3d、d4a、d4b、d4c及d4d)。

参考图7,存储于子阵列44-1中的数据为与存储于子阵列44-3及44-4中的客户端数据相关联的错误校正数据。

数据p1a为与客户端数据d1a相关联的错误校正数据。数据p1b为与客户端数据d1b相关联的错误校正数据。数据p1c为与客户端数据d1c相关联的错误校正数据。数据p1d为与客户端数据d1d相关联的错误校正数据。

数据p2a为与客户端数据d2a相关联的错误校正数据。数据p2b为与客户端数据d2b相关联的错误校正数据。数据p2c为与客户端数据d2c相关联的错误校正数据。数据p2d为与客户端数据d2d相关联的错误校正数据。

数据p3a为与客户端数据d3a相关联的错误校正数据。数据p3b为与客户端数据d3b相关联的错误校正数据。数据p3c为与客户端数据d3c相关联的错误校正数据。数据p3d为与客户端数据d3d相关联的错误校正数据。

数据p4a为与客户端数据d4a相关联的错误校正数据。数据p4b为与客户端数据d4b相关联的错误校正数据。数据p4c为与客户端数据d4c相关联的错误校正数据。数据p4d为与客户端数据d4d相关联的错误校正数据。

分类为不同子组的数据不彼此相关联。分类为不同子组的数据彼此独立。

参考图7,存储于子阵列44-2中的数据为与存储于子阵列44-3及44-4中的客户端数据相关联的错误校正数据。

数据q1a为与客户端数据d1a相关联的错误校正数据。数据q1b为与客户端数据d1b相关联的错误校正数据。数据q1c为与客户端数据d1c相关联的错误校正数据。数据q1d为与客户端数据d1d相关联的错误校正数据。

数据q2a为与客户端数据d2a相关联的错误校正数据。数据q2b为与客户端数据d2b相关联的错误校正数据。数据q2c为与客户端数据d2c相关联的错误校正数据。数据q2d为与客户端数据d2d相关联的错误校正数据。

数据q3a为与客户端数据d3a相关联的错误校正数据。数据q3b为与客户端数据d3b相关联的错误校正数据。数据q3c为与客户端数据d3c相关联的错误校正数据。数据q3d为与客户端数据d3d相关联的错误校正数据。

数据q4a为与客户端数据d4a相关联的错误校正数据。数据q4b为与客户端数据d4b相关联的错误校正数据。数据q4c为与客户端数据d4c相关联的错误校正数据。数据q4d为与客户端数据d4d相关联的错误校正数据。

可基于存储于子阵列44-1中的错误校正数据而重建置或重构建存储于子阵列44-3及44-4中的客户端数据。可基于存储于子阵列44-2中的错误校正数据而重建置或重构建存储于子阵列44-3及44-4中的客户端数据。可基于存储于子阵列44-1及44-2中的错误校正数据而重建置或重构建存储于子阵列44-3及44-4中的客户端数据。

第一种类的错误校正数据(例如,p)可由控制单元2产生。第一种类的错误校正数据可由控制单元2基于同一子组中的客户端数据而产生。第一种类的错误校正数据可由控制单元2基于第二种类的错误校正数据(例如,q)及同一子组中的客户端数据产生。

第二种类的错误校正数据(例如,q)可由控制单元2产生。第二种类的错误校正数据可由控制单元2基于同一子组中的客户端数据而产生。第二种类的错误校正数据可由控制单元2基于第一种类的错误校正数据(例如,p)及同一子组中的客户端数据产生。

错误校正数据p1a与错误校正数据q1a相关联。错误校正数据p1b与错误校正数据q1b相关联。错误校正数据p1c与错误校正数据q1c相关联。错误校正数据p1d与错误校正数据q1d相关联。

错误校正数据p2a与错误校正数据q2a相关联。错误校正数据p2b与错误校正数据q2b相关联。错误校正数据p2c与错误校正数据q2c相关联。错误校正数据p2d与错误校正数据q2d相关联。

错误校正数据p3a与错误校正数据q3a相关联。错误校正数据p3b与错误校正数据q3b相关联。错误校正数据p3c与错误校正数据q3c相关联。错误校正数据p3d与错误校正数据q3d相关联。

错误校正数据p4a与错误校正数据q4a相关联。错误校正数据p4b与错误校正数据q4b相关联。错误校正数据p4c与错误校正数据q4c相关联。错误校正数据p4d与错误校正数据q4d相关联。

使用两种类型的错误校正数据可增加阵列44内可容许的失效存储单元的数目。举例来说,如果在阵列中利用raid级别6(raid6)算法,那么即使两个存储单元同时失效或受损,存储于这两个受损存储单元中的数据也可成功恢复。然而,应注意,两个种类的错误校正数据型样占据子阵列44-1及44-2的所有存储单元。可利用阵列44的仅两个子阵列(即,子阵列44-3及44-4)来存储用户数据。阵列44的容量效率仅仅为50%。

图7a为说明根据本申请的一些实施例的数据分配组合的示意图。阵列46包含被分组成子阵列46-1、46-2、46-3及46-4的16个存储单元。存储单元16-1、16-2、16-3、16-4、16-5、16-6、16-7、16-8、16-9、16-10、16-11、16-12、16-13、16-14、16-15及16-16的数据分配组合与图6中所展示的数据分配组合相同,所述数据分配组合利用四阶正交拉丁方阵集合。阵列46进一步包含额外存储单元16-q。

子阵列46-1的所有存储单元用以存储第一种类的错误校正数据(即,数据p1a、p1b、p1c、p1d、p2a、p2b、p2c、p2d、p3a、p3b、p3c、p3d、p4a、p4b、p4c及p4d)。子阵列46-2、46-3及46-4的所有存储单元用以存储用户数据或客户端数据(即,数据d1a、d1b、d1c、d1d、d2a、d2b、d2c、d2d、d3a、d3b、d3c、d3d、d4a、d4b、d4c及d4d)。存储单元16-q用以存储第二种类的错误校正数据(即,数据q1234a、q1234b、q1234c及q1234d)。

如先前根据图7所论述,存储于子阵列46-1中的数据(例如,p1、p2、p3及p4)为与存储于子阵列46-2、46-3及46-4中的客户端数据(例如,d1、d2、d3及d4)相关联的错误校正数据。

存储于存储单元16-q中的数据为与存储于子阵列46-2、46-3及46-4中的客户端数据相关联的错误校正数据。参考图7a,错误校正数据型样q1234a为与存储于子阵列46-2、46-3及46-4中的客户端数据d1a、d2a、d3a及d4a相关联的错误校正数据。错误校正数据型样q1234b为与存储于子阵列46-2、46-3及46-4中的客户端数据d1b、d2b、d3b及d4b相关联的错误校正数据。错误校正数据型样q1234c为与存储于子阵列46-2、46-3及46-4中的客户端数据d1c、d2c、d3c及d4c相关联的错误校正数据。错误校正数据型样q1234d为与存储于子阵列46-2、46-3及46-4中的客户端数据d1d、d2d、d3d及d4d相关联的错误校正数据。

图7b为说明根据本发明的一些实施例的用以导出错误校正数据的方法的示意图。

错误校正数据q1234a可从子阵列44-2的错误校正数据q1a、q2a、q3a及q4a导出。错误校正数据q1234b可从子阵列44-2的错误校正数据q1b、q2b、q3b及q4b导出。错误校正数据q1234c可从子阵列44-2的错误校正数据q1c、q2c、q3c及q4c导出。错误校正数据q1234d可从子阵列44-2的错误校正数据q1d、q2d、q3d及q4d导出。

错误校正数据q1234a可从错误校正数据q1a、q2a、q3a及q4a的逻辑计算导出。错误校正数据q1234b可从错误校正数据q1b、q2b、q3b及q4b的逻辑计算导出。错误校正数据q1234c可从子阵列44-2的错误校正数据q1c、q2c、q3c及q4c的逻辑计算导出。错误校正数据q1234d可从错误校正数据q1d、q2d、q3d及q4d的逻辑计算导出。

用以产生错误校正数据q1234a、q1234b、q1234c及q1234d的逻辑计算包含但不限于“互斥或”计算。亦可考虑到,可利用其它逻辑计算以从q1、q2、q3及q4导出q1234。

使用图7a中所展示的数据分配机制,阵列46的容量效率相比于图7中所展示的阵列44的容量效率有所增加。具体来说,图7a的容量效率为70.5%(即,利用总共17个存储单元中的12个存储单元来存储用户数据)。使用图7a中所展示的数据分配机制,在仅一个存储单元失效或受损的情况下,数据重构建过程的速度可增加多达四倍。另外,由于阵列46包含两个种类的错误校正数据型样,因此阵列46可容许两个存储单元失效。

图8a为说明根据本申请的一些实施例的存储空间配置的示意图。图8a展示包含10个存储单元的阵列50。所述存储单元中的每一者包含三个存储分区55a、55b及55c。存储分区55a、55b及55c中的每一者包含多个存储区域。在一些实施例中,存储分区55a、55b以及55c中的每一者内的存储区域为逻辑上连续的。在一些实施例中,存储分区55a、55b及55c中的每一者内的存储区域为物理上连续的。

存储单元中的每一者的存储分区55a经指定以存储用户数据或客户端数据。存储单元中的每一者的存储分区55b经指定以存储错误校正数据或奇偶校验数据。存储单元中的每一者的存储分区55c为将用于数据重构建过程中以存储重建置数据的备用分区。

待存储于阵列50中的数据是以特定方式布置。如图8a中所展示,待存储于子阵列52-1、52-2及52-3中的数据遵循与先前根据图4所说明的方式相同的方式。即,子阵列52-1、52-2及52-3中的数据是基于三阶正交拉丁方阵集合而分配。亦可考虑到,可基于不同阶的正交拉丁方阵集合来分配子阵列52-1、52-2及52-3中的数据。

存储用户数据的子阵列52-1及52-2被分配于若干存储单元当中的存储分区55a中。存储错误校正数据或奇偶校验数据的子阵列52-3被分配于若干存储单元当中的存储分区55b中。子阵列52-4包含可用以存储重建置数据的三个备用存储区域,所述子阵列52-4被分配于存储单元的存储分区55c中。举例来说,可根据子阵列52-2的数据56-2及子阵列52-3的数据56-3重建置子阵列52-1的数据56-1。数据56-1的重建置版本将存储于子阵列52-4的备用存储区域56-4中。

图8b为说明根据本申请的一些实施例的存储空间配置的示意图。图8b展示如何在阵列50中分配子阵列54-1、54-2、54-3及54-4的第二组的方式。子阵列54-1被分配于邻近于用于存储子阵列52-2的那些存储单元的存储单元中,且子阵列54-2被分配成从邻近于用于存储子阵列54-1的那些存储单元的存储单元开始。用于存储错误校正数据型样的子阵列54-3被分配于邻近于用于存储子阵列54-2的那些存储单元的存储单元当中的存储分区55b中。子阵列54-4被分配于邻近于用于存储子阵列54-3的那些存储单元的存储单元中。

图8c为说明根据本申请的一些实施例的存储空间配置的示意图。图8c展示使用如根据图8a及图8b所说明的数据分配机构的数据分配组合。用户数据被分配于存储单元中的每一者的存储分区55a中,错误校正数据型样被分配于存储单元中的每一者的存储分区55b中,且备用存储区被分配于存储单元中的每一者的存储分区55c中。

如先前所提及,数据重构建过程包含将重建置数据写回到失效存储单元的步骤。图8c中的重建置数据散布于存储单元中的每一者上,且因此存储单元中的每一者可在将重建置数据写回到失效存储单元的步骤中同时提供重建置数据。通过将备用存储区域散布到存储单元中的每一者而非将备用存储区域分配于仅一个存储单元中(例如,旧版数据分配机制将所有备用存储区域分配于仅一个存储单元中),数据重构建过程的速度可进一步增加多倍。

除非上下文另外明确规定,否则如本文中所用,单数术语“一”及“所述”可包含多个指示物。在对一些实施例的描述中,设置“在”另一组件“上”或“上方”的组件可涵盖前一组件直接在后一组件上(例如,与后一组件物理接触)的情况以及一或多个介入组件位于前一组件与后一组件之间的情况。

如本文中所使用,术语“大体上”、“大致”及“约”用于描述及解释较小变化。当与事件或情形结合使用时,术语可指事件或情形明确发生的情况以及事件或情形极近似于发生的情况。举例来说,当结合数值使用时,所述术语可指小于或等于所述数值的±10%的变化范围,例如,小于或等于±5%、小于或等于±4%、小于或等于±3%、小于或等于±2%、小于或等于±1%、小于或等于±0.5%、小于或等于±0.1%或者小于或等于±0.05%的变化范围。举例来说,同等参考两个值的术语“约”或“大体上”可指两个值的比率处于0.9与1.1之间的范围内(包含0.9及1.1)。

另外,有时在本文中按范围格式呈现量、比率及其它数值。应理解,此类范围格式是为便利及简洁起见而使用,且应灵活地理解为不仅包含明确指定为范围限制的数值,且还包含涵盖于所述范围内的所有个别数值或子范围,如同明确指定每一数值及子范围一般。

虽然已参考本发明的特定实施例描述及说明本发明,但这些描述及说明并不限制本发明。所属领域的技术人员应理解,在不脱离如由所附权利要求书界定的本发明的真实精神及范围的情况下,可作出各种改变且可取代等效物。说明可不必按比例绘制。可存在并未特定说明的本发明的其它实施例。应将本说明书及图式视为说明性而非限制性的。可做出修改,以使特定情形、材料、物质组成、方法或过程适应于本发明的目标、精神及范围。所有此类修改打算在此处附加的权利要求书的范围内。虽然已参考按特定次序执行的特定操作来描述本文中所公开的方法,但应理解,在不脱离本发明的教示的情况下,可组合、再细分或重新定序这些操作以形成等效方法。因此,除非本文中特定地指示,否则操作的次序及分组并非本发明的限制。

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