CN111913647B - 一种存储设备的磨损均衡方法、装置及相关设备 - Google Patents
一种存储设备的磨损均衡方法、装置及相关设备 Download PDFInfo
- Publication number
- CN111913647B CN111913647B CN201910382394.4A CN201910382394A CN111913647B CN 111913647 B CN111913647 B CN 111913647B CN 201910382394 A CN201910382394 A CN 201910382394A CN 111913647 B CN111913647 B CN 111913647B
- Authority
- CN
- China
- Prior art keywords
- storage
- address space
- free
- storage unit
- block
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0662—Virtualisation aspects
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本申请提供一种存储设备的磨损均衡方法、装置及相关设备。其中,该方法包括:存储控制器接收多个存储单元中的第一存储单元发送的故障信息,该故障信息指示第一存储单元的存储区中发生故障的存储块的地址;确定多个存储单元中空闲区容量最大的第二存储单元;将第一存储单元中故障存储块中的数据迁移到第二存储单元的空闲区的空闲存储块,并用空闲存储块替换所述故障存储块,其中存储控制器连接有多个存储单元,每个存储单元包括存储区和空闲区。上述方法能够在多个存储单元之间进行数据迁移,可以提升存储单元的使用寿命。
Description
技术领域
本发明涉及存储技术领域,尤其涉及一种存储设备的磨损均衡方法、装置及相关设备。
背景技术
随着多核技术的发展,计算机系统对内存的需求越来越高,包括容量、功耗、性能、可扩展性等多个方面。传统的动态随机存取存储器(dynamic random access memory,DRAM)内存由于受到漏电功耗等的约束,面对新的应用环境,其发展受到了限制。
新型非易失性存储(non-volatile memory,NVM)技术的出现,为内存系统的发展提供了一种新的解决思路。存储级内存(storage class memory,SCM)是性能介于DRAM和固态驱动器(solid state drive,SSD)之间的一个非易失性存储,其存取速度效能表现与DRAM一致,但又具有半导体产品的可靠性,且在无须擦除(erase)旧有资料的情况下直接写入,可以作为处理器与系统磁盘之间的桥梁。
SCM模块中存在空闲存储块,空闲存储块的容量用户不可见。当其它存储块出现不可修复的故障后,可以用空闲存储块代替故障存储块,并将故障存储块的数据迁移到空闲存储块上,以维持SCM模块的正常使用。
发明内容
本发明实施例公开了一种存储设备的磨损均衡方法、装置及相关设备,能够在存储设备的存储单元出现故障存储块后,利用存储设备中的其它存储单元的空闲存储块替换所述故障存储块,从而实现存储设备间的各存储单元之间的负载均衡,提升存储单元使用寿命。
第一方面,本申请提供一种存储设备的磨损均衡方法,由存储控制器执行,所述存储控制器连接有多个存储单元,每个存储单元包括存储区和空闲区,所述方法包括:存储控制器接收所述多个存储单元中的第一存储单元发送的故障信息,所述故障信息指示所述第一存储单元的存储区中发生故障的存储块的地址;存储控制器确定所述多个存储单元中空闲区容量最大的第二存储单元;存储控制器将所述第一存储单元中故障存储块中的数据迁移到所述第二存储单元的空闲区的空闲存储块,并用所述空闲存储块替换所述故障存储块。
在本申请实施例中,为了将多个存储单元中发生故障的存储单元的故障存储块中的数据迁移到空闲存储块中,存储控制器在接收到故障信息之后,确定多个存储单元中空闲区容量最大的存储单元,然后将故障存储块中的数据迁移到空闲区容量最大的存储单元的空闲存储块中,能够实现多个存储单元的空闲存储块的共享,数据可以在多个存储单元之间进行迁移,提升存储单元的使用寿命。
在一种可能的实现方式中,所述存储控制器包括映射表,所述映射表包括每个存储单元的固定地址空间与动态地址空间的映射关系,所述固定地址空间为每个存储单元提供给所述存储控制器使用的地址空间,所述动态地址空间包括可用地址空间和空闲地址空间,所述可用地址空间为所述存储区对应的物理地址,与所述固定地址空间对应,所述空闲地址空间为所述空闲区对应的物理地址,在所述映射表中,所述空闲地址空间没有对应的固定地址空间;所述用所述空闲存储块替换所述故障存储块包括:用所述空闲存储空间中所述空闲存储块的地址替换所述可用地址空间中所述故障存储块的地址。
在本申请实施例中,存储控制器通过维护一个全局的映射表,保存每个存储单元的固定地址与动态地址的映射关系,固定地址即是每个存储单元提供给存储控制器使用的地址,动态地址即是每个存储单元内部(包括存储区和空闲区)的存储块的物理地址,固定地址与存储区的存储块的物理地址一一对应。存储控制器根据维护的映射表以及地址映射关系,可以找到发生故障的故障存储块,以及接收迁移数据的空闲存储块,保证数据在不同存储单元之间准确的进行迁移,方便存储控制器对所有的存储单元进行统一的管理和维护。
在一种可能的实现方式中,在所述存储控制器启动时,所述存储控制器获取每个存储单元的所述可用地址空间和所述空闲地址空间,以形成所述映射表。
在本申请实施例中,存储控制器在启动时(即上电阶段)可以接收每个存储单元上报的可用地址空间和空闲地址空间,进而形成地址映射表,保证存储控制器能够更好的管理所有存储单元,在空闲存储块替换故障存储块后,能够根据映射表动态调整固定地址和动态地址的映射关系。
第二方面,本申请提供一种存储控制装置,包括:收发模块,用于接收多个存储单元中的第一存储单元发送的故障信息,所述故障信息指示所述第一存储单元的存储区中发生故障的存储块的地址;处理模块,用于确定所述多个存储单元中空闲区容量最大的第二存储单元;所述处理模块,还用于将所述第一存储单元中故障存储块中的数据迁移到所述第二存储单元的空闲区的空闲存储块,并用所述空闲存储块替换所述故障存储块。
在一种可能的实现方式中,所述存储控制装置还包括存储模块,用于存储映射表,所述映射表包括每个存储单元的固定地址空间与动态地址空间的映射关系,所述固定地址空间为每个存储单元提供给所述存储控制器使用的地址空间,所述动态地址空间包括可用地址空间和空闲地址空间,所述可用地址空间为所述存储区对应的物理地址,与所述固定地址空间对应,所述空闲地址空间为所述空闲区对应的物理地址,在所述映射表中,所述空闲地址空间没有对应的固定地址空间;所述处理模块,还用于将所述空闲区存储空间中所述空闲存储块的地址替换所述可用地址空间中所述故障存储块的地址。
在一种可能的实现方式中,在所述存储控制装置启动时,所述处理模块,还用于获取每个存储单元的所述可用地址空间和所述空闲地址空间,以形成所述映射表。
第三方面,本申请提供了一种存储控制器,所述存储控制器中烧录有指令,所述存储控制器执行所述指令以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的磨损均衡方法。
第四方面,本申请提供了一种存储控制器,所述存储控制器包括处理器和存储器,所述处理器和存储器通过内部总线相连,所述存储器中存储有指令,所述处理器调用所述存储器中的指令以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的磨损均衡方法。
第五方面,本申请提供了一种存储设备,所述存储设备包括处理器、存储控制器、及多个存储单元,所述存储控制器通过串行总线与所述处理器相连,通过PCIe接口与所述多个存储单元相连,所述存储控制器中烧录有指令,所述存储控制器执行所述指令以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的磨损均衡方法。
第六方面,本申请提供了一种存储设备,所述存储设备包括处理器、存储控制器、及多个存储单元,所述存储控制器通过串行总线与所述处理器相连,通过PCIe接口与所述多个存储单元相连,所述存储控制器包括处理器和存储器,所述存储控制器中的处理器和存储器通过内部总线相连,所述存储器中存储有指令,所述存储控制器中的处理器调用所述存储器中的指令以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的磨损均衡方法。
第七方面,本申请提供一种计算机存储介质,所述计算机存储介质存储有计算机程序,当该计算机程序被处理执行时,可以实现上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的磨损均衡方法中的存储控制器所执行的流程。
第八方面,本申请提供一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第一方面以及结合上述第一方面中的任意一种实现方式所提供的磨损均衡方法中的存储控制器所执行的流程。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种应用SCM的存储设备的示意图;
图2是本申请实施例提供的一种存储单元内部结构的示意图;
图3是本申请实施例提供的一种映射表示意图;
图4是本申请实施例提供的一种映射表更新示意图;
图5是本申请实施例提供的又一种存储设备的示意图;
图6是本申请实施例提供的一种存储设备的磨损均衡方法的流程示意图;
图7是本申请实施例提供的又一种存储单元内部结构的示意图;
图8是本申请实施例提供的又一种映射表示意图;
图9是本申请实施例提供的又一种映射表更新示意图;
图10是本申请实施例提供的一种存储控制装置的结构示意图;
图11是本申请实施例提供的一种存储控制器的结构示意图。
具体实施方式
下面结合附图对本申请实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。
首先,结合附图对本申请中所涉及的部分用语和相关技术进行解释说明,以便于本领域技术人员理解。
3D磁存储器(3D XPoint)作为一种SCM,与内存DRAM相比,具备数据掉电也不丢失特性;与传统SSD相比,不但读写速度更快,而且还支持字节级访问。3D XPoint包括为高性能和灵活性而设计的Apache Pass(AEP),AEP主要用于替代DRAM,支撑持久化内存应用。
集成型内存控制器(integrated memory controller,IMC)是一个数字电路,用于管理进出计算机主存储器的数据流,它可以是单独的芯片,或者集成到另一芯片中,例如作为微处理器的组成部分。IMC集成在中央处理器(central processing unit,CPU)上,通过并行总线上的内存语义接口与双倍速率内存(double data rate SDRAM,DDR)槽位相连接,该内存语义接口是不对外暴露的,不支持用户对其进行修改和扩展,SCM可以直接插在DDR槽位上,CPU可以直接通过访问内存的方式访问SCM。
缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)是由CCIX联盟开发的一组规范,支持更快的互联和缓存一致性,以便在异构多处理器系统中更快的访问内存。CCIX规范是建立在PCIe规范基础上的,CCIX的一致性协议只需要很少修改或者无需修改就可以通过PCIe链路传递。
非易失性双列直插式内存模块(non-volatile dual in memory module,NVDIMM)是一种用于计算机的随机存取存储器,非易失性存储器是即使断电也能保留其内容的存储器,例如意外断电、系统崩溃或正常关机,双列直插式表示该内存使用DIMM封装。NVDIMM在某些情况下可以改善应用程序的性能、数据安全性和系统崩溃恢复时间,增强了非易失性存储器的耐用性和可靠性。
CCIX或NVDIMM可以用作高速内存语义串行总线,存储控制器可以通过CCIX或NVDIMM上的内存语义接口与CPU连接,该内存语义接口是对外暴露的,允许用户对其进行修改和扩展,存储控制器通过PCIe接口与PCIe槽位连接,SCM需要插在PCIe槽位上,即CPU可以通过CCIX或NVDIMM上的内存语义接口、存储控制器和PCIe接口构建的通道逻辑访问SCM,其访问方式与访问内存的方式一致。
如图1所示,为应用SCM的一种存储设备的示意图。存储设备100包括CPU110和存储单元121-126,CPU110中集成了IMC111和IMC112。IMC通过总线上的内存语义接口与存储单元121-126连接,每个IMC下面分别连接三个存储单元,其中IMC111与存储单元121、存储单元122以及存储单元123连接,IMC112与存储单元124、存储单元125以及存储单元126连接。存储设备100接收应用程序(application,APP)200写入的数据,CPU110中的IMC111和IMC112将APP200写入的数据存储在存储单元121-126上,进行永久性存储。应理解,APP200可以是存储设备100中的应用程序,也可以是其它设备中的应用程序。进一步的,每个存储单元中都包括存储区130和空闲区140,IMC只将存储区130中的存储空间提供给用户使用,空闲区140的空间对于用户来说是不可见的。存储区130用来存储APP200对应的数据,当存储区130中的存储块发生不可修复的故障后,存储单元中的控制器会用空闲区140的存储块替换发生故障的存储块。
例如,参见图2,图2是存储单元126的内部结构示意图。如图2所示,存储单元126中包括控制器210和存储介质220。存储介质220中包括存储区221和空闲区222,存储区221中存在多个可用存储块,例如第一存储块、第二存储块等,空闲区222中存在多个空闲存储块,例如第一空闲存储块、第二空闲存储块等。控制器210中包括地址映射表211,该映射表211中存储有固定地址和动态地址的映射关系,固定地址是每个存储单元提供给CPU110使用的地址,即CPU110通过该固定地址可以找到相应的存储块,并在该存储块中写入数据或读出数据,动态地址是每个存储单元中每个存储块的实际物理地址,每个固定地址所对应的动态地址是可以变化的,例如当固定地址对应的动态地址所指示的存储块发生故障后,则可用空闲存储块的地址替换发生故障的存储块的地址。具体请参见图3所示的映射表211的示意图。如图3所示,该映射表211包括固定地址空间和动态地址空间,动态地址空间包括可用地址空间和空闲地址空间,固定地址空间所包括的每个固定地址与可用地址空间中的动态地址一一对应,例如第一固定地址对应第一存储地址、第二固定地址对应第二存储地址,由于空闲区222不提供给用户使用,所以空闲地址空间没有对应的固定地址空间。当存储单元126中的控制器210发现存储介质220中的第二存储块发生不可修复的故障后,控制器210将第二存储块中的数据迁移到第一空闲存储块,在完成数据迁移之后,控制器210还需要更新映射表。如图4所示,控制器210将映射表211中与第二固定地址对应的地址替换为第一空闲存储块的第一空闲地址,并将之前与第二固定地址对应的第二存储块的第二存储地址进行标记,以表示该地址对应的存储块是故障存储块,不能用于存储数据。需要说明的是,存储设备100中所有的存储单元,即存储单元121-126,都是连接在DDR槽位上的。
在上述场景中,在存储单元中的存储块发生故障后,只能用存储单元内的空闲存储块进行替换,而在存储单元内的空闲存储块用完后,则整个存储单元将会故障,无法继续使用。尤其是在交织(interleaved)场景下,CPU会将应用程序下发的数据同时写入多个存储单元,这样,在一个存储单元故障后,将导致整个存储设备的故障无法恢复。为了不使存储设备中其中一个存储单元出现故障,即为了实现整个存储设备的存储单元之间的数据均衡,本申请实施例利用存储设备中的其它存储单元的空闲存储块替换故障存储块,从而实现存储设备中的各存储单元之间的负载均衡,提升存储单元的使用寿命。
参见图5,为本申请实施例提供的另一种存储设备的示意图。如图5所示,存储设备500包括CPU510、存储控制器520和N个存储单元(531-53N),N为大于1的整数。CPU510通过串行总线上的内存语义接口与存储控制器520连接,存储控制器520通过PCIe接口与N个存储单元连接。应理解,与图1相比,并行总线与串行总线是不一样的,与IMC连接的并行总线上的内存语义接口是不对外暴露的,不支持用户对其进行修改和扩展,该内存语义接口直接可以与存储单元进行连接,而图5所示的串行总线上的内存语义接口是对外暴露的,允许用户对其进行修改和扩展,该内存语义接口不是直接与存储单元进行连接,而是与存储控制器520进行直接连接。控制器520对所有的存储单元,即存储单元531-53N进行统一的管理。每个存储单元中包括存储区540和空闲区550,存储区540中存在多个可用存储块,空闲区550中存在多个空闲存储块。存储控制器520只将存储区540中的存储空间提供给用户使用,空闲区550的空间对于用户来说是不可见的,当存储区540中的存储块发生不可修复的故障后,存储控制器520会选择空闲区550容量最大的存储单元中的空闲存储块替换发生故障的存储块。例如,存储单元531的存储区540中第一存储块发生不可修复的故障后,存储控制器520将存储单元531的第一存储块中的数据迁移到存储单元532中的第一空闲存储块中,并用存储单元532中的第一空闲存储块替换存储单元531中的第一存储块。需要说明的是,存储设备500中所有的存储单元,即存储单元531-53N,都是连接在PCIe槽位上的。
值得说明的是,上述内存语义总线可以是CCIX,或者是NVDIMM,上述存储控制器可以是一个独立芯片,通过串行总线上的内存语义接口与CPU连接,具体可以是现场可编程阵列(field-programmable gate array,FPGA),该FPGA是一种集成电路,可以由用户进行配置,也可以是其它可编程逻辑器件,存储控制器连接管理的存储单元可以是AEP,也可以是其它类型的SCM,本申请对此不作限定。
图6描述本申请实施例提供的对存储设备的各存储单元进行磨损均衡方法。如图6所示,该方法包括但不限于以下步骤:
S610:存储控制器520接收第一存储单元发送的故障信息。
具体地,当存储单元531-53N中的任一个存储单元的存储区540中的存储块出现不可修复的故障时,该存储单元会将发生故障的存储块的信息发送至存储控制器520。
进一步的,参见图7,图7是任意一个存储单元的内部结构示意图。如图7所示,每个存储单元700内部包括控制器710和存储介质720。存储介质720包括存储区730和空闲区740,存储区730中包含多个可用存储块,可用存储块的存储空间提供给用户,上层应用的数据可以存储至所述存储区730。所述上层应用可以为分布式数据库、高性能存储应用等。空闲区740中也包含多个空闲存储块,这部分空间不对外提供。当控制器710发现存储区730中的存储块存在不可修复的故障后,例如图7中第二存储块存在不可修复的故障,控制器710将向存储控制器520发送故障信息,该故障信息用于指示存储单元700的存储区中730发生故障的存储块的地址。
可以理解,存储单元700的控制器710中不再维护映射表,而是只负责监视存储介质720中是否存在故障存储块,并将其上报给存储控制器520,与图2中的控制器210执行的功能是不完全一致的。
在一种可能的实现方式中,所述存储控制器520包括映射表521,所述映射表521包括每个存储单元的固定地址空间与动态地址空间的映射关系,所述固定地址空间为每个存储单元提供给所述存储控制器使用的地址空间,所述动态地址空间包括可用地址空间和空闲地址空间,所述可用地址空间为所述存储区540对应的物理地址,与所述固定地址空间对应,所述空闲地址空间为所述空闲区550对应的物理地址,在所述映射表中,由于所述空闲区550不提供给用户使用,所以所述空闲地址空间没有对应的固定地址空间。
具体地,固定地址和动态地址的含义与图2所描述的一致。唯一的区别点是,在图2中,是由每个存储单元分别存储维护各自的映射表211,且映射表211中只包括固定地址空间和动态地址空间,而在图7所示的存储单元700中,存储单元700不再存储维护映射表,而且由存储控制器520统一维护一个全局映射表521,且在该映射表521中,除了固定地址空间和动态地址空间,还包括每个动态地址对应的存储单元的标识符。
进一步的,在该映射表521中,对于每一个存储单元的存储区540中的每一个存储块对应的存储单元动态地址,存在唯一一个固定地址与其对应,而对于每一个存储单元的空闲区550中的每一个存储块对应的存储单元动态地址,不存在任何一个固定地址与其对应。
示例性的,参见图8,图8是本申请提供的一种映射表521的示意图。如图8所示,该映射表包括固定地址空间、动态地址空间以及存储单元标识符,在动态地址空间中又包括可用地址空间和空闲地址空间,可用地址空间包括每个存储单元的存储区中的存储块的物理地址,空闲地址空间包括每个存储单元的空闲区的空闲存储块的物理地址。存储单元标识符用于唯一标识存储单元,根据该存储单元标识符,可以找到该存储单元对应的地址映射。具体地,该存储单元标识符的形式可以为DIMM_N,N为大于等于1的正整数,例如,存储单元标识符为DIMM_1,表示该存储单元标识符对应的存储单元为第一存储单元,若存储单元标识符为DIMM_4,表示该存储单元标识符对应的存储单元为第四存储单元。此外,可用地址空间与固定地址空间一一对应,空闲地址空间没有相应的固定地址空间与其对应。例如,DIMM_1中的第一存储地址对应第一固定地址,DIMM_1中的第二存储地址对应第二固定地址,DIMM_K中的第N存储地址对应第N固定地址,而从DIMM_1的第一空闲地址直到DIMM_K的第M空闲地址都没有固定地址相对应,K、N和M都是大于1的整数。
在一种可能的实现方式中,在所述控制器启动时,所述存储控制器520获取每个存储单元的所述可用地址空间和空闲地址空间,以形成所述映射表521。
具体地,固定地址是存储单元提供给CPU使用的地址,该地址可以在串行总线上传输,动态地址(包括可用地址和空闲地址)是存储单元内部的地址,固定地址和动态地址在存储单元531-53N插入到存储设备500中时就已经确定了,是不会改变的,例如,存储单元是AEP,当AEP插在存储设备的PCIe槽位上时,AEP中的动态地址与串行总线上传输的固定地址的就确定了。虽然固定地址和动态地址是确定的,但是它们之间的映射关系是可以动态变化的,例如当固定地址对应的动态地址所指示的存储块发生故障后,则可用空闲存储块的地址替换发生故障的存储块的地址。
进一步的,在初始化阶段,即存储设备500启动时,存储控制器520管理的所有存储单元531-53N将会向存储控制器520上报自身的地址空间,存储控制器520根据从串行总线上获取到的固定地址空间以及各个存储单元上报的地址空间,形成该映射表521。特别的,当存在新的存储单元与存储控制器520建立连接时,该新的存储单元在启动时,会自主上报其内部的地址空间,存储控制器520将会根据该新的存储单元上报的地址空间,对之前维护的映射表521进行更新和完善,将该新的存储单元上报的地址空间与固定地址空间的对应关系添加到映射表521中。
S620:存储控制器520确定空闲区550容量最大的第二存储单元。
具体地,存储控制器520在接收到第一存储单元发送的故障信息之后,存储控制器520将向所管理的所有存储单元531-53N发送空闲容量上报指令,各个存储单元中的控制器接收到该指令后,将本存储单元剩余的空闲存储块的数量发送给存储控制器520,存储控制器520对各个存储单元上报的剩余的空闲存储块的数量进行比较和筛选,可以找到剩余的空闲存储块的数量最多的第二存储单元。
可选的,各个存储单元中的控制器周期性的自主上报本存储单元剩余的空闲存储块的数量,存储控制器520在接收到第一存储单元发送的故障信息之后,存储控制器520对各个存储单元中的控制器最近一个周期上报的剩余的空闲存储块的数量进行比较和筛选,确定剩余的空闲存储块的数量最多的第二存储单元。应理解,上报周期可以根据需要进行设置,例如5秒,即各个存储单元每隔5秒上报一次,本申请对此不作限定。
S630:存储控制器520将第一存储单元中故障存储块中的数据迁移到第二存储单元的空闲区550的空闲存储块。
具体地,存储控制器520首先从第一存储单元的故障存储块中读出数据,存储控制器中存在缓存模块,将读出的数据进行缓存,然后将缓存模块中缓存的数据再写入到第二存储单元的空闲区550的空闲存储块中。
S640:存储控制器520用所述空闲存储块替换所述故障存储块。
具体地,存储控制器520在完成存储单元之间数据的迁移之后,需要更新映射表521,即在映射表521中,需要用第二存储单元的空闲区550中的空闲存储块的地址替换第一存储单元的存储区540中的故障存储块的地址。
示例性的,参见图9,图9是本申请提供的一种映射表521更新示意图。如图9所示,当第二固定地址对应的DIMM_1中的第二存储地址是故障存储块的地址,而第K存储单元是空闲区550容量最大的存储单元,存储控制器520将故障存储块的数据迁移到了第K存储单元的空闲区550的空闲存储块中,该空闲存储块的地址为DIMM_K中的第M空闲地址。存储控制器50将与第二固定地址对应的地址替换为DIMM_K中的第M空闲地址,将之前与第二固定地址对应的DIMM_1中的第二存储地址进行标记,以表示该地址对应的存储块是故障存储块,不能用于存储数据。
可以看出,存储控制器520通过维护全局映射表,能够在存储设备500的存储单元531-53N出现故障存储块后,利用存储设备500中的其它存储单元的空闲存储块替换所述故障存储块,从而实现存储设备500间的各存储单元之间的负载均衡,提升存储单元使用寿命。。
值得说明的是,当前存储单元(例如SCM模块)通常被设置为交织模式来提高带宽、增加通道数量,以实现对数据更快的读写。交织是一种多通道技术,例如3个SCM模块被设置为交织模式,那么上层写入的数据“123”则会分别存储到这3个SCM模块中,即数据“1”将会存储在第一SCM模块中,数据“2”将会存储在第二SCM模块中,数据“3”将会存储在第三SCM模块中,如果这3个SCM模块没有被设置为交织模式,那么数据“123”只会存储于这3个SCM模块中的一个SCM模块上。
可以理解,在交织模式下,一份数据是分布在不同的SCM模块上的,若某个SCM模块损坏了或者空闲存储块使用完毕,写入的数据就无法恢复,就会导致交织模式下的所有SCM模块都不可再用,因此,若对交织模式下的SCM模块的使用存在负载不均匀的情况下,就会使得某个SCM模块提前消耗完空闲存储块,导致交织模式下的所有SCM模块的使用寿命全部缩短。
可以看出,本申请通过设置存储控制器来统一管理所有的SCM模块,所有的SCM模块都可以设置为交织模式,存储控制器可以对交织模式下的所有SCM模块间的空闲存储块进行均衡管理,避免在负载不均匀的情况下,某个SCM模块的空闲存储块提前消耗完,保证所有SCM模块的空闲存储块能够均匀的被使用,提升交织模式下的SCM模块使用寿命。
上述详细阐述了本申请实施例的方法,为了便于更好的实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关设备。
参见图10,图10是本申请实施例提供的一种存储控制装置的结构示意图。如图10所示,存储控制装置100包括收发模块110和处理模块120。其中,
收发模块110,用于接收多个存储单元中的第一存储单元发送的故障信息,该故障信息指示第一存储单元的存储区中发生故障的存储块的地址。
处理模块120,用于确定该多个存储单元中空闲区容量最大的第二存储单元,以及将第一存储单元中故障存储块中的数据迁移到第二存储单元的空闲区的空闲存储块中,并用该空闲存储块替换该故障存储块。
在一种可能的实现中,所述存储控制装置100还包括存储模块130,用于存储映射表,所述映射表包括每个存储单元的固定地址空间与动态地址空间的映射关系,所述固定地址空间为每个存储单元提供给所述存储控制器使用的地址空间,所述动态地址空间包括可用地址空间和空闲地址空间,所述可用地址空间为所述存储区对应的物理地址,与所述固定地址空间对应,所述空闲地址空间为所述空闲区对应的物理地址,在所述映射表中,所述空闲地址空间没有对应的固定地址空间;所述处理模块120,还用于将所述空闲区存储空间中所述空闲存储块的地址替换所述可用地址空间中所述故障存储块的地址。
在一种可能的实现中,在所述存储控制装置100启动时,所述处理模块120还用于获取每个存储单元的所述可用地址空间和所述空闲地址空间,以形成所述映射表。
应理解,上述存储控制装置的结构以及针对故障存储块的处理过程仅仅作为一种示例,不应构成具体限定,可以根据需要对存储控制装置中的各个模块进行增加、减少或合并。此外,存储控制装置中的各个模块的操作和/或功能分别为了实现上述图6所描述的方法的相应流程的,为了简洁,在此不再赘述。
参见图11,图11是本申请实施例提供的一种存储控制器520的结构示意图。如图11所示,存储控制器520包括:处理器521、通信接口522以及存储器523,所示处理器521、通信接口522以及存储器523通过内部总线524相互连接。
应理解,收发模块110所实现的功能可以由通信接口522具体实现,处理模块120所实现的功能可以由处理器521具体实现,存储模块130所实现的功能可以由存储器523具体实现。
存储器523可以用于存储程序代码和数据,以便于处理器521调用存储器523中存储的程序代码和数据以实现上述收发模块110和/或处理模块120的功能。处理器521可以调用存储器523中存储的程序代码和数据以实现上述图6所描述的方法的相应流程。具体地,处理器521用于读取存储器523中的相关指令执行以下操作:
处理器521控制通信接口522接收多个存储单元中的第一存储单元发送的故障信息,上述故障指示信息指示所述第一存储单元的存储区中发生故障的存储块的地址;
处理器521确定多个存储单元中空闲区容量最大的第二存储单元;
处理器521将第一存储单元中故障存储块中的数据迁移到第二存储单元的空闲区的空闲存储块,并用所述空闲存储块替换所述故障存储块。
需要说明的是,存储控制器520可以是单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等,此外,存储控制器可能包含相比于图11展示的更多或者更少的组件,或者有不同的组件配置方式。
应理解,上述图11所示的存储控制器针对故障存储块的处理过程可以参照上述图1至图9的相关描述,为了简洁,在此不再赘述。
本申请还提供一种存储控制器520,其中,所述存储控制器520中烧录有指令,所述存储控制器520执行所述指令以实现上述方法实施例中记载的任意一种的部分或全部步骤。
本申请还提供一种计算机存储介质,其中,所述计算机存储介质存储有计算机程序,当该计算机程序被处理器执行时,可以实现上述方法实施例中记载的任意一种的部分或全部步骤。
本发明实施例还提供一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行任意一种存储设备的磨损均衡方法的部分或全部步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
Claims (10)
1.一种存储设备的磨损均衡方法,由存储控制器执行,其特征在于,所述存储控制器连接有多个存储单元,每个存储单元包括存储区和空闲区,所述方法包括:
接收所述多个存储单元中的第一存储单元发送的故障信息,所述故障信息指示所述第一存储单元的存储区中发生故障的存储块的地址;
确定所述多个存储单元中空闲区容量最大的第二存储单元;
将所述第一存储单元中故障存储块中的数据迁移到所述第二存储单元的空闲区的空闲存储块,并用所述空闲存储块替换所述故障存储块,其中,所述空闲存储块的容量是对用户不可见的。
2.如权利要求1所述的方法,其特征在于,所述存储控制器包括映射表,所述映射表包括每个存储单元的固定地址空间与动态地址空间的映射关系,所述固定地址空间为每个存储单元提供给所述存储控制器使用的地址空间,所述动态地址空间包括可用地址空间和空闲地址空间,所述可用地址空间为所述存储区对应的物理地址,与所述固定地址空间对应,所述空闲地址空间为所述空闲区对应的物理地址,在所述映射表中,所述空闲地址空间没有对应的固定地址空间;
所述用所述空闲存储块替换所述故障存储块包括:
用所述空闲存储空间中所述空闲存储块的地址替换所述可用地址空间中所述故障存储块的地址。
3.如权利要求2所述的方法,其特征在于,在所述存储控制器启动时,所述存储控制器获取每个存储单元的所述可用地址空间和所述空闲地址空间,以形成所述映射表。
4.一种存储控制装置,其特征在于,包括:
收发模块,用于接收多个存储单元中的第一存储单元发送的故障信息,所述故障信息指示所述第一存储单元的存储区中发生故障的存储块的地址;
处理模块,用于确定所述多个存储单元中空闲区容量最大的第二存储单元;
所述处理模块,还用于将所述第一存储单元中故障存储块中的数据迁移到所述第二存储单元的空闲区的空闲存储块,并用所述空闲存储块替换所述故障存储块,其中,所述空闲存储块的容量是对用户不可见的。
5.如权利要求4所述的存储控制装置,其特征在于,所述存储控制装置还包括存储模块,用于存储映射表,所述映射表包括每个存储单元的固定地址空间与动态地址空间的映射关系,所述固定地址空间为每个存储单元提供给所述存储控制装置使用的地址空间,所述动态地址空间包括可用地址空间和空闲地址空间,所述可用地址空间为所述存储区对应的物理地址,与所述固定地址空间对应,所述空闲地址空间为所述空闲区对应的物理地址,在所述映射表中,所述空闲地址空间没有对应的固定地址空间;
所述处理模块,还用于将所述空闲区存储空间中所述空闲存储块的地址替换所述可用地址空间中所述故障存储块的地址。
6.如权利要求5所述的存储控制装置,其特征在于,在所述存储控制装置启动时,所述处理模块,还用于获取每个存储单元的所述可用地址空间和所述空闲地址空间,以形成所述映射表。
7.一种存储控制器,其特征在于,所述存储控制器中烧录有指令,所述存储控制器执行所述指令以执行如权利要求1至3任一项所述的方法。
8.一种存储设备,其特征在于,包括处理器、存储控制器、及多个存储单元,所述存储控制器通过串行总线与所述处理器相连,通过PCIe接口与所述多个存储单元相连,所述存储控制器中烧录有指令,所述存储控制器执行所述指令以执行如权利要求1至3任一项所述的方法。
9.一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,当所述计算机程序被处理器执行时实现权利要求1至3任一项所述的方法。
10.一种计算机程序产品,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行权利要求1至3任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910382394.4A CN111913647B (zh) | 2019-05-08 | 2019-05-08 | 一种存储设备的磨损均衡方法、装置及相关设备 |
PCT/CN2020/089218 WO2020224646A1 (zh) | 2019-05-08 | 2020-05-08 | 一种存储设备的磨损均衡方法、装置及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910382394.4A CN111913647B (zh) | 2019-05-08 | 2019-05-08 | 一种存储设备的磨损均衡方法、装置及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111913647A CN111913647A (zh) | 2020-11-10 |
CN111913647B true CN111913647B (zh) | 2022-10-11 |
Family
ID=73050729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910382394.4A Active CN111913647B (zh) | 2019-05-08 | 2019-05-08 | 一种存储设备的磨损均衡方法、装置及相关设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111913647B (zh) |
WO (1) | WO2020224646A1 (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473126A (zh) * | 2009-08-11 | 2012-05-23 | 桑迪士克科技股份有限公司 | 提供闪存系统中的读状态和空闲块管理信息的控制器和方法 |
CN103246478A (zh) * | 2012-02-08 | 2013-08-14 | 北京同有飞骥科技股份有限公司 | 一种基于软raid支持无分组式全局热备盘的磁盘阵列系统 |
CN103946812A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于实现多级别存储器分级体系的设备和方法 |
CN106020735A (zh) * | 2016-05-31 | 2016-10-12 | 晨星半导体股份有限公司 | 一种数据存储方法及数据存储装置 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4933722B2 (ja) * | 2004-06-16 | 2012-05-16 | 富士通株式会社 | ディスク制御装置、ディスクパトロール方法およびディスクパトロールプログラム |
US8904006B2 (en) * | 2010-12-08 | 2014-12-02 | International Business Machines Corporation | In-flight block map for a clustered redirect-on-write filesystem |
CN102902626B (zh) * | 2011-07-27 | 2016-02-03 | 群联电子股份有限公司 | 区块管理方法、存储器控制器与存储器储存装置 |
GB2510763B (en) * | 2011-12-29 | 2020-05-20 | Intel Corp | Multi-level memory with direct access |
CN103645997B (zh) * | 2013-12-26 | 2016-12-07 | 深圳市迪菲特科技股份有限公司 | 一种数据保护的方法与系统 |
CN105354152B (zh) * | 2014-08-19 | 2018-06-26 | 华为技术有限公司 | 非易失性存储器及磨损均衡方法 |
CN106484323A (zh) * | 2016-09-13 | 2017-03-08 | 郑州云海信息技术有限公司 | 一种固态存储的损耗均衡方法及系统 |
CN106598484A (zh) * | 2016-11-17 | 2017-04-26 | 华为技术有限公司 | 数据的存储方法、闪存芯片以及存储装置 |
CN109558068B (zh) * | 2017-09-27 | 2024-04-05 | 北京忆恒创源科技股份有限公司 | 数据迁移方法及迁移系统 |
-
2019
- 2019-05-08 CN CN201910382394.4A patent/CN111913647B/zh active Active
-
2020
- 2020-05-08 WO PCT/CN2020/089218 patent/WO2020224646A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102473126A (zh) * | 2009-08-11 | 2012-05-23 | 桑迪士克科技股份有限公司 | 提供闪存系统中的读状态和空闲块管理信息的控制器和方法 |
CN103946812A (zh) * | 2011-09-30 | 2014-07-23 | 英特尔公司 | 用于实现多级别存储器分级体系的设备和方法 |
CN103246478A (zh) * | 2012-02-08 | 2013-08-14 | 北京同有飞骥科技股份有限公司 | 一种基于软raid支持无分组式全局热备盘的磁盘阵列系统 |
CN106020735A (zh) * | 2016-05-31 | 2016-10-12 | 晨星半导体股份有限公司 | 一种数据存储方法及数据存储装置 |
Non-Patent Citations (3)
Title |
---|
Bo-kyeong Kim ; Dong-Ho Lee."A wear-leveling algorithm exploiting k-bitwise operations for flash storage devices".《IEEE Transactions on Consumer Electronics 》.2015, * |
SST89E516RD存储空间的组织与IAP实现;吴锦虹等;《电子制作》;20070501(第05期);全文 * |
带磨损均衡的小粒度非易失性内存管理机制;孙强等;《计算机科学》;20181115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111913647A (zh) | 2020-11-10 |
WO2020224646A1 (zh) | 2020-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10339047B2 (en) | Allocating and configuring persistent memory | |
EP2920700B1 (en) | Memory segment remapping to address fragmentation | |
US9009580B2 (en) | System and method for selective error checking | |
AU2019101583A4 (en) | Method and device for writing stored data into storage medium based on flash memory | |
US8560772B1 (en) | System and method for data migration between high-performance computing architectures and data storage devices | |
US9965017B2 (en) | System and method for conserving energy in non-volatile dual inline memory modules | |
US9646721B1 (en) | Solid state drive bad block management | |
US20220334733A1 (en) | Data restoration method and related device | |
CN114647375B (zh) | 使装置具备增强型持久性存储器区存取能力 | |
CN113672430A (zh) | 运行虚拟机的系统、操作其的方法、介质和存储器件 | |
CN110837444B (zh) | 一种存储器故障处理方法及装置 | |
CN111913647B (zh) | 一种存储设备的磨损均衡方法、装置及相关设备 | |
CN111124294B (zh) | 一种扇区映射信息的管理方法及装置、存储介质和设备 | |
US20170249248A1 (en) | Data backup | |
CN114649032A (zh) | 用增强的持久性存储器区存取启用装置的拆分协议途径 | |
JP2013114650A (ja) | アドレス空間変換装置及びそのアドレス空間変換方法、並びにコンピュータ・プログラム | |
US11615005B2 (en) | Storage system and control method therefor | |
US11733927B2 (en) | Hybrid solid-state drive | |
WO2023046129A1 (zh) | 计算机设备、处理数据的方法及计算机系统 | |
US10671322B1 (en) | Method for performing storage space management, associated data storage device, and controller thereof | |
CN117632807A (zh) | 存储设备连接装置及其连接方法和系统 | |
CN113811846A (zh) | 存储驱动器的动态每天写入调整 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |