使用故障存储设备的重建助手的制作方法

文档序号:21547922发布日期:2020-07-17 18:00阅读:124来源:国知局
使用故障存储设备的重建助手的制作方法



背景技术:

本公开涉及存储系统。在更具体的示例中,本公开涉及用于使用故障存储设备的一个或多个正在运行的计算资源和/或存储资源在存储系统中重组数据并重建故障存储设备的方法和系统。

具有多个存储设备的存储系统通常采用数据冗余技术(例如,独立磁盘冗余阵列(raid)镜像或奇偶校验、纠删码)来实现数据的重组和故障存储设备的重建。然而,用于故障存储设备的常规数据重组和重建过程可能导致系统性能显著劣化,因为系统中剩余的正在运行的存储设备可能需要用于重组丢失的数据,这可能需要大量的cpu时间以及存储系统互连器的带宽。

例如,当raid阵列中的存储设备已发生故障时,在常规系统中,故障存储设备被推出阵列,并且raid控制器(独立的或由主机cpu托管)向剩余的正在运行的存储设备发送附加命令以重组故障存储设备的丢失的数据。数据的重组通常由raid控制器使用异或(xor)或伽罗瓦域(gf)运算来执行。



技术实现要素:

本公开涉及用于使用故障存储设备的一个或多个正在运行的计算资源和/或存储资源在存储系统中重组数据并重建故障存储设备的方法和系统。

如上所述,与用于故障存储设备的常规数据重组和重建过程相关联的问题是,这些过程可能导致在数据恢复期间系统性能显著劣化。鉴于此,需要一种用于在存储系统中重组数据并重建故障存储设备的改进的方法。

如本文所公开的本公开的各种实施方案可使用故障存储设备的一个或多个正在运行的计算资源和/或存储资源在存储系统中重组数据并且/或者重建故障存储设备。在至少一些实施方案中,故障存储设备本身可通过以对等(p2p)方式与存储系统中的剩余的正在运行的存储设备通信来参与故障存储设备数据重组和/或重建过程。此外,在至少一些实施方案中,在执行设备重建时可考虑故障存储设备的实际故障机制。例如,在故障存储设备表现出仅部分介质故障的情况下,数据重组可限于在介质的仅故障部分上执行。

因此,本公开的一个或多个实施方案可提供多个技术特征和优点,包括但不限于以下中的一个或多个:

(1)通过使用故障存储设备的正在运行的计算资源和/或存储资源来重组故障存储设备的数据,改善了故障存储设备数据重组和/或重建过程期间的系统性能。

(2)在故障存储设备中的数据部分丢失的情况下,通过具体地针对介质的故障部分执行数据重组过程,改善了故障存储设备数据重组和/或重建过程期间的系统性能。在这些情况下,系统性能的劣化可与仅实际数据损失量成比例,而不是与故障存储设备的所有数据成比例。

本公开包括但不限于以下方面:

根据一个创新方面,一种方法包括:响应于在存储系统中检测到故障存储设备,在存储系统中的一个或多个正在运行的存储设备中定位数据和冗余信息,以用于重组故障存储设备的数据;向所述一个或多个正在运行的存储设备发布一个或多个对等命令,以从所述一个或多个正在运行的存储设备获得所述数据和所述冗余信息;以及基于从该一个或多个正在运行的存储设备获得的数据和冗余信息重组故障存储设备的数据,其中故障计算设备的正在运行的计算资源至少部分地执行定位、发布和重组中的一者或多者。

根据另一个创新方面,一种装置包括:一个或多个处理器;以及逻辑部件,该逻辑部件可由该一个或多个处理器执行,该逻辑部件被配置为执行操作,这些操作包括:响应于在存储系统中检测到故障存储设备,在存储系统中的一个或多个正在运行的存储设备中定位数据和冗余信息,以用于重组故障存储设备的数据;向所述一个或多个正在运行的存储设备发布一个或多个对等命令,以从所述一个或多个正在运行的存储设备获得所述数据和所述冗余信息;以及基于从该一个或多个正在运行的存储设备获得的数据和冗余信息重组故障存储设备的数据,其中故障计算设备的正在运行的计算资源至少部分地执行定位、发布和重组中的一者或多者。

根据又一个创新方面,一种装置包括:具有一个或多个处理器的控制器;以及耦接到控制器的存储阵列,该存储阵列包括多个存储设备,其中控制器和存储阵列被配置为执行操作,这些操作包括:由控制器检测存储阵列中的故障存储设备;由所述故障存储设备在所述存储阵列中的一个或多个正在运行的存储设备中定位数据和冗余信息,以用于重组所述故障存储设备的数据;由所述故障存储设备向所述一个或多个正在运行的存储设备发布一个或多个对等命令,以从所述一个或多个正在运行的存储设备获得所述数据和所述冗余信息;由所述故障存储设备基于从所述一个或多个正在运行的存储设备获得的所述数据和所述冗余信息重组所述故障存储设备的所述数据;以及由控制器将故障存储设备的重组数据写入到存储阵列中的一个或多个可用位置。

这些和其他具体实施可各自任选地包括以下特征中的一个或多个:该方法或操作还包括将故障存储设备的重组数据写入到存储系统中的一个或多个可用位置;故障存储设备的正在运行的计算资源为设备控制器;该一个或多个对等命令包括由故障存储设备发布和执行的读取命令;方法还包括在存储系统中限定条带,条带与故障存储设备的数据以及该一个或多个正在运行的存储设备中的数据和冗余信息相关联;方法或操作还包括识别故障存储设备的包含可恢复数据的介质区段,以及将可恢复数据从故障存储设备的介质区段中的第一位置复制到故障存储设备的介质区段中的第二位置;并且故障存储设备的介质区段为存储器单元。

这些方面中的一个或多个的其他实施方式包括对应的系统、装置和计算机程序,其被配置为执行编码在计算机存储设备上的方法的动作。应当理解,本公开中使用的语言主要是出于可读性和指导目的而选择的,并不限制本文公开的主题的范围。

附图说明

本文介绍的技术通过示例而非限制的方式在附图中示出,在附图中,相同的附图标记用于指相似的元件。

图1描绘了根据一个实施方案的包括主机和存储系统的示例性计算系统的框图。

图2描绘了根据一个实施方案的用于图1所示的存储系统的示例性系统控制器的框图。

图3描绘了根据一个实施方案的用于图1所示的存储系统的示例性设备控制器的框图。

图4描绘了根据一个实施方案的用于图1所示的存储系统的示例性方法的流程图,该方法用于使用故障存储设备的一个或多个正在运行的计算资源和/或存储资源经由对等通信重组故障存储设备的数据。

图5描绘了根据一个实施方案的用于图1所示的存储系统的示例性方法的流程图,该方法用于使用故障存储设备的一个或多个正在运行的计算资源和/或存储资源经由对等通信重建故障存储设备。

图6描绘了根据一个实施方案的用于图1所示的存储系统的示例性存储阵列的框图。

图7描绘了根据一个实施方案的用于图6所示的存储阵列的示例性方法的流程图,该方法用于使用故障存储设备的一个或多个正在运行的计算资源和/或存储资源经由对等通信重建故障存储设备。

图8描绘了根据一个实施方案的用于图1所示的计算系统的示例性方法的流程图,该方法用于根据分布式全局闪存转换层(ftl)数据管理方案来执行数据管理请求(例如,读取请求)。

具体实施方式

公开了新型数据处理技术,诸如但不限于用于使用故障存储设备的一个或多个正在运行的计算资源和/或存储资源在存储系统中重建故障存储设备的系统、设备和方法。虽然下面在各种情况下的特定系统架构的上下文中描述了这种技术,但是应当理解,系统和方法可应用于硬件的其他架构和组织。更具体地讲,应当注意,虽然参考某些实施方案进行了以下描述,但本公开可应用于实现已知或设想的数据冗余的任何存储系统。

图1描绘了根据一个实施方案的包括主机101和存储系统110的示例性计算系统100的框图。

主机101可以为任何合适的计算机设备或系统中的一者或多者,诸如服务器计算机、台式计算机、膝上型计算机、平板电脑、移动电话或能够向存储系统110提出请求的任何其他电子设备。在一些实施方案中,主机101可包括一个或多个处理器、一个或多个存储器设备以及用于向主机101添加功能的任何其他合适的部件。

主机101可通过网络诸如局域网(lan)、广域网(wan)、交换结构、有线或无线网络、专用或公共网络等通信地耦接到存储系统110。

主机101可执行向存储系统110提出存储请求(例如,读取、写入等)的一个或多个应用程序。在一些实施方案中,该一个或多个应用程序可以为在主机101上运行的专用软件应用程序,或者可另选地驻留在其他合适的计算设备上并且可由主机101远程执行。

存储系统110可包括系统控制器120和通过传输介质耦接到系统控制器的存储阵列130,该传输介质诸如基于以太网、无限带宽技术、pciexpress(pcie)、nvmexpressoverfabric(nvmeof)等的内部结构。如下文参考图2更详细地描述的,系统控制器120可包括一个或多个计算设备和/或软件(在本公开中统称为“逻辑部件”),该一个或多个计算设备和/或软件被配置为管理存储阵列130的操作并向该存储阵列提供外部接口(例如,用于与主机101通信)。例如,系统控制器120可协调并执行对存储阵列130的存储设备的各种操作,包括数据冗余和/或恢复、存储设备重建和/或垃圾收集。此外,在一些实施方案中,系统控制器120可协调主机101和存储阵列130之间的通信,包括将来自主机101的读取或写入请求转发到对应的存储设备(包括执行如下面进一步描述的任何必要的地址转换),以及在将数据返回到主机101之前,以逻辑方式(例如,可将区块组装成条带)从存储设备检索数据。在一些实施方案中,系统控制器120可以为nvmexpress(nvme)控制器。

在一些实施方案中,系统控制器120可在如下文参考图4、图5和图7所述针对故障存储设备执行数据构造和/或重建过程时,将其动作与计算机系统100中的其他部件诸如主机101和/或存储阵列130的动作协调。系统控制器120可使用例如如下文参考图8进一步所述的分布式全局闪存转换层(ftl)数据管理方案结合数据重组和/或重建过程来执行并协调这些动作。在一些实施方案中,系统控制器120可以不是如图1所示的单独部件,而是可以集成到主机101中或集成到存储设备140a、140b、…、140n中的一者或多者中。

存储阵列130可包括多个存储设备140a、140b、…、140n(每个存储设备在后文通常将各自称为存储设备140),这些存储设备中的每一者可包括具有合适特性的易失性或非易失性非暂态存储器设备,诸如闪存存储器(例如,固态驱动器(ssd))、持久性存储器(pm)和/或包括叠瓦式磁记录(smr)磁盘的硬盘介质、混合存储设备等。存储阵列130中的存储设备140a、140b、…、140n可通过传输介质诸如基于以太网、无限带宽技术、pcie、nvmeof等的内部结构彼此通信地耦接。

每个存储设备140包括设备控制器142和存储介质143。如下文参考图3更详细地描述的,设备控制器142可包括一个或多个计算设备和/或软件(在本公开中统称为“逻辑部件”),该一个或多个计算设备和/或软件被配置为管理存储介质143的操作并向相应的存储设备140提供外部接口。在一些实施方案中,如下文参考图4、图5和图7所述,这些操作可包括执行与存储阵列130中的其他存储设备的对等通信(例如,数据传输)。

存储介质143可包括一个或多个易失性或非易失性存储器介质,该一个或多个易失性或非易失性存储器介质包括一个或多个介质区段144,该一个或多个介质区段包括用于存储数据的存储介质的物理或逻辑部分,诸如管芯、磁盘、存储器单元、扇区和/或页面。在一些实施方案中,可将数据以区块的形式组织在每个存储设备140的存储介质143中,其中每个区块可由一个或多个块构成。此外,可使用合适的数据结构化方法诸如结构化日志将区块以条带的形式写入到存储阵列130中的存储设备140a、140b、…、140n。这在下文中参考图6进一步详细地示出和描述。

如下文参考图4、图5和图7所述,存储系统110可使用合适的冗余方案诸如raid或纠删码来配置,使得在存储设备140a、140b、…、140n中的一者或多者发生故障(在后文中称为故障存储设备140’)的情况下,可执行如下所述的数据重组和/或重建过程以从该一个或多个故障存储设备恢复数据。

在本公开中,“故障存储设备”可以指存储阵列中在任何方面不正常运行的任何存储设备,包括:(1)仍然可操作但可基于早期警告指示被视为“故障”的存储设备,以及(2)仅已部分发生故障的存储设备。例如,在一些实施方案中,故障存储设备可包括已部分或完全故障的一个或多个存储资源(例如,存储介质143)和保持至少部分地正在运行的(例如,能够执行其预期功能中的至少一些)一个或多个计算资源(例如,设备控制器142)。存储阵列中除故障存储设备之外的该一个或多个存储设备可称为“正在运行的存储设备”。

图2描绘了根据一个实施方案的用于图1所示的存储系统110的示例性系统控制器120的框图。如前所述,系统控制器120可用于管理存储阵列130的操作并向该存储阵列提供外部接口(例如,用于与主机101通信)。系统控制器120可在如下文参考图4、图5和图7所述针对故障存储设备执行数据重组和/或重建过程时,使用例如如下文参考图8所述的分布式全局ftl数据管理方案将其动作与计算机系统100中的其他部件诸如主机101和/或存储阵列130的动作协调。

如图2所示,除其他部件之外,系统控制器120可包括一个或多个接口205、处理器210、包含软件、固件和/或数据的存储器220,该存储器包括但不限于存储管理引擎222。总线250可用于通信地耦接系统控制器120的各种部件。应当理解,根椐配置,诸如组合元件的配置、在硬件和软件中实现元件的配置等,系统控制器120可包括另选的、附加的和/或更少的部件。

该一个或多个接口205可将系统控制器120通信地耦接到主机101和/或存储阵列130。该一个或多个接口205可包括但不限于使用一个或多个适当的通信协议与主机101和/或存储阵列130通信的输入/输出(i/o)接口电路。

可包括一个或多个处理单元的处理器210可用于执行存储器220中包含的各种软件程序的指令。处理器210可包括一个或多个处理单元和/或芯、可编程集成电路诸如专用集成电路(asic)或现场可编程门阵列(fpga),或它们的某种组合。处理器210可基于各种计算架构,包括复杂指令集计算机(cisc)架构、精简指令集计算机(risc)架构、或实现指令集组合的架构。应当理解,处理器210的其他配置是可能的。

可包括一个或多个非暂态存储设备的存储器220可存储由处理器210执行或以其他方式处理的软件程序、固件和/或数据。存储器220可包括,例如易失性存储器诸如一个或多个动态随机存取存储器(dram)设备、一个或多个静态随机存取存储器(sram)设备,非易失性存储器诸如电可擦除可编程只读存储器(eeprom)或闪存存储器设备,前述的组合和/或一些其他合适类型的数据存储介质。

包含在存储器220中的存储管理引擎222可包括例程和/或指令,这些例程和/或指令在由处理器210执行时可针对存储阵列130执行各种存储器管理操作中的一个或多个,包括与地址转换、数据恢复和重组、存储设备重建和/或垃圾收集相关的操作。

在一些实施方案中,存储管理引擎222可包括地址映射225,该地址映射包含由存储管理引擎222用于将结合从主机101接收的读取或写入请求接收的逻辑地址或名称空间转换成用于访问存储阵列130中的存储设备的物理地址的地址信息,如下文参考图4、图5和图7所述。在一些实施方案中,存储管理引擎222可包括条带映射227,该条带映射与将数据到存储阵列130中的条带的写入或读取结合使用,如下文参考图7所述。

在一些实施方案中,可采用一个或多个硬件逻辑模块230(诸如asic、fpga等)来代替存储器220中的软件和/或固件,或者作为其补充,以执行由存储管理引擎222、地址映射225和/或条带映射227提供的上述功能中的一种或多种。

图3描绘了根据一个实施方案的用于图1所示的存储系统110的示例性设备控制器142的框图。如前所述,设备控制器142可用于管理相应的存储设备140的操作并向该存储设备提供外部接口。

如图3所示,除其他部件之外,设备控制器142可包括一个或多个接口305、处理器310、包含软件、固件和/或数据的存储器320,该存储器包括介质管理引擎322、冗余编码奇偶校验引擎323和对等数据传输引擎324。总线350可用于通信地耦接设备控制器142的各种部件。应当理解,根椐配置,诸如组合元件的配置、在硬件和软件中实现元件的配置等,设备控制器142可包括另选的、附加的和/或更少的部件。

该一个或多个接口305可将设备控制器142通信地耦接到系统控制器120和/或存储阵列130中的其他存储设备。该一个或多个接口305可包括但不限于使用一个或多个适当的通信协议与系统控制器120和/或其他存储设备通信的输入/输出(i/o)接口电路。

可包括一个或多个处理单元的处理器310可用于执行存储器320中包含的各种软件程序的指令。处理器310可包括一个或多个处理单元和/或芯、可编程集成电路诸如专用集成电路(asic)或现场可编程门阵列(fpga),或它们的某种组合。处理器310可基于各种计算架构,包括复杂指令集计算机(cisc)架构、精简指令集计算机(risc)架构、或实现指令集组合的架构。应当理解,处理器310的其他配置是可能的。

可包括一个或多个非暂态存储设备的存储器320可存储由处理器310执行或以其他方式处理的软件程序、固件和/或数据。存储器320可包括,例如易失性存储器诸如一个或多个动态随机存取存储器(dram)设备、一个或多个静态随机存取存储器(sram)设备,非易失性存储器诸如电可擦除可编程只读(eeprom)或闪存存储器设备,前述的组合和/或一些其他合适类型的数据存储介质。

包含在存储器320中的介质管理引擎322可包括例程和/或指令,这些例程和/或指令在由处理器310执行时可针对存储介质143执行各种存储器管理操作中的一个或多个,包括与数据恢复和重组和/或设备级垃圾收集相关的操作。

包含在存储器320中的冗余编码奇偶校验引擎323可包括例程和/或指令,这些例程和/或指令在由处理器310执行时可针对存储介质143执行一个或多个数据冗余操作,包括生成并存储冗余信息(例如,奇偶校验块)。

包含在存储器320中的对等数据传输引擎324可包括例程和/或指令,这些例程和/或指令在由处理器310执行时可执行用于与存储阵列130中的其他存储设备进行对等通信的一个或多个动作,诸如发布和执行对等命令以及向其他存储设备传输数据或从其他存储设备传输数据,如下文参考图4、图5和图7所述。对等数据传输引擎324可以各种方式执行对等通信。例如,在一些实施方案中,对等数据传输引擎324可在完全发起方模式下操作,这使得存储设备能够连接、创建命令并将命令发送至其他存储设备。在一些其他实施方案中,主机101可在每个存储设备140中设置共享存储器区域,向源存储设备发送一个或多个命令以将源存储设备中的数据读取到共享存储器区域,然后使用直接存储器访问(dma)发起从共享存储器区域向目标存储设备的数据发送。

在一些实施方案中,可采用一个或多个硬件逻辑模块330(诸如asic、fpga等)来代替存储器320中的软件和/或固件,或者作为其补充,以执行由介质管理引擎322、冗余编码奇偶校验引擎323和/或对等数据传输引擎324提供的上述功能中的一种或多种。

图4描绘了根据一个实施方案的用于图1所示的存储系统110的示例性方法400的流程图,该方法用于使用故障存储设备140’的一个或多个正在运行的计算资源和/或存储资源经由对等通信(例如,数据传输)重组故障存储设备的数据。例如,在存储设备140的部分介质故障的情况下,可执行图4的数据重组方法。应当注意,在该示例中,框430和440可至少部分地由故障存储设备140’的正在运行的计算资源(例如,设备控制器142)执行。图4所示的剩余框可由存储系统110中的存储设备140(包括故障存储设备140’)、系统控制器120和主机101中的一者或多者或它们的某种组合例如根据如下文参考图8所述的分布式全局ftl数据管理方案来执行。

在框405中,可从主机101接收读取请求或其他命令。框405可在存储系统110的正常操作期间发生。

在框410中,可响应于接收到读取请求而在故障存储设备140’中检测到介质故障包括丢失的数据。在本公开中,丢失的数据可被视为由于存储介质143的一个或多个介质区段144发生故障而不可从存储设备正确地读取的数据,并且相反地,可恢复数据可被视为可从存储设备正确地读取的数据。

在一些实施方案中,在部分介质故障的情况下,框410可包括识别故障存储设备140’中的存储介质143的已发生故障的介质区段144(在下文中称为故障介质区段144'),该介质区段包含丢失的数据,以及故障存储设备的尚未发生故障的介质区段(在下文中称为正在运行的介质区段144”),该介质区段包含可恢复数据。在一些实施方案中,每个介质区段144可包括相应的存储设备140中用于存储数据的存储介质143的一个或多个物理或逻辑部分,诸如管芯、磁盘、存储器单元、扇区和/或页面。

在框420中,数据和冗余信息可位于存储系统110中的尚未发生故障的存储设备140a、140b、…、140n(在下文中称为正在运行的存储设备140”)中的一者或多者中,以用于重建故障存储设备140’的丢失的数据。在一些实施方案中,可使用如下文参考图8所述的分布式全局ftl数据管理方案在一个或多个正在运行的存储设备140”中定位数据和冗余信息。

在框430中,存储系统110中的故障存储设备140’可向存储系统110中的该一个或多个正在运行的存储设备140”发布一个或多个对等命令,以从该一个或多个正在运行的存储设备获得数据和冗余信息。在一些实施方案中,对等命令可以为读取命令。在一些实施方案中,对等命令可由相应的存储设备的设备控制器142中的对等数据传输引擎324发布和执行。

在框440中,存储系统110中的故障存储设备140’可基于从存储系统110中的该一个或多个正在运行的存储设备140”获得的数据和冗余信息重组故障存储设备140’的丢失的数据。在一些实施方案中,故障存储设备的丢失的数据可由存储设备的如上文参考图3所述的设备控制器142中的介质管理引擎322来重组。在一些实施方案中,丢失的数据可通过对数据和冗余信息适当地执行一个或多个xor或gf运算来重组,如本领域中所已知的。

在框450中,可将故障存储设备140’的重组的丢失的数据例如响应于来自主机的读取请求发送回主机101。在一些实施方案中,框450可根据如下文参考图8所述的分布式全局ftl数据管理方案来执行。

在框460中,可确定存储系统110中一个或多个可用存储位置的存在。如果确定存在可用存储位置,则方法可前进至框470。否则,数据重组可在该点结束,因为不存在用于存储重组的丢失的数据的可用存储位置。在一些实施方案中,该一个或多个可用位置可以为位于存储阵列630中的可用备用空间。

在框470中,可将故障存储设备140’的重组的丢失的数据写入到存储系统110中的在框460中识别的该一个或多个可用存储位置。在一些实施方案中,重组的丢失的数据被写入到的可用位置可位于存储系统110中的故障存储设备140’和/或正在运行的存储设备140”中。在一些实施方案中,框470可根据如下文参考图8所述的分布式全局ftl数据管理方案来执行。

在一些实施方案中,在部分介质故障的情况下,框470可包括将在框410中识别的可恢复数据从故障存储设备140’的正在运行的介质区段144”中的第一位置复制到故障存储设备的正在运行的介质区段中的第二位置。在一些实施方案中,可由发布xcopy命令的故障存储设备执行复制。

图5描绘了根据一个实施方案的用于图1所示的存储系统110的示例性方法500的流程图,该方法用于使用故障存储设备140’的一个或多个正在运行的计算资源和/或存储资源经由对等通信重建故障存储设备。方法500中的框可例如针对存储阵列130中的每个条带迭代地执行,直到故障存储设备140’的内容已被重建。应当注意,在该示例中,框530和540可至少部分地由故障存储设备140’的正在运行的计算资源(例如,设备控制器142)执行。图5所示的剩余框可由存储系统110中的存储设备140(包括故障存储设备140’)、系统控制器120和主机101中的一者或多者或它们的某种组合例如根据如下文参考图8所述的分布式全局ftl数据管理方案来执行。

在框510中,可在故障存储设备140’中检测介质故障。在一些实施方案中,框510可响应于在存储系统110的正常操作期间从系统控制器120接收的读取请求或其他命令来执行。

在框515中,可识别故障存储设备140’的要重组的一部分(例如,存储阵列130中条带的一个或多个块)。

在框520中,数据和冗余信息可位于存储系统110中的一个或多个正在运行的存储设备140”中,以用于重组故障存储设备140’的所识别部分的数据。

在框530中,存储系统110中的故障存储设备140’可向存储系统110中的该一个或多个正在运行的存储设备140”发布一个或多个对等命令,以从该一个或多个正在运行的存储设备获得数据和冗余信息。在一些实施方案中,对等命令可以为读取命令。在一些实施方案中,对等命令可由相应的存储设备的设备控制器142中的对等数据传输引擎324发布和执行。

在框540中,存储系统110中的故障存储设备140’可基于从存储系统110中的该一个或多个正在运行的存储设备140”获得的数据和冗余信息重组故障存储设备140’的所识别部分的数据。在一些实施方案中,故障存储设备的丢失的数据可由存储设备的如上文参考图3所述的设备控制器142中的介质管理引擎322来重组。在一些实施方案中,丢失的数据可通过对数据和冗余信息适当地执行一个或多个xor或gf运算来重组,如本领域中所已知的。

在框550中,可将故障存储设备140’的所识别部分的重组数据写入到存储系统110中的一个或多个可用存储位置。在一些实施方案中,重组的丢失的数据被写入到的可用位置可位于存储系统110中的故障存储设备140’和/或正在运行的存储设备140”中。

在框560中,确定是否已重组故障存储设备140’的所有部分。如果是这种情况,则重建过程已完成并且可结束。然而,如果情况并非如此,则框515至框550可迭代地重复,如刚刚针对故障存储设备140’的剩余部分所述,直到故障存储设备的内容已被重建。

图6描绘了根据一个实施方案的用于图1所示的存储系统110的示例性存储阵列630的框图。存储阵列630是图1所示的存储阵列130的实施方案,包括3+1配置的四个固态驱动器(ssd)640a、640b、640c和640d(在下文中也分别称为ssd1、ssd2、ssd3和ssd4)。虽然出于便于说明的目的,存储系统110在图6中被示出为具有四个ssd,但应当注意,在其他实施方案中,存储系统可以任何合适的量采用其他类型的存储设备,诸如硬盘介质或混合存储设备。

如图所示,存储阵列630中的ssd1、ssd2、ssd3和ssd4中的每一者可包含多个区块650,其中区块可包括一个或多个块655。可将存储阵列630中包含的多个区块650组织成一个或多个条带660。

条带660可包括存储阵列630中使用的数据冗余方案的一个或多个数据区块和一个或多个纠错(例如,奇偶校验)区块的适当的组合。如图6所示,条带660包括四个区块650,其中三个区块包含数据(用“d1”、“d2”和“d3”指示),并且一个区块包含奇偶校验信息(用“p”指示)。可使用合适的数据结构化方法诸如结构化日志将数据d1、d2和d3写入到条带660。在结构化日志数据组织中,可将随机写入的数据分组在一起并顺序地写入到条带660。

在下文将参考图7描述的用于重建故障存储设备的方法中,ssd2对应于“故障存储设备”,并且ssd1、ssd3和ssd4对应于“正在运行的存储设备”。

图7描绘了根据一个实施方案的用于图6所示的存储阵列630的示例性方法700的流程图,该方法用于使用故障存储设备ssd2的一个或多个正在运行的计算资源和/或存储资源经由对等通信重建故障存储设备。应当注意,图7所示的方法对应于如上文参考图5所述的应用于存储阵列630的方法。方法700中的框可例如针对存储阵列630中的每个条带迭代地执行,直到故障存储设备ssd2的内容已被重建。应当注意,在该示例中,框730和740可至少部分地由故障存储设备ssd2的正在运行的计算资源(例如,设备控制器142)执行。图7中的剩余块可由存储阵列630中的ssd(包括故障存储设备ssd2)、系统控制器120和主机101中的一者或多者或它们的某种组合例如根据如下文参考图8所述的分布式全局ftl数据管理方案来执行。

在图7所示的方法中,故障存储设备ssd2可被视为发起方设备,并且正在运行的存储设备ssd1、ssd3和ssd4可被视为目标设备。

在框710中,可在故障存储设备ssd2中检测介质故障。在一些实施方案中,可响应于在存储系统110的正常操作期间来自系统控制器120的读取请求执行框710。

在框715中,可识别ssd2中的条带660的要重组的数据区块d2。

在框720中,条带660中的数据区块d1和d3以及奇偶校验区块p可分别位于正在运行的存储设备ssd1、ssd3和ssd4中,以用于重建ssd2的数据区块d2。

在框730中,ssd2可向ssd1、ssd3和ssd4中的一者或多者发布一个或多个对等命令,以获得条带660中的数据区块d1和d3以及奇偶校验区块p。在一些实施方案中,对等命令可以为读取命令。在一些实施方案中,对等命令可由ssd2的设备控制器142中的对等数据传输引擎324发布和执行。

在框740中,ssd2可分别基于从ssd1、ssd3和ssd4获得的数据区块d1和d3以及奇偶校验区块p重组ssd2的数据区块d2。在一些实施方案中,数据区块d2可由ssd2的如上文参考图3所述的设备控制器142中的介质管理引擎322来重组。在一些实施方案中,数据区块d2可通过对数据区块d1和d3以及奇偶校验区块p适当地执行一个或多个xor或gf运算来重组,如本领域中已知的。

在框750中,ssd2的重组数据区块d2可被写入到存储阵列630中的一个或多个可用存储位置。在一些实施方案中,重组数据区块d2被写入到的该一个或多个可用位置可位于故障存储设备ssd2和/或正在运行的存储设备ssd1、ssd3和ssd4中。

在框760中,确定是否已重组故障存储设备ssd2的所有部分。如果是这种情况,则重建过程已完成并且可结束。然而,如果不是这种情况,则框715至框750可迭代地重复,如刚刚针对ssd2的剩余部分所述,直到ssd2的内容已被重建。

图8描绘了根据一个实施方案的用于图1所示的计算系统100的示例性方法800的流程图,该方法用于根据分布式全局闪存转换层(ftl)数据管理方案来执行数据管理请求(例如,读取请求)。在图8所示的示例中,方法800中的大多数框由系统控制器120执行,尽管在其他实施方案中,方法中的一个或多个框可由存储系统110中的其他设备(例如,主机101或存储设备140)执行。

在框810中,系统控制器120可从主机101接收数据管理请求(例如,读取请求)。

在框820中,系统控制器120可基于数据管理请求确定(例如,使用存储管理引擎222)存储系统110中的一个或多个存储设备140以及要由该一个或多个存储设备140执行的一个或多个数据管理操作。在一些实施方案中,为了确定该一个或多个存储设备140,系统控制器120从主机101接收输入逻辑地址,并且使用输入逻辑地址对地址映射225(该地址映射将逻辑地址映射到存储设备)进行索引,来识别该一个或多个存储设备140。在一些此类实施方案中,系统控制器120使用输入逻辑地址的至少一部分来识别该一个或多个存储设备140。

在框830中,系统控制器120可发起对应于数据管理请求的一个或多个数据管理操作的执行。在一些实施方案中,框830包括向该一个或多个存储设备140发送一个或多个数据管理命令以及发起一个或多个数据传输(在发送该一个或多个数据管理命令之前或之后)。该一个或多个数据传输可包括一个或多个操作,诸如用于在存储系统110中的相应的存储设备140的存储器缓冲器与主机101的存储器缓冲器之间传输数据的直接存储器访问(dma)操作,和/或存储系统110中的两个或更多个存储设备140之间的内部数据传输。在一些实施方案中,该一个或多个数据传输包括用于在存储系统110中的相应的存储设备140的存储器缓冲器与主机101的存储器缓冲器之间传输数据的dma操作,和/或存储系统110中的两个或更多个存储设备140之间的内部数据传输。

在框840中,在读取请求的情况下,系统控制器120基于地址映射225确定位于存储系统110中的相应的存储设备140中包含请求数据的一组块。在一些实施方案中,地址映射225将由读取请求(从主机101接收)识别的一个或多个全局逻辑地址映射到存储阵列130中的一个或多个存储设备140,并且任选地映射到每个此类存储设备中的一个或多个本地逻辑地址。本地逻辑地址由相应的存储设备140使用存储设备中的逻辑到物理映射机制映射到存储设备中的物理地址。在一些实施方案中,系统控制器120发起地址映射225的计算。在一些实施方案中,地址映射由系统控制器120外部的一个或多个设备计算。在一些实施方案中,地址映射225存储在/位于相应的存储设备140中。

在框850中,系统控制器120向相应的存储设备140发送一个或多个读取命令以对该组块执行读取操作。在一些实施方案中,系统控制器120使用预定义的命令转换过程将从主机101接收的读取请求转换成该一个或多个读取命令。

在框860中,相应的存储设备140的设备控制器142通过从相应的存储设备中的该组块读取对应的数据来响应该一个或多个读取命令。

在框870中,系统控制器120从相应的存储设备140接收结束通知,该结束通知指示发送到相应的存储设备的读取命令的执行已完成,并且所得的所读取的数据存储在相应的存储设备的设备控制器142的存储器缓冲器中。

在框880中,系统控制器120在接收到结束通知之后,使用dma操作发起数据传输以将所读取的数据传输(例如,发送)到发送读取请求的主机101。在一些实施方案中,框880包括系统控制器120向存储系统110中的相应的网络接口控制器(未示出)发送数据传输命令,以使用用以传输所读取的数据的dma或远程直接存储器存取(rdma)将所读取的数据从系统控制器120的存储器缓冲器传输到主机101的存储器缓冲器。

如上所述使用故障存储设备的一个或多个正在运行的计算资源和/或存储资源在存储系统中重组数据并重建故障存储设备的方法的一个或多个实施方案的优点包括但不限于以下中的一者或多者:

(1)通过使用故障存储设备的正在运行的计算资源和/或存储资源来重组故障存储设备的数据,改善了故障存储设备数据重组和/或重建过程期间的系统性能(并且缩短了完成故障存储设备数据重组和/或重建过程所需的时间)。这利用了故障存储设备的设备控制器在介质故障之后可能闲置的事实。

(2)通过考虑故障存储设备的实际故障机制,改善了故障存储设备数据重组和/或重建过程期间的系统性能(并且缩短了完成故障存储设备数据重组和/或重建过程所需的时间)。例如,在故障存储设备中的数据部分丢失的情况下,具体地针对介质的故障部分执行数据重组过程。因此在这些情况下,系统性能的劣化可与仅实际数据损失量成比例,而不是与故障存储设备的所有数据成比例。

上文描述了用于使用故障存储设备的一个或多个正在运行的计算资源和/或存储资源在存储系统中重组数据并重建故障存储设备的方法和系统。在以上描述中,出于解释的目的,阐述了许多具体细节。然而,将显而易见的是,可以在没有这些具体细节的任何给定子集的情况下实践所公开的技术。在其他情况下,结构和设备以框图形式示出。例如,在上文参考用户界面和特定硬件的一些实施方式中描述了所公开的技术。

本说明书中提到的“一个实施方案”或“实施方案”意味着结合实施方案描述的特定的特征、结构或特性被包括在所公开技术的至少一个实施方案或具体实施中。在本说明书中各处出现的短语“在一个实施方案中”不一定全是指同一实施方案或具体实施。

上文的详细描述的一些部分可根据对计算机存储器内的数据位的操作的过程和符号表示来呈现。过程一般可被认为是导致结果的自相一致的操作序列。操作可涉及物理量的物理操纵。这些量采取能够被存储、传输、组合、比较以及以其他方式操纵的电信号或磁信号的形式。这些信号可被称为位、值、元素、符号、字符、术语、数字等的形式。

这些和类似的术语可与适当的物理量相关联,并且可被认为是应用于这些量的标签。除非从先前的讨论中明显地另外明确说明,否则应当理解,在整个描述中,利用术语例如“处理”或“运算”或“计算”或“确定”或“显示”等的讨论可以指计算机系统或类似电子计算设备的动作和过程,该计算机系统或类似电子计算设备操纵表示为计算机系统寄存器和存储器中的物理(电子)量的数据,并且将该数据转换为类似地表示为计算机系统存储器或寄存器或其他这样的信息存储、传送或显示设备中的物理量的其他数据。

所公开的技术还可涉及用于执行本文操作的装置。该装置可以为所需目的而专门构造,或者其可包括由存储在计算机中的计算机程序选择性地激活或重新配置的通用计算机。这样的计算机程序可被存储在计算机可读存储介质中,例如但不限于任何类型的盘(包括软盘、光盘、cd-rom、和磁盘)、只读存储器(rom)、随机存取存储器(ram)、可擦除可编程只读存储器(eprom)、电可擦除可编程只读存储器(eeprom)、磁卡或光卡、闪速存储器(包括具有非易失性存储器的usb密钥)或适用于存储电子指令的任何类型的介质,各自耦接到计算机系统总线。

所公开的技术可采取完全硬件实现、完全软件实现或包含硬件和软件元素的实现的形式。在一些实施方式中,该技术以软件实现,该软件包括但不限于固件、常驻软件、微代码等。

此外,所公开的技术可采取可从非暂时性计算机可用或计算机可读介质访问的计算机程序产品的形式,该计算机可用或计算机可读介质提供程序代码以供计算机或任何指令执行系统使用或与其结合使用。出于该描述的目的,计算机可用或计算机可读介质可以是任何装置,该装置可包含、存储、传送、传播或传输程序以供指令执行系统、装置或设备使用或与其结合使用。

适用于存储和/或执行程序代码的计算系统或数据处理系统将包括直接或通过系统总线间接耦接到存储器元件的至少一个处理器(例如,硬件处理器)。存储器元件可包括在程序代码的实际执行期间采用的本地存储器、大容量存储装置、和高速缓存存储器,该高速缓存存储器提供至少一些程序代码的临时存储,以便减少在执行期间必须从大容量存储装置检索代码的次数。

输入/输出或i/o设备(包括但不限于键盘、显示器、指示设备等)可直接或通过中间i/o控制器耦接到系统。

网络适配器还可耦接到系统,以使得数据处理系统能够通过中间专用或公共网络耦接到其他数据处理系统或远程打印机或存储设备。调制解调器、电缆调制解调器和以太网卡只是当前可用类型的网络适配器中的少数几种。

术语存储介质、存储设备和数据块在通篇本公开中可互换使用,以指存储数据的物理介质。

最后,本文中呈现的过程和显示可能不固有地与任何特定计算机或其他装置相关。根据本文的教导,各种通用系统可与程序一起使用,或者构建更专用的装置以执行所需的方法操作可证明是方便的。从上面的描述中将显而易见的是各种这些系统所需的结构。另外,没有参考任何特定编程语言来描述所公开的技术。应当理解,可以使用各种编程语言来实现如本文所述的技术的教导。

已经出于说明和描述的目的呈现了对本发明技术和科技的实现的前述描述。它并非旨在是穷尽的或将本发明技术和科技限制为所公开的精确形式。根据以上教导内容,很多修改和变型都是可能的。意图是本发明技术和科技的范围不受该详细描述的限制。本发明技术和科技可以其他具体形式实现而不背离其精神或基本特征。同样,模块、例程、特征、属性、方法和其他方面的特定命名和划分不是强制性的或重要的,并且实现本发明技术和科技或其特征的机制可具有不同的名称、划分和/或格式。此外,本发明技术的模块、例程、特征、属性、方法和其他方面可被实现为软件、硬件、固件或三者的任何组合。此外,无论部件(其示例是模块)在何处被实现为软件,该部件都可被实现为独立程序,实现为较大程序的一部分,实现为多个单独的程序,实现为静态或动态链接库,实现为内核可加载模块,实现为设备驱动程序,并且/或者以现在或将来在计算机编程中已知的每种和任何其他方式实现。另外,本发明技术和科技绝不限于以任何特定编程语言或用于任何特定操作系统或环境的实现。因此,本发明技术和科技的公开内容旨在说明而非限制。

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