CN111221681A - 一种存储器的修复方法及装置 - Google Patents
一种存储器的修复方法及装置 Download PDFInfo
- Publication number
- CN111221681A CN111221681A CN201911424838.2A CN201911424838A CN111221681A CN 111221681 A CN111221681 A CN 111221681A CN 201911424838 A CN201911424838 A CN 201911424838A CN 111221681 A CN111221681 A CN 111221681A
- Authority
- CN
- China
- Prior art keywords
- memory
- data
- read
- card
- storage
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1479—Generic software techniques for error detection or fault masking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
由于安全数码卡等存储器容易发生数据读取错误,现有技术会在存储器发生数据读取错误时,将该存储器设置为故障状态或者将发生故障的地址范围的状态设置为不可用。这种做法会降低系统的可用性,并导致系统中的存储器需要被频繁更换,增加了系统的运行成本。为解决上述问题,本申请提供一种修复存储器的方法和装置,将若干个存储器构成存储阵列。当从主存储器读取数据失败后,从从存储器读取数据并利用该数据修复主存储器中的错误。通过这种做法,可以实现对存储器中逻辑坏块的修复,从而提升系统的可用性,并可以减少存储器需要更换的次数,从而降低系统的运行成本。
Description
技术领域
本申请涉及计算机领域,特别涉及一种可以修复存储器的方法和装置。
背景技术
存储器是用来存储程序和各种数据信息的记忆部件。存储器通常是利用双稳态半导 体电路、互补金属氧化物半导体(Complementary Metal Oxide Semiconductor,CMOS)晶体管或磁性材料的存储元来存储二进制代码。存储器根据使用材质的不同可以分成半导体存储器和磁表面存储器等类型。
安全数码(Secure Memory Card,SD)卡,又称SD存储卡,是一种基于半导体快闪记忆器的新一代记忆设备,由于它具有体积小、数据传输速度块以及可热插拔等优良特性,被广泛地用于便携式装置上使用,例如数码相机、个人数码助理(Personal DigitalAssistant,PDA)和多媒体播放器等。近年来,VMware等操作系统厂商推出了使用SD 卡作为引导操作系统的存储介质,从而推广了SD卡在企业级市场的应用范围。
SD卡作为一款消费机的电子存储产品,使用了相对廉价的原材料,固件也相对简单, 可靠性和可服务型性均较差,同时故障率相对较高。因此,各厂商在制作和使用SD卡时,都会采取一定的措施监控SD卡的使用情况,以保证系统的稳定性。
发明内容
现有技术中,当存储器发生数据读取错误时,会将该存储器设置为故障状态或者将 发生故障的地址范围的状态设置为不可用,会降低系统的可用性并导致系统中的存储器 需要被频繁更换。为了解决上述问题,本申请提供一种修复存储器的方法和装置,可以当存储器发生数据读取失败后,会从系统中的其他存储器获取待读取数据,并用该数据 修复存储器中的错误,提高系统的可用性并降低系统运行的成本。
第一方面,本申请提供一种存储器的修复方法,该方法包括用于存储控制器,该存储控制器与第一存储器和第二存储器相连接,该方法包括:接收第一读取请求,该第一 读取请求用于指示读取第一存储器中的第一数据;当读取所述第一存储器中的第一数据 失败时,从所述第二存储器中获取所述第一数据;向所述第一存储器发送写请求,所述 写请求中携带有所述第一数据;接收所述第一存储器发送的响应消息,所述响应消息用 于指示所述第一数据已经被成功写入所述第一存储器;根据所述响应消息确定所述第一 存储器的逻辑块错误已经被修复。
根据上述方法,当从第一存储器读取数据失败时,先不将该存储器设置为故障状态, 而是从系统中存储有待读取数据的第二存储器中获取该数据,并将获取到的数据写回第 一存储器。这种做法可以通过将数据写回第一存储器来修复第一存储器中的坏块。具体来说,如果第一存储器中发生的错误是由于产生了逻辑坏块,则可以通过将数据写回第 一存储器来修复该错误;如果第一存储器中发生的错误时由于产生了物理坏块,则无法 通过将数据写回第一存储器来修复该错误。因此,如果接收到指示第一数据已经被成功 写入第一存储器的响应消息时,可以确定第一存储器中发生的逻辑坏块错误已经被修复。 本申请第一方面所提供的方法通过修复第一存储器中的逻辑坏块提高系统的稳定性,并 可以降低存储器需要被更换的频率,从而降低系统的运行成本。
根据第一方面,在一种可能的实现方式中,第一存储器和第二存储器是SD卡,且第一存储器和第二存储器存储相同的数据。
由于SD卡兼具使用成本低廉的优点和可靠性较低的缺点,因此可以在使用SD卡的同时,将两个及以上的SD卡组成镜像,这样可以当其中某个SD卡出现故障时从其他 SD卡中获得数据,从而可以在降低系统运行成本的前提下提高系统的稳定性。
根据第一方面,在另一种可能的实现方式中,该方法还包括:接收第二读取请求,该第二读取请求用于指示读取第一存储器中的第二数据;当读取第一存储器中的第二数据失败时,向第二存储器发送获取请求;当获取第二存储器中的第二数据失败时,确定 第一存储器和第二存储器产生了物理坏块,并将记录的第一存储器的读错误次数和第二 存储器的读错误次数分别加1。
根据上述方法,当存储控制器从第一存储器和第二存储器中获取数据均失败时,已 经无法通过会写数据对存储器进行修复,为了系统的可靠性,可以认定第一存储器和第二存储器均产生了物理坏块,并将记录的第一存储器和第二存储器的读错误次数分别加1。通过这种做法,有利于后续提醒存储控制器及时更换存储器,从而提高系统的可靠性。
根据第一方面,在一种可能的实现方式中,该方法还包括:当第一存储器的读错误次数或第二存储器的读错误次数达到阈值时,发出警告。
根据上述做法,存储控制器可以对第一存储器和第二存储器的读错误次数进行监控, 当某个存储器的读错误次数达到阈值时,认为该存储器需要更换,从而发出警告。该方案可以及时提示更换发生错误次数过多的存储器,从而提高了系统运行的稳定性。
根据第一方面,在另一种可能的实现方式中,该存储控制器还与第三存储器相连接, 该第一存储器、第二存储器和第三存储器构成独立磁盘冗余阵列RAID 5,从第二存储器 中获取第一数据,具体包括:根据第二存储器中保存的第一数据的校验信息,恢复第一数据。
通过上述做法,可以将本申请提供的技术方案应用于RAID 5的架构下,从而增强了 本申请所提供的系统的通用性。
根据第一方面,在另一种可能的实现方式中,该方法还包括:接收第三读取请求,该第三读取请求用于指示读取第一存储器中的第三数据;当读取第一存储器的第三数据失败时,从第二存储器中获取第三数据;向第一存储器发送写请求,该写请求中携带有 第三数据;确定向第一存储器写入数据失败;将记录的所述第一存储器的读错误次数和 写错误次数分别加1。
根据上述方法,如果将第一数据写回第一存储器失败,从而无法修复第一存储器中 的坏块,可以认为第一存储器中发生了物理坏块。且因为第一存储器在写数据方面也发生了错误,因此存储控制器将写错误次数和读错误次数分别加1。通过这种方法,可以更 精细地记录第一存储器中发生的错误,从而后续提醒存储控制器及时更换第一存储器, 可以提高系统的可靠性。
根据第一方面,在另一种可能的实现方式中,该方法还包括:将第一存储器的写错误次数与第一阈值进行比较;将第一存储器的读错误次数与第二阈值进行比较;当第一 存储器的写错误次数达到第一阈值或第一存储器的读错误次数达到第二阈值时,发出警 告。
根据上述方法,在存储控制器中分别设定了针对写错误次数的第一阈值和针对读错 误次数的第二阈值,并分别判断第一存储器的读错误次数是否达到第一阈值以及写错误 次数是否达到第二阈值。通过这种方法,可以更精细的判断第一存储器是否具有足够的可靠性,从而提高了整个系统的可靠性。
第二方面,本申请提供一种存储控制器,该存储控制器与第一存储器和第二存储器 相连接,该存储控制器包括:接收模块,用于接收第一读取请求,该第一读取请求用于指示读取第一存储器中的第一数据;获取模块,用于当读取第一存储器中的第一数据失 败时,从第二存储器中获取该第一数据;写入模块,用于向第一存储器发送写请求,该 写请求中携带有第一数据;监控模块用于接收第一存储器发送的响应消息,该响应消息 用于指示第一数据已经被写入第一存储器;根据该响应消息确定第一存储器的逻辑坏块 错误已经被修复。
根据第二方面,在一种可能的实现方式中,第一存储器和第二存储器是SD卡,且第一存储器和第二存储器存储相同的数据。
根据第二方面,在另一种可能的实现方式中,接收模块还用于:接收第二读取请求, 该第二读取请求用于指示读取第一存储器中的第二数据;当读取第一存储器中的第二数 据失败时,向第二存储器发送第二读取请求;监控模块还用于:当读取第二存储器中的第二数据失败时,确定第一存储器和第二存储器产生了逻辑坏块;将记录的第一存储器 的读错误次数和第二存储器的读错误次数分别加1。
根据第二方面,在另一种可能的实现方式中,监控模块还用于:当第一存储器的读错误次数或第二存储器的读错误次数达到阈值时,发出警告。
根据第二方面,在另一种可能的实现方式中,该存储控制器还与第三存储器相连接, 该第一存储器、第二存储器和第三存储器构成独立磁盘冗余阵列RAID 5,获取模块具体 用于:根据第二存储器中保存的第一数据的校验信息,恢复第一数据。
根据第二方面,在另一种可能的实现方式中,接收模块还用于:接收第三读取请求, 该第三读取请求用于指示读取第一存储器中的第三数据;获取模块还用于:当读取第一 存储器的第三数据失败时,从第二存储器中获取第三数据;写入模块还用于:向所述第一存储器发送写请求,该写请求中携带有第三数据;监控模块还用于:确定向第一存储 器写入数据失败,将记录的第一存储器的读错误次数和写错误次数分别加1。
根据第二方面,在另一种可能的实现方式中,监控模块还用于:将第一存储器的写错误次数与第一阈值进行比较;将第一存储器的读错误次数与第二阈值进行比较;当第 一存储器的写错误次数达到第一阈值或第一存储器的读错误次数达到第二阈值时,发出 警告。
第三方面,本申请提供一种计算机装置,该计算机装置包括存储器和处理器,该存储器用于存储程序代码,该处理器用于调用存储器中的程序代码以执行第一方面中任意一种实现方式提供的方法。
第四方面,本申请提供一种计算机可读存储介质,该计算机可读存储介质存储程序 代码,该程序代码可以被计算机装置调用以执行第一方面中任意一种实现方式提供的方 法。
附图说明
图1是本申请所提供的一种采用RAID 1架构的系统的示意图。
图2是本申请所提供的一个实施例的流程示意图。
图3是本申请所提供的一种采用RAID 5架构的系统的示意图。
图4是本申请所提供的另一个实施例的流程示意图。
图5是本申请所提供的一种存储控制器的功能模块的示意图。
图6是本申请所提供的一种包含存储控制器的计算机装置的架构的示意图。
具体实施方式
SD卡作为一种与非门闪存(NAND Flash)介质,具有读干扰(read disturb)等典型的失效问题。其中,读干扰是指,读取存储介质的某一个页面时,会产生对同一个数据 块中的其他页面的干扰。随着闪存制程的提高,每一个物理块所包含的页面更多。而当 每个存储单元可以存储多个信息比特,例如多阶存储单元(Multi-Level Cell,MLC)、三 阶储存单元(Triple-Level Cell,TLC)或者四阶储存单元(Quad-Level Cell,QLC),读干 扰的问题会更加严重。读干扰会导致读取出来的错误出错,从而丢失数据。当SD卡的 同一个存储单元被反复读取时,容易使得相邻的存储单元发生比特跳变,从而产生逻辑 坏块。
为了弥补SD卡故障率相对较高与企业级用户对可靠性要求较高之间的矛盾,硬件厂家在制作SD卡时,通常会给SD卡预装故障保护功能。例如,设置监控模块对SD发 生故障的次数进行监控,当系统中某个SD卡发生故障次数超过一定数量后,监控模块 会发出警告,提示系统更换该SD卡,以免影响系统的稳定性。
在上述方法中,当SD卡发生逻辑坏块后,计算机装置可能会直接将该SD卡设置为故障状态、或者将该SD卡发生故障的地址范围的状态设置为不可用。这种做法不但会 增加系统级的故障率,降低系统的可用性,而且会导致系统中的SD卡需要被频繁替换, 增加了系统的运行成本。
本申请提供一种可修复存储器逻辑坏块的方法和装置。为了降低系统级的故障率并 降低系统的运行成本,在本申请提供的技术方案中,将若干个存储器构成主从阵列。当从主存储器读取数据失败后,从从存储器读取数据并利用该数据修复主存储器中的错误。如果主存储器中的错误可以被修复,则不将该主存储器设置为故障状态或将发生故障的地址设置为不可用范围。通过这种做法,可以实现对存储器中逻辑坏块的修复,从而提 升系统的可靠性,并可以减少存储器需要更换的次数,从而降低系统的运行成本。
图1是本申请实施例所提供的一种采用RAID 1架构的系统的示意图。
如图1所示,计算系统100包括计算机装置110、SD独立磁盘冗余阵列(RedundantArray of Independent Disks,RAID)控制器120、主SD卡130和从SD卡140。计算机装 置110与SD RAID控制器120相连,其中,计算机装置110既可以通过通用串行总线 (UniversalSerial Bus,USB)接口与SD RAID控制器120连接,也可以通过外围组件快 速互联(peripheral component interconnect express,PCIe)接口等其他接口与SD RAID控 制器120连接,本申请不对此进行限定。
主SD卡130和从SD卡140用于存储数据,且主SD卡130和从SD卡140本身也 具有控制器(图中未示出)。由于SD卡作为闪存设备容易发生读干扰等错误,SD控制 器可以对写入SD卡的数据或从SD卡中读取的数据进行数据校验。对于数据的校验可以 采用多种方法,例如奇偶校验,其中,奇校验即当传送每一个字节的时候另外附加一位 作为校验位,当实际数据中“1”的个数为偶数的时候,这个校验位就是“1”,否则这 个校验位就是“0”,这样就可以保证传送数据满足奇校验的要求。在接收方收到数据时, 将按照奇校验的要求检测数据中“1”的个数,如果是奇数,表示传送正确,否则表示传 送错误。
本申请为了叙述方便,采用SD卡作为例子进行说明,但本申请并不限定存储器的类型。本申请所指的存储器既可以是包含SD卡在内的闪存设备,因为闪存设备都可能 因为读扰动等原因发生逻辑错误,并通过将正确的数据回写来克服;本申请所指的存储 器也可以是传统的机械硬盘等存储设备,因为机械硬盘可能因为临近扇区的磁道进行读 写时发生电磁干扰,从而产生逻辑错误。因此,各种类型的存储器,只要采用本申请所 提供的技术方案,均在本申请的保护范围之中。
SD RAID控制器120通过总线分别与主SD卡130和从SD卡140连接。其中,主 SD卡130和从SD卡140构成一个RAID 1阵列,RAID 1阵列是通过磁盘数据镜像实现 数据冗余,在成对的独立磁盘上产生互为备份的数据。当原始数据繁忙时,可直接从镜 像拷贝中读取数据,因此RAID 1可以提高读取性能;同时,由于RAID 1阵列总是保持 一份完成的数据备份,所以该种类型的磁盘阵列的数据安全性和可用性也较高。另外, SD RAID控制器既可以如图1所示是位于计算机装置110和SD卡之间的硬件装置,也 可以是与SD位于同一块电路板上的一个芯片,也可以以软件的形态存在于计算机装置 110上。本申请不对SD RAID控制器的实际形态和在系统中的位置进行限定,只要SD RAID控制器的作用如本申请所述,即处理本申请的保护范围之中,下文中为了方便叙述 采用以SD RAID控制器为硬件进行说明。
由于主SD卡130和从SD卡140之间是镜像的关系,因此,当计算机装置110通过 SDRAID控制器120向SD卡中写入数据时,SD RAID控制器会将该数据同时写入主SD 卡130和从SD卡140中。而当计算机装置110通过SD RAID控制器120读取数据时, SD RAID控制器120会首先向从主SD卡130中发送读操作请求以获取数据。当从主SD 卡130中读取数据失败后,SDRAID控制器120再向从SD卡140发送读操作请求以获 取数据。
图2是本申请所提供一个实施例的流程示意图。
如图2所示,该实施例是在图1所示的RAID 1架构下,当SD RAID控制器120从 主SD卡130中读取数据失败后,从从SD卡140中读取数据,并利用读取到的数据修复 主SD卡130中的错误。具体流程如下:
S200:SD RAID控制器120接收计算机装置110发送的读操作请求。
S205:SD RAID控制器120根据计算机装置110发送的读操作请求,向所述主SD 卡130发送读操作请求以读取主SD卡中第一数据块中的数据。
S210:判断SD RAID控制器120读取主SD卡130中的数据是否成功。
上文中已经提到,由于SD卡中存储的数据具有的一定的概率发生错误,因此,当主SD卡130中的数据被读取时,主SD卡130中的控制器会对被读取的数据进行校验, 若主SD130中的数据可以被SD RAID控制器120读取且通过校验,则判断为读取数据成 功;反之则判断为读取数据失败。
S220:当SD RAID控制器120读取主SD卡130中的数据成功时,将该数据发送给 计算机装置110。
S230:当SD RAID控制器120读取主SD卡130中的数据失败时,SD RAID控制器 120根据读操作请求,向从SD卡140发送读操作请求以读取从SD卡140中第一数据块 中的数据。其中,从SD卡140中第一数据块中的数据与主SD卡130中第一数据块中的 数据是镜像关系。
在图1所示的RAID 1架构下,主SD卡130和从SD卡140的数据是完全的镜像关 系,之前的数据在通过SD RAID控制器120写入主SD卡130时,也会将一份同样的数 据写入从SD卡140。因此,主SD卡130中的数据和从SD卡140中的数据是相同的, SD RAID控制器120可以向从SD卡140发送读操作请求。
S240:判断SD RAID控制器120读取从SD卡140中的数据是否成功。当读取数据 成功时,跳转至步骤S250;当读取数据失败时,跳转至步骤S280。
该步骤和步骤S210类似,当从从SD卡140中读取数据时,从SD卡中的控制器对 被读取的数据进行校验,根据校验结果判断读取数据是否成功。
S250:SD RAID控制器120向主SD卡130发送写操作请求,以将从从SD中读取 的数据写入主SD卡130中。
由于之前从主SD卡130中读取数据失败,因此可以判断主SD卡130发生了坏块。 为了尽可能的提高系统的稳定性以及减少对SD卡的更换,可以先判断主SD卡130中发 生的错误属于物理坏块还是逻辑坏块。其中,物理坏块也称介质坏块,是指用于存储数 据的数据块对应的介质本身发生了物理意义上的错误,例如数据块中的某个比特位出现 故障只能显示某个固定数值的固定性故障(stuck-at fault)。在这种情况下,数据块中存 储的数据通常是没有规律的,且数据块对应的介质存在电路故障等问题,无法通过将正 确的数据写回来修复主SD卡130的坏块。逻辑坏块则是指数据块内的数据存在逻辑问 题,例如索引块的索引值没有按照顺序排列;也可以是因为数据块中部分比特位的数值 发生了错误,例如某个比特位由于收到临近数据块的读干扰影响,该比特位的值由0变 化成了1,导致在步骤S210中,主SD卡130的控制器校验读取的数据为错误数据。由 于逻辑坏块不涉及介质上的问题,因此可以通过将从SD卡140中的正确数据写入主SD 卡130的方式修复该错误。
S260:判断数据写入主SD卡130是否成功。当数据写入成功时,跳转至步骤S220,即将该数据发送给计算机装置110。当数据写入失败时,跳转至步骤S270。
具体的,当数据写入主SD卡130成功时,主SD卡130可以向SD RAID控制器120 发送响应消息,该响应消息用于指示第一数据已经被成功写入主SD卡130了。
S270:将记录的主SD卡130的读错误次数和写错误次数分别加上1后,跳转至步 骤S220,即将该数据发送给计算机装置110。
当将从SD卡140中的正确数据写入主SD卡130失败后,可以判断主SD卡不仅发 生了物理坏块,导致从主SD卡中读取的数据存在错误,而且主SD卡在接收数据写入时 也会发生错误,因此将记录的主SD卡的读错误次数和写错误次数分别加上1,并将从从 SD卡140中读出的数据发送给计算机装置110。
S280:将记录的主SD卡130的读错误次数和从SD卡140的读错误次数分别加上1。
由于从主SD卡130和从SD卡140中读出的数据都是错误的,此时无法验证这两个SD卡中发生的坏块是物理坏块还是逻辑坏块。为了增加系统的稳定性,此时将这两个 SD卡发生的坏块都认为是物理坏块,将记录的主SD卡130的读错误次数和从SD卡140 的读错误次数分别加上1。
S290:SD RAID控制器120向计算机装置110发送读取失败响应。
由于SD RAID控制器120从主SD卡130和从SD卡140读取都失败了,计算机装 置110无法从SD RAID控制器120处获取所请求的数据,因此SD RAID控制器120向 计算机装置110发送读取失败响应。
此外,本申请的步骤S270和S280中,当主SD卡130和从SD卡140发生读写错误 时,会相应的记录主SD卡130和从SD卡140的读错误次数和写错误次数。为了提高计 算系统的稳定性,可以根据SD卡发生过的读写错误次数确定是否更换SD卡。具体来说, 在一种可能的实现方式中,可以分别设定读错误阈值和写错误阈值。当判断SD卡是否 需要更换时,可以分别判断该SD卡当前的读错误次数是否达到了设定的读错误阈值以 及判断该SD卡当前的写错误次数是否达到了设定的写错误阈值,当其中任何一种错误 的次数达到了对应的阈值时,该SD卡上的控制器将发出告警,提示用户更换该SD卡。 由于写错误的严重程度要远超过读错误,因此可以将写错误阈值设定为小于读错误阈值, 例如可以将写错误阈值设定为10次,将读错误阈值设定为20次。在本申请的另一种实 现方式中,可以将SD卡发生的读错误次数和写错误次数综合考虑,例如将该SD卡发生 的读错误次数乘以读错误权重加上写错误次数乘以写错误权要,再判断该结果是否超过 预设值。
在图1所示的架构中,由于RAID 1最多只能包括两个SD卡,因此系统所支持的总存储容量会受到影响。为了适应大容量的存储要求,本申请还可以用于RAID 10的架构。RAID 10是将RAID 1和RAID 0标准结合的产物,在连续地以位或字节为单位分割数据 并且并行读/写多个磁盘的同时,为每一块磁盘作磁盘镜像进行冗余。它的优点是同时拥 有RAID 0的超凡速度和RAID 1的数据高可靠性,并可以支持更大容量的存储。由于 RAID 10的架构可以视为多个采用RAID 1的磁盘组合,因此可以在每个磁盘组合中使用 图2所述的方法流程,本申请不对此进行赘述。
由于RAID 1和RAID 10都需要建立的完整的镜像备份,所以采用RAID 1和RAID 10的系统实际可用的存储容量是该系统所包含的硬件提供的存储容量一半。为了提高系 统的存储容量的利用率,本申请还可以应用于RAID 5架构下。
图4是本申请提供的采用RAID 5架构的系统的示意图。
RAID 5是一种存储性能、数据安全和存储成本兼顾的存储解决方案。如图4所示,计算系统包括计算机装置、SD RAID控制器和至少3个SD卡(图示为3个SD卡)。 RAID5不是对存储的数据进行备份,而是把数据和相对应的奇偶校验信息存储到组成 RAID5的各个磁盘上,并且所存储的数据和相对应的奇偶校验信息分别存储于不同的磁 盘上。当SD RAID控制器读取其中一个SD卡上的数据发生错误后,可以利用其它SD 卡上保存的奇偶校验数据获得正确的数据。由于一个奇偶校验信息可以对应多个数据, 因此RAID 5的磁盘使用率要比RAID 1高,从而可以降低存储成本。
S400:SD RAID控制器320接收计算机装置310发送的读操作请求。
S405:SD RAID控制器320根据计算机装置310发送的读操作请求,向第一SD卡330发送读操作请求以读取第一SD卡中第一数据块中的数据。
和RAID 1架构采用的镜像存储方式不同,在RAID 10架构中,每个SD卡存储的数据都是不同的,因此不存在主从的关系。当SD RAID控制器320接收到读操作请求时, 先根据该读操作请求中的信息确定待读取的数据位于第一SD卡330中的第一数据块, 再向第一SD卡330发送读操作请求以获取该数据。
S410:判断SD RAID控制器320读取第一SD卡330中的数据是否成功。
S420:当SD RAID控制器320读取第一SD卡330中的数据成功时,将该数据发送 给计算机装置310。
S430:当SD RAID控制器320读取第一SD卡330中的数据失败时,SD RAID控制 器320确定第二SD卡340中存有第一SD卡330中的第一数据块中数据对应的校验数据, 并向第二SD卡340发送获取请求以根据该校验数据获取所请求的数据。
在RAID 5的架构下,每个SD卡所保存的数据对应的校验数据都保存在阵列中的其他SD卡中,当阵列汇总只有一个SD卡损坏时,该SD卡中的数据可以根据校验数据进 行恢复。在该实施例中,当读取第一SD卡中的数据失败后,可以根据这部分数据对应 的校验数据获取该部分数据。
S440:判断SD RAID控制器320根据第二SD卡340中的校验数据恢复待读取数据 是否成功。当恢复数据成功时,跳转至步骤S450;当恢复数据失败时,跳转至步骤S480.
S450:SD RAID控制器320向第一SD卡330发送写操作请求,以将根据第二SD 卡340中的校验数据恢复的数据写入第一SD卡330。
S460:判断将恢复的数据写入第一SD卡330是否成功。当数据写入成功时,跳转 至步骤S420,即将该数据发送给计算机装置310。当数据写入失败时,跳转至步骤S470。
S470:将记录的第一SD卡430的读错误次数和写错误次数分别加上1后,跳转至 步骤S420,即将该数据发送给计算机装置310。
S480:将记录的第一SD卡430的读错误次数和第二SD卡的读错误次数分别加上1。
S490:SD RAID控制器320向计算机装置310发送读取失败响应。
和上文所述的实施例类似,在本实施例中,也可以根据SD卡的读错误次数和写错误次数确定是否需要更换SD卡,此处不再赘述。
图5是本申请的实施例所提供的用于修复存储器的存储控制器的功能模块的示意图。 如图5所示,该存储控制器500包括接收模块510、获取模块520、写入模块530以及监 控模块540,其中:
接收模块510,用于接收第一读取请求,该第一读取请求用于指示读取第一存储器中 的第一数据;
获取模块520,用于当读取第一存储器中的第一数据失败时,从第二存储器中获取该 第一数据;
写入模块530,用于将第一数据写回第一存储器。
监控模块540,用于当所述第一数据写回所述第一存储器成功时,确定第一存储器产 生了逻辑坏块且该逻辑坏块已经被修复以及当写入模块530将第一数据写回第一存储器 失败时,将记录的第一存储器的写错误次数和读错误次数分别加1。
上述存储控制器500还用于执行如图2和图4所示的修复存储器的其他步骤。具体来说,接收模块510用于执行图2中的步骤S200和图4中的步骤S400等步骤;获取模 块520用于执行图2中的步骤S205、S210、S230、S240以及图4中的步骤S405、S410、 S430、S440等步骤;写入模块530用于执行图2中的步骤S220、S250以及图4中的步 骤S420、S450等步骤;监控模块用于执行图2中的步骤S270、S280、S290以及图4中 的步骤S470、S480、S490等步骤。各个模块执行各个步骤的具体流程请见上文对图2 和图4的介绍,此处不再赘述。
图6为依据本申请的实施例提供的用于调整处理器功率的计算机装置600的结构示 意图。本实施例中的计算机装置600可以是上述各实施例中的计算机装置的其中一种具体实现方式。
如图6所示,该计算机装置600包括处理器601,处理器601与存储器605连接。处 理器601可以为现场可编程门阵列(英文全称:Field Programmable Gate Array,缩写:FPGA),或数字信号处理器(英文全称:Digital Signal Processor,缩写:DSP)等计算 逻辑或以上任意计算逻辑的组合。处理器601也可以为单核处理器或多核处理器。
存储器605可以是随机存取存储器(Random Access Memory,RAM)、闪存、只读 存储器(Read Only Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ReadOnly Memory,EPROM)、带电可擦可编程只读存储器(Electrically ErasableProgrammable read only memory,EEPROM)、寄存器或者本领域熟知的任何其它形式的 存储介质,存储器可以用于存储程序指令,该程序指令被处理器601执行时,处理器601 执行上述实施例中的所述的方法。
连接线609用于在通信装置的各部件之间传递信息,连接线609可以使用有线的连接方式或采用无线的连接方式,本申请并不对此进行限定。连接609还连接有网络接口604。
网络接口604使用例如但不限于电缆或电绞线一类的连接装置,来实现与其他设备 或网络611之间的通信,网络接口604还可以通过无线的形式与网络611互连。
计算机装置600还包括存储控制器612,该存储控制器612的功能可以参考上文对于 图1、图3以及图5中存储控制器的功能的介绍,本申请不在此进行赘述。存储控制器 612可以与一个或多个外置的存储控制器602连接,并实现本申请在图2和图4所介绍的 方法流程。
本申请实施例的一些特征可以由处理器601执行存储器605中的程序指令或者软件 代码来完成/支持。存储器605上在加载的软件组件可以从功能或者逻辑上进行概括,例如,图6所示的监控模块620、确定模块630和调整模块640。
在本申请的一个实施例中,当存储器605加载程序指令后,处理器601执行存储器中的上述功能/逻辑模块相关的事务。
此外,图6仅仅是一个计算机装置600的例子,计算机装置600可能包含相比于图6展示的更多或者更少的组件,或者有不同的组件配置方式。同时,图6中展示的各种组 件可以用硬件、软件或者硬件与软件的结合方式实施。例如,存储器和处理器可以在一 个模块中实现,存储器中的指令可以是预先写入存储器的,也可以是后续处理器在执行 的过程中加载的。
Claims (10)
1.一种存储器的修复方法,其特征在于,所述方法应用于存储控制器,所述存储控制器与第一存储器和第二存储器相连接,所述方法包括:
接收第一读取请求,所述第一读取请求用于指示读取所述第一存储器中的第一数据;
当读取所述第一存储器中的第一数据失败时,从所述第二存储器中获取所述第一数据;
向所述第一存储器发送写请求,所述写请求中携带有所述第一数据;
接收所述第一存储器发送的响应消息,所述响应消息用于指示所述第一数据已经被成功写入所述第一存储器;
根据所述响应消息确定所述第一存储器的逻辑坏块错误已经被修复。
2.根据权利要求1所述的方法,其特征在于,所述第一存储器和所述第二存储器是安全数字SD卡,且所述第一存储器和所述第二存储器存储相同的数据。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
接收第二读取请求,所述第二读取请求用于指示读取所述第一存储器中的第二数据;
当读取所述第一存储器中的第二数据失败时,向所述第二存储器发送获取请求,其中,所述获取请求用于从第二存储器中获取所述第二数据;
当获取所述第二存储器中的第二数据失败时,确定所述第一存储器和所述第二存储器产生了物理坏块;
将记录的所述第一存储器的读错误次数和所述第二存储器的读错误次数分别加1。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
当所述第一存储器的读错误次数或所述第二存储器的读错误次数达到阈值时,发出警告。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述存储控制器还与第三存储器相连接,所述第一存储器、所述第二存储器和所述第三存储器构成独立磁盘冗余阵列RAID5,
所述从所述第二存储器中获取所述第一数据,包括:
根据所述第二存储器中保存的所述第一数据的校验信息,恢复所述第一数据。
6.一种存储控制器,其特征在于,所述存储控制器与第一存储器和第二存储器相连接,所述存储控制器包括:
接收模块,用于:接收第一读取请求,所述第一读取请求用于指示读取所述第一存储器中的第一数据;
获取模块,用于:当读取所述第一存储器中的第一数据失败时,从所述第二存储器中获取所述第一数据;
写入模块,用于:向所述第一存储器发送写请求,所述写请求中携带有所述第一数据;
监控模块,用于:接收所述第一存储器发送的响应消息,所述响应消息用于指示所述第一数据已经被成功写入所述第一存储器;
根据所述响应消息确定所述第一存储器的逻辑坏块错误已经被修复。
7.根据权利要求6所述的存储控制器,其特征在于,所述第一存储器和所述第二存储器是安全数字SD卡,且所述第一存储器和所述第二存储器存储相同的数据。
8.根据权利要求6或7所述的存储控制器,其特征在于,
所述接收模块还用于:接收第二读取请求,所述第二读取请求用于指示读取所述第一存储器中的第二数据;
当读取所述第一存储器中的第二数据失败时,向所述第二存储器发送获取请求;
所述监控模块还用于:当获取所述第二存储器中的第二数据失败时,确定所述第一存储器和所述第二存储器产生了逻辑坏块;
将记录的所述第一存储器的读错误次数和所述第二存储器的读错误次数分别加1;
当所述第一存储器的读错误次数或所述第二存储器的读错误次数达到阈值时,发出警告。
9.根据权利要求6-8任一项所述的存储控制器,其特征在于,所述存储控制器还与第三存储器相连接,所述第一存储器、所述第二存储器和所述第三存储器构成独立磁盘冗余阵列RAID 5,
所述获取模块用于:根据所述第二存储器中保存的所述第一数据的校验信息,恢复所述第一数据。
10.一种计算机装置,其特征在于,所述计算机装置包括存储器和处理器,所述存储器用于存储程序代码,所述处理器用于调用所述存储器中的程序代码以执行如权利要求1-5任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/095660 WO2021088368A1 (zh) | 2019-11-07 | 2020-06-11 | 一种存储器的修复方法及装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2019110839928 | 2019-11-07 | ||
CN201911083992 | 2019-11-07 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111221681A true CN111221681A (zh) | 2020-06-02 |
Family
ID=70832790
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911424838.2A Pending CN111221681A (zh) | 2019-11-07 | 2019-12-31 | 一种存储器的修复方法及装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111221681A (zh) |
WO (1) | WO2021088368A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021088368A1 (zh) * | 2019-11-07 | 2021-05-14 | 华为技术有限公司 | 一种存储器的修复方法及装置 |
WO2023108403A1 (en) * | 2021-12-14 | 2023-06-22 | Intel Corporation | Devices and methods for preventing memory failure in electronic devices |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101777013A (zh) * | 2009-01-12 | 2010-07-14 | 成都市华为赛门铁克科技有限公司 | 一种固态硬盘及数据读写方法 |
CN102200937A (zh) * | 2011-05-31 | 2011-09-28 | 深圳创维-Rgb电子有限公司 | 一种与非闪存中数据读取的方法、装置及电视机系统 |
CN103309775A (zh) * | 2013-07-03 | 2013-09-18 | 苏州科达科技股份有限公司 | 一种高可靠磁盘阵列的容错方法 |
CN106844088A (zh) * | 2017-02-20 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种raid存储系统的数据发送方法及装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9767120B2 (en) * | 2008-01-16 | 2017-09-19 | Hitachi Data Systems Engineering UK Limited | Multi-way checkpoints in a data storage system |
CN102541469B (zh) * | 2011-12-13 | 2015-01-21 | 华为技术有限公司 | 固件存储系统中数据保护的方法、设备及系统 |
CN111221681A (zh) * | 2019-11-07 | 2020-06-02 | 华为技术有限公司 | 一种存储器的修复方法及装置 |
-
2019
- 2019-12-31 CN CN201911424838.2A patent/CN111221681A/zh active Pending
-
2020
- 2020-06-11 WO PCT/CN2020/095660 patent/WO2021088368A1/zh active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101777013A (zh) * | 2009-01-12 | 2010-07-14 | 成都市华为赛门铁克科技有限公司 | 一种固态硬盘及数据读写方法 |
CN102200937A (zh) * | 2011-05-31 | 2011-09-28 | 深圳创维-Rgb电子有限公司 | 一种与非闪存中数据读取的方法、装置及电视机系统 |
CN103309775A (zh) * | 2013-07-03 | 2013-09-18 | 苏州科达科技股份有限公司 | 一种高可靠磁盘阵列的容错方法 |
CN106844088A (zh) * | 2017-02-20 | 2017-06-13 | 郑州云海信息技术有限公司 | 一种raid存储系统的数据发送方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021088368A1 (zh) * | 2019-11-07 | 2021-05-14 | 华为技术有限公司 | 一种存储器的修复方法及装置 |
WO2023108403A1 (en) * | 2021-12-14 | 2023-06-22 | Intel Corporation | Devices and methods for preventing memory failure in electronic devices |
Also Published As
Publication number | Publication date |
---|---|
WO2021088368A1 (zh) | 2021-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2811392B1 (en) | Method and device for reducing read delay | |
US8086919B2 (en) | Controller having flash memory testing functions, and storage system and testing method thereof | |
CN109933280B (zh) | 数据存储装置及其操作方法 | |
US10803972B2 (en) | Flash memory module, storage system, and method of controlling flash memory | |
KR102571747B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
US8902671B2 (en) | Memory storage device, memory controller thereof, and method for programming data thereof | |
KR20110089728A (ko) | 솔리드 스테이트 드라이브의 에러 제어 방법 | |
CN101477480B (zh) | 内存控制方法、装置及内存读写系统 | |
CN102135927A (zh) | 一种基于nand flash的系统引导方法和装置 | |
CN113835923A (zh) | 一种复位系统、数据处理系统以及相关设备 | |
CN102955751A (zh) | 存储器储存装置、存储器控制器与数据写入方法 | |
CN112632643A (zh) | 防止闪存数据丢失的方法、固态硬盘控制器、固态硬盘 | |
TWI473103B (zh) | 快閃記憶體儲存裝置及其不良儲存區域的判定方法 | |
WO2021088368A1 (zh) | 一种存储器的修复方法及装置 | |
CN113366576A (zh) | 用于存储器系统上的功率损耗操作的保持自测试 | |
CN102915260B (zh) | 固态硬盘容错的方法及其固态硬盘 | |
CN102890645A (zh) | 存储器储存装置、存储器控制器与数据写入方法 | |
CN109426582B (zh) | 用于存储装置为错误处置进行数据处理的方法及控制器 | |
CN110837444A (zh) | 一种存储器故障处理方法及装置 | |
CN114579163A (zh) | 一种磁盘固件升级方法、计算装置及系统 | |
WO2017012507A1 (zh) | 一种数据恢复方法及装置 | |
CN113467709A (zh) | 存储器系统及其操作方法 | |
US10861576B2 (en) | Nonvolatile memory device, operating method thereof and data storage device including the same | |
CN113094307B (zh) | 映射信息管理方法、存储器存储装置及存储器控制器 | |
CN115705262A (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 |