CN103544995A - 一种坏道修复方法及装置 - Google Patents

一种坏道修复方法及装置 Download PDF

Info

Publication number
CN103544995A
CN103544995A CN201310378406.9A CN201310378406A CN103544995A CN 103544995 A CN103544995 A CN 103544995A CN 201310378406 A CN201310378406 A CN 201310378406A CN 103544995 A CN103544995 A CN 103544995A
Authority
CN
China
Prior art keywords
sector
data
physical page
sign
write
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.)
Granted
Application number
CN201310378406.9A
Other languages
English (en)
Other versions
CN103544995B (zh
Inventor
周猛
黎燕
周建华
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310378406.9A priority Critical patent/CN103544995B/zh
Priority to EP14840873.5A priority patent/EP3029570B1/en
Priority to PCT/CN2014/070496 priority patent/WO2015027678A1/zh
Publication of CN103544995A publication Critical patent/CN103544995A/zh
Priority to US15/056,402 priority patent/US10127099B2/en
Application granted granted Critical
Publication of CN103544995B publication Critical patent/CN103544995B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/079Root cause analysis, i.e. error or fault diagnosis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0653Monitoring storage devices or systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/70Masking faults in memories by using spares or by reconfiguring
    • G11C29/78Masking faults in memories by using spares or by reconfiguring using programmable devices
    • G11C29/80Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout
    • G11C29/816Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout
    • G11C29/82Masking faults in memories by using spares or by reconfiguring using programmable devices with improved layout for an application-specific layout for EEPROMs
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1024Latency reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1032Reliability improvement, data loss prevention, degraded operation etc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7203Temporary buffering, e.g. using volatile buffer or dedicated buffer blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7209Validity control, e.g. using flags, time stamps or sequence numbers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Human Computer Interaction (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例公开了一种坏道修复方法及装置,涉及计算机领域,解决了整个Page发生了UNC时,以Sector为单位进行修复时修复不成功的问题。具体方案为:SSD接收主机发送的第一写操作指令,根据第一写操作指令中包含的第一扇区的LBA读取第一扇区所在的物理页的数据;当读取物理页的数据失败时,在缓存中分配与物理页大小相同的存储空间,并将存储空间的数据设置为预设数据;根据第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为需要写入第一扇区的数据;根据物理页的地址,将存储空间中的数据写入SSD的闪存中,以完成对第一扇区的修复。本发明用于固态硬盘坏道修复的过程中。

Description

一种坏道修复方法及装置
技术领域
本发明涉及计算机领域,尤其涉及一种坏道修复方法及装置。
背景技术
硬盘是计算机的主要存储媒介,其中固态硬盘(Solid State Disk,SSD)是硬盘中比较常用的一种,SSD是一种利用固态电子存储芯片阵列制成的硬盘,其主要利用Flash芯片作为存储介质来存储数据,目前比较常见的Flash芯片为Nand Flash。在目前常见的Nand Flash中,其每个片选信号(Chip Enable,CE)对应8192个块(Block),每个Block包含128个页(Page),其中Page是Nand Flash进行数据读写操作的最小单元,每个Page大小一般为4K字节(Byte),而主机对硬盘进行数据读写操作的最小单元为1个扇区(Sector),每个Sector的大小一般情况下为512B,综上所述可以得到的是,主机进行读写操作的最小单元与Nand Flash进行数据读写操作的最小单元不一致,在主机进行写操作时,若主机写入Nand Flash的数据的小于一个Page时,通过采用预填充的方案才可以将数据成功写入Nand Flash中。
众所周知,硬盘是很容易发生故障的,其中无法纠正的ECC编码错误(Uncorrectable Error Correcting Code error,UNC)是最常见的故障之一。目前常采用独立磁盘冗余阵列(redundant array of independentdisks,RAID)机制来解决UNC问题,当硬盘中的某个盘发生UNC时,可以通过读取其他盘的信息对发生UNC的位置进行重新写入以实现修复的目的。但是在采用Nand Flash为存储介质的硬盘中,由于主机进行数据读写操作的最小单元为1个Sector(如,1个Sector为512B),而Nand Flash的最小写入单元为1个Page(如,1个Page为4KB),所以需采用预填充的方案才可以成功的将数据重新写入发生UNC的位置进行修复。在整个Page发生UNC的情况下,当主机以Sector为单位进行修复时,硬盘接收主机针对某个Sector的写入指令时,需要将该Sector所在的Page读取到随机存取存储器(Random Access Memory,RAM)中,但是由于整个Page发生了UNC,读取会发生失败,这样硬盘会放弃本次写入操作,并向主机回复写入成功,此时主机会再次针对该Sector的进行读取操作,以确认主机对该Sector的修复操作是否成功。由于硬盘实际上并没有成功将数据写入该Sector,那么主机读取发生失败,会判断该Sector所在盘故障(实际该盘仍然可用),最终将该盘踢除,导致RAID降级,影响了系统的可靠性。
发明内容
本发明的实施例提供一种坏道修复的方法及装置,解决了整个Page发生了UNC时,以Sector为单位进行修复时修复不成功的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
本发明的第一方面,提供一种坏道修复方法,包括:
固态硬盘(Solid State Disk,SSD)接收主机发送的第一写操作指令,其中,所述第一写操作指令包含有第一扇区的逻辑扇区地址(Logical Block Addressing,LBA)以及需要写入所述第一扇区的数据;
根据所述第一扇区的LBA读取所述第一扇区所在的物理页的数据;
当读取所述物理页的数据失败时,在缓存中分配与所述物理页大小相同的存储空间,并将所述存储空间的数据设置为预设数据;
根据所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据;
根据所述物理页的地址,将所述存储空间中的数据写入所述SSD的闪存中,以完成对所述第一扇区的修复。
结合第一方面,在一种可能的实现方式中,所述存储空间包含至少两个存储区间,其中每个存储区间对应所述物理页中的一个扇区;
所述方法还包括:
当读取所述物理页的数据失败时,设置所述存储空间中的每个存储区间的标识为第一标识,其中,所述第一标识用于表示存储区间中的数据为失效数据;
在所述根据所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据之后,还包括:
将所述与所述第一扇区对应存储区间的标识设置为第二标识;其中,所述第二标识用于表示所述存储区间中的数据为有效数据;
将所述存储空间中的每个存储区间的标识写入所述SSD的冗余空间中。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,在所述根据所述物理页的地址,将所述存储空间中的数据写入所述SSD的闪存中之后,还包括:
接收所述主机发送的第二写操作指令,其中,所述第二写操作指令中包含有所述物理页中的第二扇区的LBA以及与需要写入所述第二扇区的数据;
根据所述第二扇区的LBA将所述物理页的数据和所述物理页中的每个扇区的标识读取至缓存中;
根据所述第二扇区的LBA,将所述第二扇区的预设数据更新为所述需要写入所述第二扇区的数据,并将所述第二扇区的标识设置为第二标识;
将更新后的所述物理页的数据以及所述物理页中的每个扇区的标识写入所述SSD的闪存中,以完成对所述第二扇区的修复,其中,所述物理页中的每个扇区的标识被写入所述SSD的冗余空间中。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,还包括:
接收所述主机发送的读操作指令;其中,所述读取操作指令包含有待读取的扇区的LBA;
根据所述待读取的扇区的LBA获取所述待读取的扇区的标识;
当所述待读取的扇区的标识为第一标识时,向所述主机发送响应消息,其中,所述响应消息用于通知所述主机所述扇区的数据为失效数据。
结合第一方面和上述可能的实现方式,在另一种可能的实现方式中,还包括:
当所述待读取的扇区的标识为第二标识时,读取所述扇区的数据,并将所述扇区的数据发送至所述主机。
本发明的第二方面,提供一种坏道修复装置,包括:
接收模块,用于接收主机发送的第一写操作指令,其中,所述第一写操作指令包含有第一扇区的逻辑扇区地址(Logical BlockAddressing,LBA)以及需要写入所述第一扇区的数据;
读取模块,用于根据所述接收模块得到的所述第一扇区的LBA读取所述第一扇区所在的物理页的数据;
处理模块,用于当所述读取模块读取所述物理页的数据失败时,在缓存中分配与所述物理页大小相同的存储空间,并将所述存储空间的数据设置为预设数据;
更新模块,用于根据所述接收模块得到的所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据;
写入模块,用于根据所述物理页的地址,将所述存储空间中的数据写入固态硬盘(Solid State Disk,SSD)的闪存中,以完成对所述第一扇区的修复。
结合第二方面,在一种可能的实现方式中,所述存储空间包含至少两个存储区间,其中每个存储区间对应所述物理页中的一个扇区;
所述装置还包括:
设置模块,还用于当所述读取模块读取所述物理页的数据失败时,设置所述存储空间中的每个存储区间的标识为第一标识,其中,所述第一标识用于表示存储区间中的数据为失效数据;
所述设置模块,还用于在所述更新模块根据所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据之后,将所述与所述第一扇区对应存储区间的标识设置为第二标识;其中,所述第二标识用于表示所述存储区间中的数据为有效数据;
所述写入模块,还用于将所述存储空间中的每个存储区间的标识写入所述SSD的冗余空间中。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,
所述接收模块,还用于在所述写入模块根据所述物理页的地址,将所述存储空间中的数据写入所述SSD的闪存中之后,接收所述主机发送的第二写操作指令,其中,所述第二写操作指令中包含有所述物理页中的第二扇区的LBA以及与需要写入所述第二扇区的数据;
所述读取模块,还用于根据所述接收模块得到的所述第二扇区的LBA将所述物理页的数据和所述物理页中的每个扇区的标识读取至缓存中;
所述处理模块,还用于根据所述接收模块得到的所述第二扇区的LBA,将所述第二扇区的预设数据更新为所述需要写入所述第二扇区的数据,并将所述第二扇区的标识设置为第二标识;
所述写入模块,还用于将更新后的所述物理页的数据以及所述物理页中的每个扇区的标识写入所述SSD的闪存中,以完成对所述第二扇区的修复,其中,所述物理页中的每个扇区的标识被写入所述SSD的冗余空间中。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,
所述接收模块,还用于接收所述主机发送的读操作指令;其中,所述读取操作指令包含有待读取的扇区的LBA;
所述装置还包括:
获取模块,用于根据所述接收模块得到的所述待读取的扇区的LBA获取所述待读取的扇区的标识;
发送模块,用于当所述获取模块得到的所述待读取的扇区的标识为第一标识时,向所述主机发送响应消息,其中,所述响应消息用于通知所述主机所述扇区的数据为失效数据。
结合第二方面和上述可能的实现方式,在另一种可能的实现方式中,
所述读取模块,还用于当所述获取模块得到的所述待读取的扇区的标识为第二标识时,读取所述扇区的数据,并将所述扇区的数据发送至所述主机。
本发明实施例提供的坏道修复方法及装置,SSD根据接收到的主机发送的第一写操作指令中包含的第一扇区的LBA去读取第一扇区所在的物理页的数据时,若读取物理页的数据失败,则在缓存中分配与物理页大小相同的存储空间,并将存储空间的数据设置为预设数据,然后根据第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为述需要写入第一扇区的数据,最后根据物理页的地址,将存储空间中的数据写入SSD的闪存中。从而解决了整个Page发生了UNC时,以Sector为单位进行修复时修复不成功的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1提供的一种坏道修复方法流程图;
图2为本发明实施例2提供的一种坏道修复方法流程图;
图3为本发明实施例2提供的另一种坏道修复方法流程图;
图4为本发明实施例3提供的一种坏道修复装置组成示意图;
图5为本发明实施例3提供的另一种坏道修复装置组成示意图;
图6为本发明实施例4提供的一种坏道修复装置组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中,当主机以Sector为单位进行修复时,若SSD接收到主机针对某个Sector的写入指令,则需要将该Sector所在的Page读取到RAM中,但是由于该Page发生了UNC,读取会发生失败,此时便不能成功修复该Sector,主机会将该盘踢除,导致RAID降级,最终影响了系统的可靠性。
为了克服现有技术的缺陷,本发明实施例提供一种坏道修复方法及装置,具体的参见以下实施例1-实施例4。
实施例1
本发明实施例1提供一种坏道修复方法,如图1所示,该方法可以包括:
101、SSD接收主机发送的第一写操作指令。
其中,当SSD中整个物理页发生UNC,主机需要以单扇区为单位对发生UNC的物理页进行修复时,主机可以向该物理页中的某个扇区写入数据,具体的,主机可以向SSD发送第一写操作指令,此时SSD接收主机发送的第一写操作指令,其中该第一写操作指令包含第一扇区的逻辑扇区地址(Logical Block Addressing,LBA)以及与第一扇区的LBA对应的需要写入第一扇区的数据,该第一扇区为发生UNC的物理页包含的扇区中的任意一个。
102、SSD根据第一扇区的LBA读取第一扇区所在的物理页的数据。
其中,当SSD接收到主机发送的第一写操作指令之后,可以根据接收到的第一写操作指令中包含的第一扇区的LBA获取第一扇区所在的物理页的地址,并根据物理页的地址对该物理页的数据进行读取操作。
103、当读取物理页的数据失败时,SSD在缓存中分配与物理页大小相同的存储空间,并将存储空间的数据设置为预设数据。
其中,当SSD根据接收到的第一写操作指令包含的第一扇区的LBA对第一扇区所在的物理页的数据进行读取操作时,读取该物理页的数据失败,此时SSD可以直接在缓存中分配与该物理页大小相同的存储空间,并将存储空间的数据设置为预设数据。例如,预设数据为0,则SSD在缓存中将与物理页大小相同的存储空间的数据设置为0。
需要说明的是,在本发明实施例中,预设数据是可以与普通数据区分开的特殊数据,本发明实施例在此对预设数据的具体数值不做限制。
需要说明的是,在本发明实施例中,缓存可以是SSD中的随机存取存储器(Random Access Memory,RAM)或只读存储器(Read OnlyMemory,ROM)等存储器,本发明实施例在此不做限制。
104、SSD根据第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为需要写入第一扇区的数据。
其中,当SSD在缓存中分配与物理页大小相同的存储空间,并将该存储空间的数据设置为预设数据之后,可以根据接收到的主机发送的第一写操作指令中包含的第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为需要写入第一扇区的数据。
105、SSD根据物理页的地址,将存储空间中的数据写入SSD的闪存中,以完成对第一扇区的修复。
其中,当SSD根据第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为需要写入第一扇区的数据之后,可以根据物理页的地址,将存储空间中的数据写入SSD的闪存中,覆盖该物理页中原有的数据,此时便完成了对第一扇区的修复。
本发明实施例提供的坏道修复方法,SSD根据接收到的主机发送的第一写操作指令中包含的第一扇区的LBA读取第一扇区所在的物理页的数据,当读取物理页的数据失败时,在缓存中分配与物理页大小相同的存储空间,并将存储空间的数据设置为预设数据,然后根据第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为述需要写入第一扇区的数据,最后根据物理页的地址,将存储空间中的数据写入SSD的闪存中,通过将在缓存中分配的与物理页大小相同的存储空间的数据设置为预设数据,并将与第一扇区对应存储区间的预设数据更新为需要写入第一扇区的数据,并将更新后的存储空间的数据写入SSD的闪存中替换发生UNC的物理页的原有数据,解决了整个Page发生了UNC时,以Sector为单位进行修复时修复不成功的问题。
实施例2
本发明实施例2提供一种坏道修复方法,如图2所示,该方法可以包括:
201、SSD接收主机发送的第一写操作指令。
其中,当SSD中整个物理页发生UNC,主机需要以单扇区为单位对发生UNC的物理页进行修复时,主机可以向该物理页中的某个扇区写入数据,具体的,主机可以向SSD发送第一写操作指令,此时SSD便可以接收主机发送的第一写操作指令。其中,该第一写操作指令包含第一扇区的LBA以及与第一扇区的LBA对应的需要写入第一扇区的数据,该第一扇区为发生UNC的物理页包含的扇区中的任意一个。
202、SSD根据第一扇区的LBA读取第一扇区所在的物理页的数据。
其中,当SSD接收到主机发送的第一写操作指令之后,可以根据接收到的第一写操作指令中包含的第一扇区的LBA获取第一扇区所在的物理页的地址,并根据物理页的地址对该物理页的数据进行读取操作。
203、当读取物理页的数据失败时,SSD在缓存中分配与物理页大小相同的存储空间,并将存储空间的数据设置为预设数据。
其中,当SSD读取物理页的数据失败时,SSD在缓存中分配与物理页大小相同的存储空间,并将存储空间的数据设置为预设数据。其中,该存储空间中包含至少两个存储区间,每个存储区间对应物理页中的一个扇区,也就是说将存储空间的数据设置为预设数据具体的是将存储空间中包含的每个存储区间的数据设置为预设数据。
需要说明的是,在本发明实施例中,预设数据是可以与普通数据区分开的特殊数据,本发明实施例在此对预设数据的具体数值不做限制。
204、当读取物理页的数据失败时,SSD设置存储空间中的每个存储区间的标识为第一标识。
其中,该存储空间包含至少两个存储区间,每个存储区间对应物理页中的一个扇区。为了可以区分存储空间中的每个存储区间的数据是否是有效的数据,在本发明实施例中,SSD为存储空间包含的每个存储区间设置了对应的标识。具体的,若SSD读取物理页的数据失败,SSD可以设置存储空间中的每个存储区间的标识为第一标识。其中,存储区间的标识用于表示对应存储区间的数据是否有效,第一标识用于表示对应存储区间的数据为失效数据。
需要说明的是,在步骤202根据第一扇区的LBA对第一扇区所在的物理页的数据进行读取操作,若读取物理页的数据失败时,可以先执行步骤203,然后再执行步骤204;或者也可以先执行步骤204,然后再执行步骤203;或者还可以在读取物理页的数据失败之后,同时执行步骤203和步骤204。也就是说,本发明实施例中对步骤203和步骤204的执行的先后顺序不做限制,通常情况下,也可以同时执行。
205、SSD根据第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为需要写入第一扇区的数据。
其中,当SSD将在缓存中分配与物理页大小相同存储空间的数据设置为预设数据,并设置存储空间中的每个存储区间的标识为第一标识之后,可以根据接收到的第一写操作指令中包含的第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为需要写入第一扇区的数据,此时存储空间中与第一扇区对应存储区间的数据即为需要修复的物理页中的第一扇区的数据。
206、SSD将与第一扇区对应存储区间的标识设置为第二标识。
其中,由于存储空间中与第一扇区对应存储区间的数据已经为需写入第一扇区的数据,因此,此时SSD需要将存储空间中与第一扇区对应存储区间的有效标识由第一标识修改为第二标识,其中,该第二标识用于表示存储区间中的数据为有效数据。
需要说明的是,步骤205和步骤206的执行没有先后顺序,通常情况下还可以同时执行,本发明实施例在此对步骤205和步骤206的执行的先后顺序不做限制。
207、SSD根据物理页的地址,将存储空间中的数据写入SSD的闪存中,以完成对第一扇区的修复,并将存储空间中的每个存储区间的标识写入SSD的冗余空间中。
其中,当SSD根据第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为需要写入第一扇区的数据,并将与第一扇区对应存储区间的标识设置为第二标识之后,SSD根据物理页的地址,将存储空间中的数据写入SSD的闪存中替换该物理页中原有的数据,以完成对第一扇区的修复,并且将存储空间中的每个存储区间的标识也写入SSD的冗余空间中。众所周知,在Nand Flash中每个物理页都有一定的冗余空间,在本发明实施例中,可以将存储空间中的每个存储区间的标识写入物理页的冗余空间中,这样不会增加系统的表项,节省了RAN的空间,节约了成本。例如,SSD以Nand Flash为存储介质,主机进行数据读写操作的最小单元为1个Sector,每个Sector的大小以512B,物理页对SSD以外体现的实际存放数据的空间大小为8个Sector(8*512B=4096B),但是对于SSD来说实际上一个物理页的大小比8个Sector的大小要大,例如物理页的大小有可能是如4120B>4096B,此时便可以用冗余空间来存放存储空间中的每个存储区间的标识,也就是该物理页包含的每个扇区对应的标识。
可以理解的是,由于存储空间包含的存储区间对应物理页中的扇区,那么当SSD根据物理页的地址,将存储空间中的数据写入SSD的闪存中,并将存储空间中的每个存储区间的标识写入SSD的冗余空间中之后,存储空间中的每个存储区间的标识也就是物理页中每个扇区的标识,也就是说。该标识表示物理页中每个扇区的数据是否为有效数据。
当SSD根据物理页的地址,将存储空间中的数据写入SSD的闪存中,并将存储空间中的每个存储区间的标识写入SSD的冗余空间中之后,在一种应用场景中,若主机需要对发生UNC的物理页中的第二扇区的数据进行修复,此时具体的可以执行以下步骤208-步骤211。
208、SSD接收主机发送的第二写操作指令。
其中,当主机需要修复第二扇区的数据时,可以向SSD发送第二写操作指令,此时SSD便可以接收主机发送的第二写操作指令。其中,该第二写操作指令中包含有物理页中的第二扇区的LBA以及与第二扇区的LBA对应的需要写入第二扇区的数据,第二扇区为物理页包含的至少两个扇区中除第一扇区外的任意一个扇区。
209、SSD根据第二扇区的LBA将物理页的数据和物理页中的每个扇区的标识读取至缓存中。
其中,当SSD接收到主机发送的第二写操作指令之后,可以根据第二写操作指令包含的第二扇区的LBA将第二扇区所在的物理页的数据以及该物理页中的每个扇区的标识读取至缓存中。
210、SSD根据第二扇区的LBA,将第二扇区的预设数据更新为需要写入所述第二扇区的数据,并将第二扇区的标识设置为第二标识。
其中,当SSD根据第二扇区的LBA将物理页的数据和物理页中的每个扇区的标识读取至缓存中之后,可以根据第二写操作指令中包含的第二扇区的LBA,将第二扇区的预设数据更新为需要写入所述第二扇区的数据,覆盖第二扇区原有的数据,并且,需要将第二扇区对应的标识设置为第二标识,以指示第二扇区的数据为有效数据。
211、SSD将更新后的物理页的数据以及物理页中的每个扇区的标识写入述SSD的闪存中,以完成对第二扇区的修复。
其中,当SSD根据第二扇区的LBA,将第二扇区的预设数据更新为需要写入所述第二扇区的数据,并将第二扇区的标识设置为第二标识之后,便可以更新后的物理页的数据以及物理页中的每个扇区的标识写入述SSD的闪存中,此时便完成了物理页中第二扇区数据的修复,其中,物理页中的每个扇区的标识被写入SSD的冗余空间中。
需要说明的是,通过重复执行步骤208-步骤211便可以将整个物理页中的所有扇区都修复完成。
当SSD根据物理页的地址,将存储空间中的数据写入SSD的闪存中,并将存储空间中的每个存储区间的标识写入SSD的冗余空间中之后,在另一种应用场景中,如图3所示,若主机需要读取物理页中某个扇区的数据,此时具体的可以执行以下步骤212-步骤215。
212、SSD接收主机发送的读操作指令。
其中,当主机需要读取物理页中某个扇区的数据时,可以向SSD发送读操作指令,此时SSD便可以接收主机发送的读操作指令。其中该读取操作指令包含有待读取的扇区的LBA。
213、SSD根据待读取的扇区的LBA获取待读取的扇区的标识。
其中,当SSD接收到主机发送的读操作指令之后,便可以根据读操作指令包含的待读取的扇区的LBA获取待读取的扇区的标识。
214、当待读取的扇区的标识为第一标识时,SSD向主机发送响应消息。
其中,当SSD根据待读取的扇区的LBA获取到待读取的扇区的标识之后,需要对待读取的扇区的标识进行判断,当确定待读取的扇区的标识为第一标识时,则表明该待读取的扇区的数据为失效数据,此时SSD可以向主机发送响应消息。其中,该响应消息用于通知主机该待读取的扇区的数据为失效数据。
可选的,当SSD接收到主机发送的读操作指令之后,可以根据读操作指令中包含的待读取的扇区的LBA直接读取对应的扇区的数据,并在读取到该待读取的扇区的数据之后,判断得到的待读取的扇区的数据是否为预设数据,并在确定得到的待读取的扇区的数据为预设数据时,向主机发送用于通知主机第二扇区的数据为失效数据的响应消息。
215、当待读取的扇区的标识为第二标识时,SSD读取该扇区的数据,并将该扇区的数据发送至主机。
其中,当SSD根据待读取的扇区的LBA获取到待读取的扇区的标识之后,确定待读取的扇区的标识为第二标识时,则表明该待读取的扇区中的数据为有效数据,此时SSD可以读取该扇区的数据,并将该扇区的数据发送至主机。
可选的,当SSD接收到主机发送的读操作指令之后,也可以根据读操作指令中包含的待读取的扇区的LBA直接读取该待读取的扇区的数据,并在得到该待读取的扇区的数据之后,判断得到的该待读取的扇区的数据是否为预设数据,并在确定得到的该待读取的扇区的数据不是预设数据时,将读取到的待读取的扇区的数据发送至主机。
需要说明的是,在本发明实施例中,缓存可以是SSD中的RAM或ROM等存储器,本发明实施例在此不做限制。
为了便于本领域技术人员的理解,对本发明实施例中的实施过程进行举例说明。
例如,SSD以Nand Flash为存储介质,物理页的大小为4K Byte,主机进行数据读写操作的最小单元为1个Sector,每个Sector的大小为512B,也就是说一个物理页包含8个Sector,预设数据为0,第一标识为1,第二标识为0。当整个物理页发生UNC时,此时主机需要对物理页中的Sector2的数据进行修复,便可以向SSD发送写操作指令,该写操作指令中包含Sector2的LBA以及Sector2的LBA对应的需要写入Sector2的数据,当SSD接收到写操作指令之后,可以根据Sector2的LBA获取Sector2所在的物理页的地址,并根据该物理页的地址读取该物理页的数据(该物理页中包含8个Sector),当读取该物理页的数据失败时,SSD在缓存(如RAM)中分配与该物理页大小相同的存储空间(该存储空间中包含8个存储区间,每个存储区间的大小与Sector的大小相同),并将该存储空间包含的8个存储区间的数据设置为0,并将存储空间中的8个存储区间的标识设置为1,此时SSD可以将Sector2现有的数据用写操作指令中包含的Sector2的LBA对应的需要写入Sector2的数据覆盖,并将Sector2对应存储区间的标识修改为0,最后根据物理页的地址,将存储空间中的数据写入SSD的闪存中,并将存储空间中的8个存储区间的标识写入SSD的冗余空间中。
在将将存储空间中的数据写入SSD的闪存中,并将存储空间中的8个存储区间的标识写入SSD的冗余空间中之后,若SSD接收到主机发送的用于读取Sector2的数据的读操作指令时,便可以根据读操作指令中的Sector2的LBA获取Sector2的标识,并在判断得到Sector2的标识为第二标识,此时SSD便可以将Sector2的数据读取出来,并发送至主机;若SSD接收到主机发送的用于读取除Sector2之外的其余的Sector的数据的读操作指令时,可以根据读操作指令中的Sector的LBA获取该Sector的标识,在判断得到该Sector的标识为第一标识时,向主机发送用于通知主机需要读取的Sector的数据为失效数据的响应消息。
在将存储空间中的数据写入SSD的闪存中,并将存储空间中的8个存储区间的标识写入SSD的冗余空间中之后,若主机需要修复除Sector2之外的其余的Sector的数据时,可以向SSD发送该Sector的写操作指令,此时SSD便可以根据写操作指令包含的Sector的LBA获取物理页和物理页包含的8个Sector对应的有效标识,并将物理页的数据和8个Sector对应的有效标识读取至缓存(RAM)中,然后根据该Sector的写操作指令更新物理页包含的该Sector的数据,并将该Sector对应的有效标识设置为第二标识,最后将更新后的物理页的数据以及物理页中的每个扇区的标识写入SSD的闪存中,以完成对该Sector的修复,重复该过程,便可以将整个物理页中的所有扇区都修复完成。
本发明实施例提供的坏道修复方法,SSD根据接收到的主机发送的第一写操作指令中包含的第一扇区的LBA读取第一扇区所在的物理页的数据,当读取物理页的数据失败时,在缓存中分配与物理页大小相同的存储空间,并将存储空间的数据设置为预设数据,然后根据第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为述需要写入第一扇区的数据,最后根据物理页的地址,将存储空间中的数据写入SSD的闪存中,通过将在缓存中分配的与物理页大小相同的存储空间的数据设置为预设数据,并将与第一扇区对应存储区间的预设数据更新为需要写入第一扇区的数据,并将更新后的存储空间的数据写入SSD的闪存中替换发生UNC的物理页的原有数据,解决了整个Page发生了UNC时,以Sector为单位进行修复时修复不成功的问题。
并且,通过设置Page中每个Sector对应的有效标识,在未增加系统表项的情况下,实现了以Sector为单位逐步修复整个Page出现的UNC问题,并增加了系统的灵活性。
实施例3
本发明实施例3提供一种坏道修复装置,如图4所示,包括:接收模块31、读取模块32、处理模块33、更新模块34、写入模块35。
接收模块31,用于接收主机发送的第一写操作指令,其中,所述第一写操作指令包含有第一扇区的逻辑扇区地址(Logical BlockAddressing,LBA)以及需要写入所述第一扇区的数据。
读取模块32,用于根据所述接收模块31得到的所述第一扇区的LBA读取所述第一扇区所在的物理页的数据。
处理模块33,用于当所述读取模块32读取所述物理页的数据失败时,在缓存中分配与所述物理页大小相同的存储空间,并将所述存储空间的数据设置为预设数据。
更新模块34,用于根据所述接收模块31得到的所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据。
写入模块35,用于根据所述物理页的地址,将所述存储空间中的数据写入固态硬盘(Solid State Disk,SSD)的闪存中,以完成对所述第一扇区的修复。
进一步的,所述存储空间包含至少两个存储区间,其中每个存储区间对应所述物理页中的一个扇区。
如图5所示,所述装置还可以包括:设置模块36。
设置模块36,还用于当所述读取模块32读取所述物理页的数据失败时,设置所述存储空间中的每个存储区间的标识为第一标识,其中,所述第一标识用于表示存储区间中的数据为失效数据。
所述设置模块36,还用于在所述更新模块34根据所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据之后,将所述与所述第一扇区对应存储区间的标识设置为第二标识;其中,所述第二标识用于表示所述存储区间中的数据为有效数据。
所述写入模块35,还用于将所述存储空间中的每个存储区间的标识写入所述SSD的冗余空间中。
进一步的,所述接收模块31,还用于在所述写入模块35根据所述物理页的地址,将所述存储空间中的数据写入所述SSD的闪存中之后,接收所述主机发送的第二写操作指令,其中,所述第二写操作指令中包含有所述物理页中的第二扇区的LBA以及与需要写入所述第二扇区的数据。
所述读取模块32,还用于根据所述接收模块31得到的所述第二扇区的LBA将所述物理页的数据和所述物理页中的每个扇区的标识读取至缓存中。
所述处理模块33,还用于根据所述接收模块31得到的所述第二扇区的LBA,将所述第二扇区的预设数据更新为所述需要写入所述第二扇区的数据,并将所述第二扇区的标识设置为第二标识。
所述写入模块35,还用于将更新后的所述物理页的数据以及所述物理页中的每个扇区的标识写入所述SSD的闪存中,以完成对所述第二扇区的修复,其中,所述物理页中的每个扇区的标识被写入所述SSD的冗余空间中。
进一步的,所述接收模块31,还用于接收所述主机发送的读操作指令;其中,所述读取操作指令包含有待读取的扇区的LBA。
所述装置还包括:获取模块37、发送模块38。
获取模块37,用于根据所述接收模块31得到的所述待读取的扇区的LBA获取所述待读取的扇区的标识。
发送模块38,用于当所述获取模块37得到的所述待读取的扇区的标识为第一标识时,向所述主机发送响应消息,其中,所述响应消息用于通知所述主机所述扇区的数据为失效数据。
进一步的,所述读取模块32,还用于当所述获取模块37得到的所述待读取的扇区的标识为第二标识时,读取所述扇区的数据,并将所述扇区的数据发送至所述主机。
需要说明的是,本发明实施例提供的坏道修改装置中功能模块的具体描述可以参考方法实施例中对应内容的具体描述,本发明实施例在此不再详细赘述。
本发明实施例提供的坏道修复装置,根据接收到的主机发送的第一写操作指令中包含的第一扇区的LBA读取第一扇区所在的物理页的数据,当读取物理页的数据失败时,在缓存中分配与物理页大小相同的存储空间,并将存储空间的数据设置为预设数据,然后根据第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为述需要写入第一扇区的数据,最后根据物理页的地址,将存储空间中的数据写入SSD的闪存中,通过将在缓存中分配的与物理页大小相同的存储空间的数据设置为预设数据,并将与第一扇区对应存储区间的预设数据更新为需要写入第一扇区的数据,并将更新后的存储空间的数据写入SSD的闪存中替换发生UNC的物理页的原有数据,解决了整个Page发生了UNC时,以Sector为单位进行修复时修复不成功的问题。
并且,通过设置Page中每个Sector对应的有效标识,在未增加系统表项的情况下,实现了以Sector为单位逐步修复整个Page出现的UNC问题,并增加了系统的灵活性。
实施例4
本发明实施例4提供一种坏道修复装置,如图6所示,包括:总线接口41、处理器42,其中,所述总线接口41用于与外部设备进行通信。
所述总线接口41,用于接收主机发送的第一写操作指令,其中,所述第一写操作指令包含有第一扇区的LBA以及需要写入所述第一扇区的数据。
所述处理器42,用于根据所述总线接口41得到的所述第一扇区的LBA读取所述第一扇区所在的物理页的数据.
所述处理器42,还用于当读取所述物理页的数据失败时,在缓存中分配与所述物理页大小相同的存储空间,并将所述存储空间的数据设置为预设数据。
所述处理器42,还用于根据所述总线接口41得到的所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据。
所述处理器42,还用于根据所述物理页的地址,将所述存储空间中的数据写入SSD的闪存中,以完成对所述第一扇区的修复。
在本发明实施例中,进一步可选的,所述存储空间包含至少两个存储区间,其中每个存储区间对应所述物理页中的一个扇区。
所述处理器42,还用于当读取所述物理页的数据失败时,设置所述存储空间中的每个存储区间的标识为第一标识,其中,所述第一标识用于表示存储区间中的数据为失效数据。
所述处理器42,还用于在所述根据所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据之后,将所述与所述第一扇区对应存储区间的标识设置为第二标识;其中,所述第二标识用于表示所述存储区间中的数据为有效数据。
所述处理器42,还用于将所述存储空间中的每个存储区间的标识写入所述SSD的冗余空间中。
在本发明实施例中,进一步可选的,所述总线接口41,还用于在所述根据所述物理页的地址,将所述存储空间中的数据写入所述SSD的闪存中之后,接收所述主机发送的第二写操作指令,其中,所述第二写操作指令中包含有所述物理页中的第二扇区的LBA以及与需要写入所述第二扇区的数据。
所述处理器42,还用于根据所述总线接口41得到的所述第二扇区的LBA将所述物理页的数据和所述物理页中的每个扇区的标识读取至缓存中。
所述处理器42,还用于根据所述总线接口41得到的所述第二扇区的LBA,将所述第二扇区的预设数据更新为所述需要写入所述第二扇区的数据,并将所述第二扇区的标识设置为第二标识.
所述处理器42,还用于将更新后的所述物理页的数据以及所述物理页中的每个扇区的标识写入所述SSD的闪存中,以完成对所述第二扇区的修复,其中,所述物理页中的每个扇区的标识被写入所述SSD的冗余空间中。
在本发明实施例中,进一步可选的,所述总线接口41,还用于接收所述主机发送的读操作指令;其中,所述读取操作指令包含有待读取的扇区的LBA。
所述处理器42,还用于根据所述总线接口41得到的所述待读取的扇区的LBA获取所述待读取的扇区的标识.
所述处理器42,还用于当所述待读取的扇区的标识为第一标识时,向所述主机发送响应消息,其中,所述响应消息用于通知所述主机所述扇区的数据为失效数据。
在本发明实施例中,进一步可选的,所述处理器42,还用于当所述待读取的扇区的标识为第二标识时,读取所述扇区的数据,并将所述扇区的数据发送至所述主机。
需要说明的是,本发明实施例提供的坏道修复装置中功能模块的具体描述可以参考方法实施例中对应内容的具体描述,本发明实施例在此不再详细赘述。
本发明实施例提供的坏道修复装置,根据接收到的主机发送的第一写操作指令中包含的第一扇区的LBA读取第一扇区所在的物理页的数据,当读取物理页的数据失败时,在缓存中分配与物理页大小相同的存储空间,并将存储空间的数据设置为预设数据,然后根据第一扇区的LBA,将存储空间中与第一扇区对应存储区间的预设数据更新为述需要写入第一扇区的数据,最后根据物理页的地址,将存储空间中的数据写入SSD的闪存中,通过将在缓存中分配的与物理页大小相同的存储空间的数据设置为预设数据,并将与第一扇区对应存储区间的预设数据更新为需要写入第一扇区的数据,并将更新后的存储空间的数据写入SSD的闪存中替换发生UNC的物理页的原有数据,解决了整个Page发生了UNC时,以Sector为单位进行修复时修复不成功的问题。
并且,通过设置Page中每个Sector对应的有效标识,在未增加系统表项的情况下,实现了以Sector为单位逐步修复整个Page出现的UNC问题,并增加了系统的灵活性。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。

Claims (10)

1.一种坏道修复方法,其特征在于,包括:
固态硬盘(Solid State Disk,SSD)接收主机发送的第一写操作指令,其中,所述第一写操作指令包含有第一扇区的逻辑扇区地址(Logical Block Addressing,LBA)以及需要写入所述第一扇区的数据;
根据所述第一扇区的LBA读取所述第一扇区所在的物理页的数据;
当读取所述物理页的数据失败时,在缓存中分配与所述物理页大小相同的存储空间,并将所述存储空间的数据设置为预设数据;
根据所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据;
根据所述物理页的地址,将所述存储空间中的数据写入所述SSD的闪存中,以完成对所述第一扇区的修复。
2.根据权利要求1所述的坏道修复方法,其特征在于,所述存储空间包含至少两个存储区间,其中每个存储区间对应所述物理页中的一个扇区;
所述方法还包括:
当读取所述物理页的数据失败时,设置所述存储空间中的每个存储区间的标识为第一标识,其中,所述第一标识用于表示存储区间中的数据为失效数据;
在所述根据所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据之后,还包括:
将所述与所述第一扇区对应存储区间的标识设置为第二标识;其中,所述第二标识用于表示所述存储区间中的数据为有效数据;
将所述存储空间中的每个存储区间的标识写入所述SSD的冗余空间中。
3.根据权利要求2所述的坏道修复方法,其特征在于,在所述根据所述物理页的地址,将所述存储空间中的数据写入所述SSD的闪存中之后,还包括:
接收所述主机发送的第二写操作指令,其中,所述第二写操作指令中包含有所述物理页中的第二扇区的LBA以及与需要写入所述第二扇区的数据;
根据所述第二扇区的LBA将所述物理页的数据和所述物理页中的每个扇区的标识读取至缓存中;
根据所述第二扇区的LBA,将所述第二扇区的预设数据更新为所述需要写入所述第二扇区的数据,并将所述第二扇区的标识设置为第二标识;
将更新后的所述物理页的数据以及所述物理页中的每个扇区的标识写入所述SSD的闪存中,以完成对所述第二扇区的修复,其中,所述物理页中的每个扇区的标识被写入所述SSD的冗余空间中。
4.根据权利要求2所述的坏道修复方法,其特征在于,还包括:
接收所述主机发送的读操作指令;其中,所述读取操作指令包含有待读取的扇区的LBA;
根据所述待读取的扇区的LBA获取所述待读取的扇区的标识;
当所述待读取的扇区的标识为第一标识时,向所述主机发送响应消息,其中,所述响应消息用于通知所述主机所述扇区的数据为失效数据。
5.根据权利要求4所述的坏道修复方法,其特征在于,还包括:
当所述待读取的扇区的标识为第二标识时,读取所述扇区的数据,并将所述扇区的数据发送至所述主机。
6.一种坏道修复装置,其特征在于,包括:
接收模块,用于接收主机发送的第一写操作指令,其中,所述第一写操作指令包含有第一扇区的逻辑扇区地址(Logical BlockAddressing,LBA)以及需要写入所述第一扇区的数据;
读取模块,用于根据所述接收模块得到的所述第一扇区的LBA读取所述第一扇区所在的物理页的数据;
处理模块,用于当所述读取模块读取所述物理页的数据失败时,在缓存中分配与所述物理页大小相同的存储空间,并将所述存储空间的数据设置为预设数据;
更新模块,用于根据所述接收模块得到的所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据;
写入模块,用于根据所述物理页的地址,将所述存储空间中的数据写入固态硬盘(Solid State Disk,SSD)的闪存中,以完成对所述第一扇区的修复。
7.根据权利要求6所述的坏道修复装置,其特征在于,所述存储空间包含至少两个存储区间,其中每个存储区间对应所述物理页中的一个扇区;
所述装置还包括:
设置模块,用于当所述读取模块读取所述物理页的数据失败时,设置所述存储空间中的每个存储区间的标识为第一标识,其中,所述第一标识用于表示存储区间中的数据为失效数据;
所述设置模块,还用于在所述更新模块根据所述第一扇区的LBA,将所述存储空间中与所述第一扇区对应存储区间的预设数据更新为所述需要写入所述第一扇区的数据之后,将所述与所述第一扇区对应存储区间的标识设置为第二标识;其中,所述第二标识用于表示所述存储区间中的数据为有效数据;
所述写入模块,还用于将所述存储空间中的每个存储区间的标识写入所述SSD的冗余空间中。
8.根据权利要求7所述的坏道修复装置,其特征在于,
所述接收模块,还用于在所述写入模块根据所述物理页的地址,将所述存储空间中的数据写入所述SSD的闪存中之后,接收所述主机发送的第二写操作指令,其中,所述第二写操作指令中包含有所述物理页中的第二扇区的LBA以及与需要写入所述第二扇区的数据;
所述读取模块,还用于根据所述接收模块得到的所述第二扇区的LBA将所述物理页的数据和所述物理页中的每个扇区的标识读取至缓存中;
所述处理模块,还用于根据所述接收模块得到的所述第二扇区的LBA,将所述第二扇区的预设数据更新为所述需要写入所述第二扇区的数据,并将所述第二扇区的标识设置为第二标识;
所述写入模块,还用于将更新后的所述物理页的数据以及所述物理页中的每个扇区的标识写入所述SSD的闪存中,以完成对所述第二扇区的修复,其中,所述物理页中的每个扇区的标识被写入所述SSD的冗余空间中。
9.根据权利要求7所述的坏道修复装置,其特征在于:
所述接收模块,还用于接收所述主机发送的读操作指令;其中,所述读取操作指令包含有待读取的扇区的LBA;
所述装置还包括:
获取模块,用于根据所述接收模块得到的所述待读取的扇区的LBA获取所述待读取的扇区的标识;
发送模块,用于当所述获取模块得到的所述待读取的扇区的标识为第一标识时,向所述主机发送响应消息,其中,所述响应消息用于通知所述主机所述扇区的数据为失效数据。
10.根据权利要求9所述的坏道修复装置,其特征在于:
所述读取模块,还用于当所述获取模块得到的所述待读取的扇区的标识为第二标识时,读取所述扇区的数据,并将所述扇区的数据发送至所述主机。
CN201310378406.9A 2013-08-27 2013-08-27 一种坏道修复方法及装置 Active CN103544995B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201310378406.9A CN103544995B (zh) 2013-08-27 2013-08-27 一种坏道修复方法及装置
EP14840873.5A EP3029570B1 (en) 2013-08-27 2014-01-13 Bad track repairing method and apparatus
PCT/CN2014/070496 WO2015027678A1 (zh) 2013-08-27 2014-01-13 一种坏道修复方法及装置
US15/056,402 US10127099B2 (en) 2013-08-27 2016-02-29 Bad sector repair method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310378406.9A CN103544995B (zh) 2013-08-27 2013-08-27 一种坏道修复方法及装置

Publications (2)

Publication Number Publication Date
CN103544995A true CN103544995A (zh) 2014-01-29
CN103544995B CN103544995B (zh) 2016-09-21

Family

ID=49968374

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310378406.9A Active CN103544995B (zh) 2013-08-27 2013-08-27 一种坏道修复方法及装置

Country Status (4)

Country Link
US (1) US10127099B2 (zh)
EP (1) EP3029570B1 (zh)
CN (1) CN103544995B (zh)
WO (1) WO2015027678A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105808378A (zh) * 2016-02-26 2016-07-27 华为技术有限公司 元数据修复方法及装置
US9940204B2 (en) 2015-11-02 2018-04-10 International Business Machines Corporation Memory error recovery
CN112559387A (zh) * 2020-12-23 2021-03-26 湖南国科微电子股份有限公司 一种读请求处理方法、装置、设备及介质

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110309012B (zh) * 2018-03-27 2021-01-26 杭州海康威视数字技术股份有限公司 一种数据处理方法及其装置
JP7089423B2 (ja) * 2018-07-12 2022-06-22 ルネサスエレクトロニクス株式会社 情報処理装置及び制御方法
CN112214356B (zh) * 2020-10-21 2024-06-18 深圳忆联信息系统有限公司 文件数据恢复方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5349558A (en) * 1993-08-26 1994-09-20 Advanced Micro Devices, Inc. Sector-based redundancy architecture
CN1831780A (zh) * 2005-03-10 2006-09-13 松下电器产业株式会社 非易失性存储系统、非易失性存储装置、数据读出方法及读出程序
CN101527171A (zh) * 2009-04-17 2009-09-09 成都市华为赛门铁克科技有限公司 一种多通道并行纠错的闪存控制方法和装置
CN102193848A (zh) * 2011-06-02 2011-09-21 成都市华为赛门铁克科技有限公司 逻辑单元坏扇区的数据修复方法及装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5974544A (en) * 1991-12-17 1999-10-26 Dell Usa, L.P. Method and controller for defect tracking in a redundant array
WO2004072815A2 (en) * 2003-02-10 2004-08-26 Netezza Corporation Rapid regeneration of failed disk sector in a distributed database system
KR101067457B1 (ko) * 2008-03-01 2011-09-27 가부시끼가이샤 도시바 메모리 시스템
JP4498426B2 (ja) * 2008-03-01 2010-07-07 株式会社東芝 メモリシステム
US20100042900A1 (en) * 2008-08-18 2010-02-18 Apple Inc. Write Failure Handling of MLC NAND
WO2010054410A2 (en) * 2008-11-10 2010-05-14 Fusion Multisystems, Inc. (Dba Fusion-Io) Apparatus, system, and method for predicting failures in solid-state storage
CN101944386B (zh) * 2009-07-03 2013-11-13 群联电子股份有限公司 识别闪速存储器中错误数据的控制电路及存储系统与方法
US9047178B2 (en) * 2010-12-13 2015-06-02 SanDisk Technologies, Inc. Auto-commit memory synchronization
KR20130034522A (ko) 2011-09-28 2013-04-05 삼성전자주식회사 비휘발성 메모리 장치의 데이터 리드 방법, 및 이를 수행하는 장치
CN102708019B (zh) * 2012-04-28 2014-12-03 华为技术有限公司 一种硬盘数据恢复方法、装置及系统

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5349558A (en) * 1993-08-26 1994-09-20 Advanced Micro Devices, Inc. Sector-based redundancy architecture
CN1831780A (zh) * 2005-03-10 2006-09-13 松下电器产业株式会社 非易失性存储系统、非易失性存储装置、数据读出方法及读出程序
CN101527171A (zh) * 2009-04-17 2009-09-09 成都市华为赛门铁克科技有限公司 一种多通道并行纠错的闪存控制方法和装置
CN102193848A (zh) * 2011-06-02 2011-09-21 成都市华为赛门铁克科技有限公司 逻辑单元坏扇区的数据修复方法及装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9940204B2 (en) 2015-11-02 2018-04-10 International Business Machines Corporation Memory error recovery
CN105808378A (zh) * 2016-02-26 2016-07-27 华为技术有限公司 元数据修复方法及装置
CN105808378B (zh) * 2016-02-26 2018-10-30 华为技术有限公司 元数据修复方法及装置
US10572335B2 (en) 2016-02-26 2020-02-25 Huawei Technologies Co., Ltd. Metadata recovery method and apparatus
CN112559387A (zh) * 2020-12-23 2021-03-26 湖南国科微电子股份有限公司 一种读请求处理方法、装置、设备及介质

Also Published As

Publication number Publication date
EP3029570A4 (en) 2017-02-08
US10127099B2 (en) 2018-11-13
WO2015027678A1 (zh) 2015-03-05
US20160179609A1 (en) 2016-06-23
CN103544995B (zh) 2016-09-21
EP3029570A1 (en) 2016-06-08
EP3029570B1 (en) 2018-02-28

Similar Documents

Publication Publication Date Title
US8086919B2 (en) Controller having flash memory testing functions, and storage system and testing method thereof
CN102023815B (zh) 在固态存储器中实现raid
US10120769B2 (en) Raid rebuild algorithm with low I/O impact
CN108399134A (zh) 存储装置及存储装置的操作方法
CN104102585A (zh) 映射信息记录方法、存储器控制器与存储器储存装置
CN103544995A (zh) 一种坏道修复方法及装置
CN103534688B (zh) 数据恢复方法、存储设备和存储系统
CN102508724B (zh) 一种基于软raid的磁盘坏块处理方法
CN102799533B (zh) 一种磁盘损坏扇区屏蔽方法及装置
US8902671B2 (en) Memory storage device, memory controller thereof, and method for programming data thereof
CN103718162A (zh) 用于ssd中灵活的raid的方法和设备
CN103377129B (zh) 数据写入方法、存储器控制器与存储器储存装置
CN102708019A (zh) 一种硬盘数据恢复方法、装置及系统
CN104423888A (zh) 数据写入方法、存储器控制电路单元与存储器存储装置
TW201339835A (zh) 資料寫入方法、記憶體控制器與記憶體儲存裝置
US9032135B2 (en) Data protecting method, memory controller and memory storage device using the same
CN103513942A (zh) 独立冗余磁盘阵列的重构方法及装置
CN111538460A (zh) Raid功能实现方法及相关装置
CN102567221B (zh) 数据管理方法、存储器控制器与存储器储存装置
CN103678162A (zh) 系统数据储存方法、存储器控制器与存储器储存装置
CN102402396B (zh) 复合式储存装置及其复合式储存媒体控制器与编址方法
CN103578566A (zh) 存储器存储装置及其修复方法
CN103389941A (zh) 存储器格式化方法、存储器控制器及存储器存储装置
CN101788935A (zh) 冗余磁盘数组系统的坏块处理方法
CN102467460B (zh) 资料管理方法、存储器控制器与存储器储存装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant