CN117407325A - 支持ssd的数据管理方法及系统 - Google Patents

支持ssd的数据管理方法及系统 Download PDF

Info

Publication number
CN117407325A
CN117407325A CN202311338430.XA CN202311338430A CN117407325A CN 117407325 A CN117407325 A CN 117407325A CN 202311338430 A CN202311338430 A CN 202311338430A CN 117407325 A CN117407325 A CN 117407325A
Authority
CN
China
Prior art keywords
data
page
indicator
stored
logical 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.)
Pending
Application number
CN202311338430.XA
Other languages
English (en)
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.)
Baidai Shanghai Data Technology Co ltd
Original Assignee
Baidai Shanghai Data Technology 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 Baidai Shanghai Data Technology Co ltd filed Critical Baidai Shanghai Data Technology Co ltd
Priority to CN202311338430.XA priority Critical patent/CN117407325A/zh
Publication of CN117407325A publication Critical patent/CN117407325A/zh
Pending legal-status Critical Current

Links

Classifications

    • 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明涉及到支持SSD的数据管理方法及系统。将待存数据、逻辑块地址及指示符写入SSD的存储块,其中逻辑块地址及指示符布置在页的备用区而待存数据布置在页的数据区,写入待存数据至任一页时将该任一页存储的指示符修改成指定类中之一、任一页在不同写入次数下该指示符亦设为不同,指示符用于表征当前存储块上的逻辑块地址的所属类别,数据恢复阶段将所需类别的逻辑块地址对应页的写入数据执行数据重构。

Description

支持SSD的数据管理方法及系统
技术领域
本发明主要涉及到数据存储的技术领域,确切的说,涉及到在数据存储中支持固态硬盘类存储器的数据管理方法及数据管理系统。
背景技术
在电子产品中传统机械硬盘(HDD)内部包含机械部件,磁头需在快速旋转的磁盘上移动至目标位置才能进行写入和读取,大量任务消耗在低效率机械动作上。在读取速度上远远超过机械硬盘的固态硬盘(SSD)不再关注于机械动作,再者固态硬盘在物理结构方面要比机械硬盘更加防震抗摔,原因在于固态硬盘采用固态电子存储芯片阵列制成并用集成电路代替了传统的旋转磁盘。
尽管固态硬盘存在诸多的存储优势,例如极高的存储密度,也意味着存储颗粒或存储芯片需使用更多的字线和位线来操控存放比特位数据的晶体管。再者高密度晶体管阵列同样也带来了数据管理各方面的复杂程度。典型的,传统机械硬盘的逻辑块地址和物理块地址被设计成相对固定不变的搭配和映射,即便是映射列表的存储部分在传统机械硬盘中遭到物理破坏或意外擦除等非正常事件时,由于逻辑块地址和物理块地址的关系可直接或间接予以推测,逻辑块地址和物理块地址之间的映射使得数据重构容易实现。
正如前文所言,固态硬盘的高密度存储等条件导致逻辑块地址和物理块地址的固定映射关系变得不适用,同样是硬盘遭遇物理破坏或意外擦除等非正常事件时,非固定映射关系使得数据重构的实现可能性显得极为棘手并近乎难以达成。主因就是逻辑块地址和物理块地址的搭配服从一定的规律,但是这种规律并非就是固定和可以预见的。那么在此类条件下如何保障数据的可恢复性、数据安全和可靠性等数据管理方面的要求,是业界需要解决的技术难题之一。这也是本申请需要解决的疑虑之一。
发明内容
本申请涉及一种支持SSD的数据管理方法,其特征在于:将待存数据、逻辑块地址及指示符写入SSD的存储块,其中,所述的逻辑块地址及所述的指示符布置在页的备用区而待存数据布置在页的数据区,写入待存数据至任一页时将该任一页存储的指示符修改成指定类中之一、任一页在不同写入次数下该指示符亦设为不同,指示符用于表征当前存储块上的逻辑块地址的所属类别,在数据恢复阶段将所需类别的逻辑块地址所对应页的写入数据执行数据重构。
上述的方法,其中:将待存数据写入单一存储块的连续页或非连续页;或者将待存数据写入不同存储块的不同页。
上述的方法,其中:用于标识指示符的指定类的类型至少包括常规数值或矩阵或带有时间戳的数据。
上述的方法,其中:数据重构的应用场景包括SSD内部存储块与逻辑块地址的映射关系遗失,或存储块的部分存储内容意外擦除或丢失、或存储块的局部晶体管损坏。
上述的方法,其中:数据的重构包括相同类别的逻辑块地址所对应页的写入数据执行重构;或者数据重构包括不同类别的逻辑块地址所对应页的写入数据执行重构。
上述的方法,其中:执行数据重构的存储块分布在SSD的相同的平面或不同的平面例如位于同一个存储颗粒/芯片的相同平面(Plane)或不同平面。
上述的方法,其中:任一页配置的指示符划分成主体部分和次级部分,写入指示符时主体部分存储在该任一页的备用区但次级部分存储在该任一页的相邻页备用区,任一页的指示符在使用时的真实值为其主体部分和次级部分各自的读取值的组合。
上述的方法,其中:若任一页的指示符之所述主体部分和所述次级部分各自的读取值的组合不属于所述指定类中的任意一类,则基于RS纠错码并使用主体部分或次级部分对指示符进行恢复。
上述的方法,其中:该任一页配置的指示符的次级部分和后一页配置的指示符的主体部分共页,该任一页配置的指示符的主体部分和前一页配置的指示符的次级部分共页。
本申请涉及一种支持SSD的系统,其特征在于,包括:
计算机设备及一个或多个SSD;
计算机设备在执行写操作时,其将待存数据、逻辑块地址以及指示符写入SSD的存储块,逻辑块地址及指示符写入在页的备用区而待存数据写入在页的数据区,其中写入待存数据至任一页时,计算机设备将该任一页存储的指示符设为指定类中之一、任一页在不同写入次数下该指示符亦设成不同;
其中,所述指示符用于表征其所在存储块上的逻辑块地址的所属类别;
计算机设备执行数据重构时,在数据恢复阶段,计算机设备将所需类别的逻辑块地址对应页的写入数据执行数据重构。
本申请涉及一种支持SSD的数据管理方法,其特征在于,包括:
将待存数据、逻辑块地址及指示符写入SSD的存储块,逻辑块地址及指示符布置在页的备用区而待存数据布置在页的数据区,写入待存数据至任一页时将该任一页存储的指示符修改成指定类中之一、任一页在不同写入次数下该指示符亦设为不同,指示符用于表征其同页上的逻辑块地址的所属类别,在数据恢复阶段将所需类别的逻辑块地址所对应页的写入数据执行数据重构。
在该实施例中,逻辑块地址允许被分布在每一页,占空间、存在重复,是其劣势但能够精确的指示到具体的页和页内具体的扇区且多份逻辑块地址等效为备份,在信息丢失量较大的情况下也仍然能恢复和重构出原始数据或文件。
本申请涉及一种支持SSD的数据管理方法,其特征在于,包括:
将待存数据、逻辑块地址及指示符写入SSD的存储块,逻辑块地址及指示符布置在页的备用区而待存数据布置在页的数据区,写入待存数据至任一页时将该任一页存储的指示符修改成指定类中之一、任一页在不同写入次数下该指示符亦设为不同,指示符用于表征其所在存储块上的逻辑块地址的所属类别,在数据恢复阶段将所需类别的逻辑块地址所对应页和/或对应具体扇区上的写入数据执行数据重构。
在该实施例中,逻辑块地址不仅仅指示了具体的页信息、还进一步将指示了页信息上的具体的扇区信息。
本申请涉及一种支持SSD的数据管理方法,其特征在于,包括:
将待存数据、逻辑块地址及指示符写入SSD的存储块,逻辑块地址及指示符布置在页的备用区而待存数据布置在页的数据区,写入待存数据至任一页时将该任一页存储的指示符修改成指定类中之一、任一页在不同写入次数下该指示符亦设为不同,指示符用于表征其所在的存储块上的逻辑块地址的所属类别,在数据恢复阶段,将选定类别的逻辑块地址所对应页的写入数据丢弃、以及将余下的其他类别的逻辑块地址所对应页的写入数据执行数据重构。
值得注意的是,数据重构并非一定是人为主动操作的恢复动作,例如假设计算机在后台自行发现某因素(譬如设备突然断电、固态硬盘的非正常删添等)导致了固态硬盘的信息读写等发生错误,计算机可以直接将异常的数据重构成正常数据,从计算机使用者的角度来看存储数据一直都是完整和可靠的,但事实上这是后台的纠正之结果。
再举一例说明,从固态硬盘内部的存储晶体管所保存数据量方面考量,固态硬盘常使用1比特位的SLC(Single Level Cell)或2比特位的MLC(Multiple Level Cell)或者是用3比特位的TLC(Triple Level Cell)。在相同的条件下,晶体管表达的比特位数越多则越容易丢失数据并具有低的保存耐久度,浮动栅极的电子漏电事件更频繁。使用固态硬盘的设备无论是移动终端还是计算机或服务器等,为保证安全性和回刷数据,可按一定的周期或非周期时间粒度将数据重构,保障数据是可信的、也保障数据的耐久。
正如上文所言,固态硬盘逻辑块和物理块地址的搭配设定了一些规律,但这种规律并非适用于所有厂商或所有型号的固态硬盘,实质就是非固定和难以预见的。即便面临着这些棘手难题,根据本申请的方案,仍然可以保障数据的可恢复性、数据安全和可靠性等数据管理方面的要求,这是现有技术难以企及的。
本申请主旨在于解决SSD数据存入稳定性较差、容易在数据保存期间出现存储数据遗失或无法持久保存等问题。例如存储信息并未真正存入到存储单元,不可控因素导致存入的信息或许保留在期望的状态但亦有可能翻转到未知状态。数据的可恢复性则保证了数据稳定性较差这种存储器的内禀性问题不再是一种天然隐患。数据稳定性较差并非是存储器有物理创伤或晶体管级的创伤才存在的情形,例如单个晶体管的多层浮栅在写入不同页数据时会在不同浮栅所体现的多页之间形成彼此之间的干扰、及伴随数据丢失。
本申请在上下文介绍的范例,其优势在于:在信息存储操作期间,即便存在部分信息丢失的情况,即便可能存在多个页或扇区对应相同的逻辑地址的情况,仍然能够定位并恢复页或扇区的有效数据,其可恢复性、安全和可靠性等数据管理要求得到满足。
附图说明
为使上文目的和特征及优点能够更加通俗易懂,后文结合附图对具体实施方式做详细的阐释,阅读以下说明并参照以下附图之后,本申请的特征和优势将显而易见。
图1是待存数据和逻辑块地址保存之与逻辑块具有映射的存储块。
图2是多个存储块并存在同一个平面以及单个存储块具有多个页。
图3是通过字线和位线选择来控制具体的晶体管并执行数据操作。
图4是在不同的页和不同字线及位线情况下所展示的晶体管个体。
图5是可选项中任一页配置的指示符划分成主体部分和次级部分。
图6是可选项中将待存数据和逻辑块地址以及指示符写入存储块。
具体实施方式
下面将结合各具体的实施例,对本申请披露的技术方案进行清楚完整的阐述,但所描述的实施例仅是本申请用作叙述说明所用的实施例而非全部的实施例,在基于该等实施例的基础之上,本领域的技术人员应该认识到,在没有做出创造性劳动的前提下所获得的任何方案都属于本申请的保护范围。
参见图1,固态硬盘SSD的一项参数是读取速度,传统固态硬盘通常设计成通过序列式先进附加技术(如SATA)接口与主机(Host Device)通信。随着固态硬盘中的快闪存储器晶片的存取速度愈来愈往上提升,如芯片和硬件等的改善,伴随着的接口技术已逐渐成为进一步提升固态硬盘与主机或其他类似设施之间的数据传输速度的优势。这种优势对于本申请涉及的存储数据管理是极为有利的。不同于写入数据,海量的数据重构环境下存在着所需页或所需扇区的识别和寻址、尤其是重构需要高速的数据吞吐能力。因此随着通信接口技术的发展,本申请的优势将显得愈发明显。
参见图1,固态硬盘SSD通常含一个或多个存储颗粒或存储芯片(LUN),其基本上是执行命令的最小单元,不同的LUN可以执行不同的命令序列。
参见图1,固态硬盘SSD之单个存储颗粒或存储芯片具多个平面(Plane),在优化闪存访问速度方面,每个平面设有独立的数据寄存器和缓存寄存器。
参见图1,固态硬盘SSD之单个平面(Plane)含一个或多个块(Block),块通常包含了很多个页,例如有些厂商规定块的数量应当为32的倍数。
参见图1,用一个块(Block_X)和另一个块(Block_Y)作为范例,实际应用中单个平面的块远远不止图示的数量。
参见图1,固态硬盘SSD需要通过映射表来维护逻辑块地址以及物理存储块地址之间的映射关系。前文已经交代,地址映射表局部失效或映射表发生断电丢失等,通常导致映射关系遗失,无法获知逻辑地址和物理地址之间的映射关系,则整个存储盘上存储的数据也就随之可能出现完全或部分丢失的情况。
参见图1,在可选的实施例中,当映射表丢失或受损时,遍历读取盘上冗余空间或备用区的逻辑块地址,获取每个页和/或每个有效扇区的逻辑块地址,遍历读取的时候已经知晓所读的存储块,进而可以获得逻辑块地址和存储块地址的映射关系。通过遍历读取存储块的逻辑块地址,并将存储块和逻辑块地址进行关联映射,属现有技术范畴。
参见图1,在可选的实施例中,固态硬盘的数据管理单元如果是以页或者扇区等较小的数据存储单位管理和读写数据时,目前固态硬盘的传统数据写入方法决定了在已知时间段内固态硬盘上可能存在多个页或多个扇区对应或指向相同的逻辑块地址,那么在数据重构过程中就无法具体区分哪个逻辑块地址对应的页或扇区数据是应采用的,从而无法实现数据在SSD全盘上的重构。典型的,相同逻辑块地址指代的页或扇区的数据可能并非可以重构或重组的源数据,例如逻辑块地址指代的一些页或扇区数据和它指代的另一些页或扇区数据可能属于不同格式的源数据、亦可能属于不同文件的源数据、以及其他各种不适宜于重构或重组的情形。这都是需要解决的问题。
参见图2,固态硬盘SSD之页(page)包含很多个字节。页的大小通常为2的幂但是不包括备用区(spare)这个区域的容量。单个页包括若干个扇区(sector)。
参见图3,关于备用区(spare)和数据区(user data)的概念,结合图2。
参见图2,固态硬盘SSD内部的详细解释可如下所述。单个存储块所占用的空间通常包括数据区(user data)和备用区(spare)。以含64页之单个存储块为例,单个存储块的数据区可以被分为64份,分别用于存放每个页的写入数据或信息。存储块的备用区或冗余空间也可以分为64份,分别用于存放每个页的冗余数据或备用数据。所以单个页所占用的空间包括数据区和备用区。例如块Block_X包括页P0-P63等。
参见图2,以含8个扇区的单个页为例,页的数据区也可以被分为8份,分别用于存放每个扇区的数据。页的备用区也可以被分为8份,并分别用于存放每个扇区的冗余数据或者备用数据。除此之外,页的信息存储方式也可以适应性修改,例如单个页开辟某个备用空间或者冗余空间,用于统一存放该页中所有扇区的冗余数据或备用数据。图中显示了某些单个页P3或P4等分为8个扇区Sec1、Sec2、Sec3、,…Sec8等。
参见图3,基于固态硬盘内部的存储晶体管(cell)角度,固态硬盘常使用1个比特位的SLC(Single Level Cell)或2比特位的MLC(Multiple Level Cell)或是用3个比特位的TLC(Triple Level Cell)。
参见图4,在由诸多存储电路个体集成而形成的存储阵列中,展示了不同的存储电路存储了不同的数据或信息,字线W0-WN和位线B1-BM的选中,可以对被选中的存储电路进行数据写入操作或者数据读取操作。WK∈{W0,W1,W2,…WN}。
参见图3,假设选中字线WK和选中位线B1-B6,那么在整个存储阵列中单独选择的存储电路的位置就确定了,存储1或者0。BJ∈{B0,B1,B2,…BM}。
参见图3,再如选中字线WN和选中位线B3-B4,那么在整个存储阵列中单独选择的存储电路的位置就确定了,存储1或者0。
参见图4,目前绝大多数SSD都是以NAND FLASH为存储介质的。SSD工作原理很多都是基于NAND FLASH特性的。譬如NAND FLASH在写之前须先擦除,而不应该覆盖式数据写入。于是SSD存在垃圾回收(Garbage Collection,或称Recycle)等类似的措施和数据处理。在NAND FLASH每个块(Block)的擦写次数达到一定值,这个块就存在使用寿命问题如数据丢失或无法再写入,所以SSD固件通常让数据平均写在所有块上例如应当执行磨损均衡措施(Wear Leveling)。倘若固态硬盘的使用模式不佳譬如总是习惯于在几个固定盘符或固定块位置重复写和擦,这些块容易提前报废,其也是各类数据丢失的源头之一。所以数据可恢复性、安全和可靠性显得尤为重要。
参见图4,闪存(NAND FLASH)的结构原理如图,每个位线(Bit Line)下的基本存储单元是串联的。NAND读取数据的单位例如是页(Page)。当需要读取目标页时则闪存控制器可不在目标页字线(Word Line)施加电压,而对其他所有页的字线施加电压并让这些字线的所有基本存储单元的漏D和源S导通,而要读取的目标页的基本存储单元的漏D和源S的导通/关断状态则取决于浮栅(Floating Gate)是否有电荷,有电荷时位线读出0而无电荷位线读出1,实现了页数据的读出。
参见图4,如位线BX1或BX2下的基本存储单元串联,位线BY1或BY2下的基本存储单元串联,如位线BZ1或BZ2下的基本存储单元串联。BX-BZ∈BJ。
参见图5,为了理解的便利,以MLC为例来阐释,擦除一个块的时间大约是接近约几个毫秒左右。NAND FLASH的读写例如是以页为基本单元的。一个页大小在某些厂商设计中主要有4KB、8KB、16KB等。某些厂商的限制对MCL或TLC而言,写一个块当中的一系列页,应该顺序写:Page0,Page1,Page2,Page3,…。譬如在图中是按照页的编号顺序写入,P(K-1)至P(K)至P(K+1)等页的顺序来写入页数据。禁止数据随机写入也即禁止写入时,P(K-1)至P(K)至P(K+1)等页的顺序或编号写入时不可打乱。例如不允许的写方式包括:Page1,Page3,Page5,Page0,…,禁止这种乱序。但对于数据读操作来说则可能没有这种限制;再如SLC也没有这种限制。以上通过介绍闪存固态硬盘的若干非限制性操作规则来解释了存储的部分细节,以了解分页的特征点。
参见图5,在可选实施例中,譬如对MLC来说,单个存储单元存储了两个比特的数据并且对应着两个页:低层页Lower Page和高层页Upper Page。若Lower Page先写入数据然后再写Upper Page的过程中,由于改变了整个Cell的状态,如果这个时候掉电那么之前写入的Lower Page也丢数据。换而言之,写某一个页(Page)失败的同时还可能会导致另一个页(Page)的数据损坏。TLC更如此,写某个页(Page)失败的同时可能会导致另外两页(Page)的数据损坏,TLC的单个存储单元Cell对应3个页。对单存储单元存储的两页(Page)而言,数据管理阶段会发现写低层页Lower Page的操作时间更短但是写高层页Upper Page操作时间更长,这是晶体管的浮栅结构特征决定。从固态硬盘的外在感觉是某些页Page写入速度快、某些页Page写入时间慢。
参见图1,数据在计算机或电子设备上是以文件的形式储存在存储器中,目标数据的形式一般为ASCII码或二进制。针对存储介质如Flash存储芯片,设计与其匹配的驱动函数则可以非常方便的在存储器上读写数据。可将目标内容转化成ASCII码,存储在数组中并将数组内容写入到Flash存储芯片的指定地址上,再在需要的时候从该地址将数据读取出来和对读出来的数据以ASCII码格式进行解读。这是对存储介质的直接存储和直接读取的一种粗犷型数据处理方式,在一些场合此种方式并不可取。
参见图1,对存储介质的直接存储会带来极大的不便,譬如难以记录有效数据的位置和难以确定存储介质的剩余空间、以及应以何种格式来解读数据。如同一个巨大的放任不管的储存空间,杂乱无章地存放各种内容,难以查找所需的文档。试想一下当操作计算机而使用储存空间之时只是将内容写入存储空间而不予管理,当再次操作计算机而试图阅读某文档的时候,就不得不从各种挂载空间中一处处地查找。
参见图1,通过分析据此可知,前述这种直接存储数据的存储方式对于小容量的存储介质譬如EEPROM尚还可以接受,但对于Flash存储芯片或SD卡及SSD固态硬盘之类的大容量设备,则需要一种高效的方式来管理它的存储内容。否则要记忆住大量复杂而又容易随着写入数据量变化的地址信息来和写入数据进行匹配。倘若是从企业级商用场景来考量存储系统,支持设计成统一存储或分布存储的大容量SSD固态硬盘作为主要研究对象和存储介质,藉此海量存储需求、数据可信和安全是不得不考虑的前置条件。
参见图1,管理存储介质之存储内容的常规管理方式即为文件系统,是为了存储和管理数据之目的、而在存储介质上建立的一种组织结构,譬如这些组织结构包括了操作系统引导区和目录以及文件等必要模块。
参见图1,譬如文件系统格式包括FAT32、NTFS、exFAT等,Windows操作系统下的此类格式是常见的文件系统。在使用文件系统前,可对存储介质进行格式化。格式化先擦除原来内容,譬如藉此可在存储介质上新建一个文件分配表和目录等。如此一来文件系统可记录数据存放的物理地址、及剩余空间等信息。
参见图1,使用文件系统时,数据基本都是以文件的形式进行存储。
参见图1,在写入新文件时,需先在目录中创建一个文件索引,它指示了文件所存放的物理地址之信息,再将数据存储到该地址中。
参见图1,需要读取数据时,可以从目录中找到该文件的索引,依据索引进而在相应的地址中读取出数据。除此之外,具体还涉及到逻辑地址、簇大小、不连续存储等系列辅助结构或处理过程等。
参见图1,通过文件系统参与管理存储介质之存储内容的过程,可知文件系统的存在使得在存取数据时,不再是简单地向存储介质之物理地址直接读写数据,而是应当遵循文件系统的读写格式。譬如经过逻辑转换,一个完整的整体性文件可能被分开成多段存储到不连续的物理地址,并使用目录或链表的方式来获知下一段的位置。如果整体性文件的体量较大以及需要占据的较大的存储空间,无疑文件系统的参与是必要的。
参见图1,从数据可信和安全的角度来考量,完整的整体性文件还可被分开成多段存储到不同硬盘,不同硬盘的存放地理位置甚至都可以不同,并使用文件系统或面向终端的应用层软件来获知多段内容的位置。
参见图1,在关于直接存储数据的范例中,描述了向Flash存储芯片完成了向物理地址写入数据的工作,倘若是用文件系统参与管理存储过程,显然的,根据文件系统格式的逻辑转换部分则需要额外的工作来完成。
参见图1,关于逻辑转换部分:实质上,这个逻辑转换部分可以认为是当一旦需要写入一段数据时,由它来求解向什么物理地址写入数据、以什么格式写入及写入一些除了原始数据之外的其他信息(譬如目录)。通常,这个所谓的逻辑转换部分在某些场合也习惯于称之为文件系统或适用于存储的文件系统。
参见图1,目前主流固态硬盘(Solid State Disk,简称SSD)采用NAND型闪存颗粒或芯片作为存储介质,NAND型闪存(NAND FLASH)具有存取速度快、防震抗摔和发热低及零噪音和体积小等优点。
参见图1,业界的FTL(Flash translation layer)指地址转换层。
参见图1,业界的LBA(Logical Block Address)指逻辑块地址。
参见图1,业界的PBA(Physical Block Address)指物理块地址。
参见图2,业界的LPA(Logical Page Address)指逻辑页地址。
参见图2,业界的PPA(Physical Page Address)指物理页地址。
参见图1,固态硬盘SSD记录了逻辑块地址LBA(Logical Block Address)和物理块地址PBA(Physical Block Address)它们之间的映射关系,因此只有在这种映射关系可知和明确的情况下,SSD存储的数据才有意义。与传统机械硬盘所采用固定映射关系的处理方式不同的是,SSD的映射关系虽然具有一定的规律、但往往并不固定。
参见图1,固态硬盘SSD通过映射表来维护LBA和PBA的映射关系。
参见图1,映射关系的维护十分有必要。存储设备倘若出现异常情况,假设存储映射表的存储介质或存储媒介失效或映射表断电回刷失败,如制备介质的相应一系列存储晶体管阵列出现局部受损或意外丢电或遭受ESD冲击等,这些意外情况皆可导致映射表丢失或受损。一旦无法获知LBA和PBA的明确映射关系,则固态硬盘上存储的用户数据也就随之完全丢失或部分丢失,这是不期望发生的。
参见图1,固态硬盘SSD的使用方式如下:固态硬盘SSD所设计的FTL管理逻辑页地址LPA到物理页地址PPA的映射表,固态硬盘SSD在操作系统内可被注册为块设备以及可被格式化为固定的文件系统(例如FAT32、NTFS、exFAT等),文件系统管理文件到逻辑块地址LBA(Logical Block Address)的映射关系。
参见图1,数据访问时文件系统下发逻辑块地址LBA,地址转换层FTL首先需要将逻辑块地址LBA转化为逻辑页地址LPA。进一步而言,然后逻辑页地址LPA再被转化为物理页地址PPA,最终查询或找到用户数据。这种方案需要先将固态硬盘在文件系统内进行注册设备、格式化等操作,需要为地址关系布置多次映射。固态硬盘SSD的数据管理单元通常以NAND FLASH的物理块为单位来进行数据管理。
参见图1,写入数据时将必要的原始数据及其对应的逻辑块地址LBA同时一同写入非易失性闪存存储器NAND FLASH,其中可以将原始数据写入存储器的有效存储区以及将相应的逻辑块地址LBA写入存储器的冗余空间。
参见图1,倘若映射表遗失或受损,遍历读取盘上冗余空间的LBA来获取每个有效扇区的逻辑块地址LBA,撷取逻辑块地址LBA和物理块地址PBA映射关系,这属于受损状态下的一种挽救措施,但并非是十分有效,因为无法保障映射关系全恢复。实际上在现实的存储系统中,意外擦除的内容亦可能包含映射关系而产生读写乱码。
参见图1,映射表遗失或受损之下,固态硬盘SSD数据管理单元不是以块为尺度单位来管理数据、而是以页(page)或扇区(sector)等较小尺度单位管理数据,那么固态硬盘SSD存储介质上实质可能存在多个页或多个扇区对应相同的LBA的情况,毫无疑虑在数据重构过程中就无法区分哪个逻辑块地址LBA对应的页或扇区数据有效。以至于在数据碎片方面产生混淆并无法实现全盘数据的重构或全盘数据的恢复。
参见图6,在可选的实施例中,支持SSD的数据管理方法,包括:将待存数据和逻辑块地址及指示符写入SSD的存储块,其中,逻辑块地址以及指示符布置在页的备用区而待存数据布置在页的数据区,写入待存数据至任一页时将该任一页存储的指示符修改成指定类中之一、任一页在不同写入次数下该指示符亦设为不同,指示符用于表征当前存储块上的逻辑块地址的所属类别,在数据恢复阶段将所需类别的逻辑块地址所对应页的写入数据执行数据重构。
参见图6,在可选的实施例中,Data0表示待存数据、LBA表示逻辑块地址以及指示符则用Flag0来表示。待存数据Data0属于目标数据或需写入数据,用户最关注的即是待存数据Data0的可恢复性、数据安全和可靠性等数据管理方面要求。用户所直面的也是待存数据Data0,逻辑块地址LBA和指示符Flag0允许对用户不可见。例如即使是该待存数据被自行修复,用户或许对此也没有感触,修复过程可在计算机后台执行。当然用户试图主动修复数据,数据恢复功能被用户触发,也是一种可选项。
参见图6,在可选的实施例中,将待存数据Data0和逻辑块地址LBA及指示符写入固态硬盘SSD的存储块即物理存储块。在可选的实施例中逻辑块地址LBA以及指示符布置在页的备用区(spare)而待存数据Data0布置在页的数据区(user data)。考虑到逻辑块地址及指示符并非核心的用户数据,所以安排在备用区或冗余区。备用区或冗余区通常还用于放置存储ECC值、坏块标记等信息。
参见图6,在可选的实施例中,写入待存数据Data0至任一页时将该任一页存储的指示符Flag0修改成指定类中之一。值得注意,在可选的实施例中,该任一页在不同写入次数下该指示符Flag0亦设为不同。结合图5所示。
参见图5,在可选的实施例中,写入待存数据Data0至页PK时将该页PK存储的指示符Flag0_K修改成指定类中之一。值得注意,在可选的实施例中,该页PK在不同写入次数下该指示符Flag0亦设为不同。例如0x36,0x57,0x64,0x65,…0xFF等一些数据类型的值可设计成指定类。页PK的指示符Flag0_K以取0x32为例。再如页PK在某前次写入次数下该指示符Flag0_K可设为0x32,因为是不同写入次数,那么页PK在某后次写入次数下该指示符Flag0_K可设为0x34。指示符Flag0_K表征它所在的当前存储块上的逻辑块地址LBA的所属类别,例如其归属于类别0x32还是0x34或其他类,在数据恢复阶段将所需类别如0x32的逻辑块地址LBA对应页的写入数据执行数据重构。譬如对应页包括前述页PK。逻辑块地址LBA还可以具体的指示页PK的有效扇区数据。
参见图5,在可选的范例中写入待存数据Data0至页P(K+1)时将页P(K+1)存储的指示符Flag0_(K+1)修改成指定类中之一。值得注意,在可选的实施例中,P(K+1)在不同写入次数下指示符Flag0_(K+1)设为不同。如0x36,0x57,0x64,0x65,…0xFF等一些数据类型的值可设计成指定类。P(K+1)之指示符Flag0_(K+1)仍然以0x32为例。P(K+1)在该前次写入次数下该指示符Flag0_(K+1)可设为0x32,因为是不同的写入次数,P(K+1)在该后次写入次数下该指示符Flag0_(K+1)可设为0x34。指示符Flag0_(K+1)表征它所在存储块上逻辑块地址LBA的所属类别,例如其归属于类别0x32还是0x34或其他类,在数据恢复阶段将所需类别如0x32的逻辑块地址LBA对应页的写入数据执行数据重构。譬如对应页包括前述页P(K+1)。逻辑块地址LBA可具体指示页P(K+1)的有效扇区数据。
参见图6,在可选的实施例中,指示符例如Flag0_(K-1)用于表征它所在存储块例如存储块Block_X上的逻辑块地址LBA的所属类别如0x34的这一类,在数据恢复阶段将所需类别例如0x32的逻辑块地址LBA对应页写入数据执行数据重构。
参见图6,在可选的实施例中,指示符例如Flag0_K用于表征它所在当前存储块例如存储块Block_X上的逻辑块地址LBA的所属类别如0x32的这一类,在数据恢复阶段将所需类别例如0x32的逻辑块地址LBA对应页写入数据执行数据重构。
参见图6,在可选的实施例中,指示符例如Flag0_(K+1)用于表征它所在存储块例如存储块Block_X上的逻辑块地址LBA的所属类别如0x32的这一类,在数据恢复阶段将所需类别例如0x32的逻辑块地址LBA对应页写入数据执行数据重构。
参见图6,映射表丢失或受损时遍历SSD上备用区或冗余空间的LBA,获取每个页或扇区的LBA,进而获得LBA和PBA之间的映射关系。
参见图6,承上所述,Flag0_(K-1)之0x34的类别显示在数据恢复阶段需要将与其对应的页P(K-1)剔除在数据重构之外,Flag0_K之0x32的类别显示在数据恢复阶段需要将与其对应的页PK整合在数据重构内,Flag0_(K+1)之0x32的类别显示在数据恢复阶段需要将与其对应的页P(K+1)整合在数据重构内。存储块Block_X实现数据恢复或者在不同于存储块Block_X的其他存储块处实现数据恢复。
参见图6,若硬盘SSD的数据管理单元以数个页或数个更细粒度的扇区等较小的单位管理数据时,例如以页P(K-1)和页PK及页P(K+1)或更细粒度的扇区,现有的写入数据的方法决定了在一定时间内,固态硬盘SSD的存储介质如FLASH上可能存在多个页或扇区例如页P(K-1)和页PK及页P(K+1)或扇区对应相同的LBA的情况。在数据重构过程中往往无法区分哪个LBA对应的页或者扇区数据是有效的或者无效的,从而无法实现全盘数据重构,或者产生错误的重构数据。前述实施例则解决了这个问题。
参见图6,在可选的实施例中,指示符例如Flag0_(K-1)用于表征它所在存储块例如存储块Block_X上的逻辑块地址LBA的所属类别如0x57的这一类,在数据恢复阶段将所需类别例如0x57的逻辑块地址LBA对应页写入数据执行数据重构。
参见图6,在可选的实施例中,指示符例如Flag0_(K-1)用于表征它所在存储块例如存储块Block_Y上的逻辑块地址LBA的所属类别如0xFF的这一类,在数据恢复阶段将所需类别例如0x57的逻辑块地址LBA对应页写入数据执行数据重构。
参见图6,在可选的实施例中,指示符例如Flag0_(K+1)用于表征它所在存储块例如存储块Block_Y上的逻辑块地址LBA的所属类别如0x57的这一类,在数据恢复阶段将所需类别例如0x57的逻辑块地址LBA对应页写入数据执行数据重构。
参见图6,映射表丢失或受损时遍历SSD上备用区或冗余空间的LBA,获取每个页或扇区的LBA,进而获得LBA和PBA之间的映射关系。
参见图6,存储块Block_X上Flag0_(K-1)之0x57显示数据恢复需要将与其对应的页P(K-1)整合在数据重构内,存储块Block_Y上Flag0_(K-1)之0xFF显示数据恢复需要将对应的页P(K-1)剔除在重构之外,存储块Block_Y上Flag0_(K+1)之0x32的类别显示在数据恢复阶段需要将与其对应的页P(K+1)整合在数据重构内。从而在数据恢复阶段可以将不同物理块例如存储块Block_X和存储块Block_Y等实现数据恢复,当然也可以在数量更多的不同存储块之间实现数据恢复。
参见图6,若硬盘SSD的数据管理单元以数个页或数个更细粒度的扇区等较小的单位管理数据时,例如以页P(K-1)和页PK及页P(K+1)或更细粒度的扇区,现有的写入数据的方法决定了在一定时间内,固态硬盘SSD的存储介质如FLASH上可能存在多个页或扇区例如页P(K-1)和页PK及页P(K+1)或扇区对应相同的LBA的情况。在数据重构过程中无法确定哪些存储块及哪些LBA对应的页或扇区数据是有效或无效,尤其在跨越不同存储块之间抽取有效数据则显得困难重重,从而无法实现全盘数据重构,或者产生错误的重构数据。前述实施例则解决了这个问题。
参见图6,在可选的实施例中,前文以0x36,0x57,0x64,0x65,…0xFF等一些随机数据或规律性数据作为指定类的数据类型,它们还可以替换成矩阵数据。指示符在使用矩阵方式的数值时则在指示符的RS纠错码阶段会有一些计算速度的优势。纠错码在某些情况下会执行矩阵运算。指定类或者也可以使用带有时间戳的数据,用户在操作数据时一般会在某个时间段执行,如果知悉了数据的时间,可以通过时间特征来恢复数据,不同快或不同页或不同扇区或其他不同位置的数据可按照相同的时间特征进行整合修复。所以用于标识指示符Flag0的指定类的类型并不需要限制于某种特定方式,指示符之主要功效是用于表征其当前所在存储块(block)上的逻辑块地址的所属类别,在数据恢复阶段将所需类别的逻辑块地址对应页(和/或扇区)的数据来执行数据重构。或指示符之主要功效是用于表征其当前所在页所属的存储块上的逻辑块地址的所属类别。用于标识指示符的指定类的类型至少包括常规数值或矩阵或带有时间戳的数据。
参见图6,在可选的实施例中,指示符例如Flag0_(K-1)用于表征它所在存储块例如存储块Block_X上的逻辑块地址LBA的所属类别,页P(K-1)在第Q次写入次数下该指示符如Flag0_(K-1)设为如0xFC这类的所属类别,页P(K-1)在第Q+5次写入次数下指示符如Flag0_(K-1)设为如0xFD这类的所属类别。在可选的实施例中,在数据恢复阶段将所需类别如0xFD的逻辑块地址LBA对应页写入数据执行数据重构。该存储块可以是存储块Block_X也还可以是存储块Block_Y或其他物理存储块。
参见图6,在可选的实施例中,指示符例如Flag0_K用于表征它所在当前存储块例如存储块Block_X上的逻辑块地址LBA的所属类别,对应页PK在第T次写入次数下该指示符如Flag0_K可以设为如0xFC这类的所属类别,对应页PK在第T+7次写入次数下指示符如Flag0_K可以设为如0xFD这类的所属类别。在可选的实施例中,在数据恢复阶段将所需类别如0xFD的逻辑块地址LBA对应页写入数据执行数据重构。该存储块可以是存储块Block_X也还可以是存储块Block_Y或其他物理存储块。
参见图6,在可选的实施例中,指示符例如Flag0_(K+1)用于表征它所在存储块例如存储块Block_X上的逻辑块地址LBA的所属类别,该页P(K+1)在第P次写入次数下该指示符如Flag0_(K+1)设为如0xFC这类的所属类别,该页P(K+1)在第P+9次写入次数下指示符如Flag0_(K+1)设为如0xFD这类的所属类别。在可选的实施例中,在数据恢复阶段将所需类别如0xFD的逻辑块地址LBA对应页写入数据执行数据重构。该存储块可以是存储块Block_X也还可以是存储块Block_Y或其他物理存储块。
参见图6,前述正整数Q和T和P可以相同或者不同。映射表丢失或受损时遍历固态硬盘上备用区或冗余空间的LBA,获取页或扇区的LBA,通过遍历固态硬盘上的逻辑块地址信息并进而获得LBA和PBA之间的映射关系。
参见图6,承上所述,Flag0_(K-1)之0xFD的类别显示在数据恢复阶段需要将与其对应的页P(K-1)的Q+5数据进行重构,Flag0_K之0xFD的类别显示在数据恢复阶段需要将与其对应的页PK的T+7数据进行重构,Flag0_(K+1)之0xFD的类别显示在数据恢复阶段需要将与其对应的页P(K+1)的P+9数据进行重构。在存储块Block_X/Y处实现数据恢复或在不同于存储块Block_X/Y的其他存储块处实现数据恢复。
参见图6,在可选的实施例中,数据重构包括相同类别的逻辑块地址所对应页的写入数据执行重构。Flag0_(K-1)之0xFD或0xFC表征所在存储块如Block_X/Y上逻辑块地址的所属类别。Flag0_K之0xFD或0xFC表征所在当前存储块如Block_X/Y上逻辑块地址的所属类别。Flag0_(K+1)之0xFD或0xFC可表征所在存储块如Block_X/Y上逻辑块地址的所属类别。在数据恢复阶段将所需类别(例如0xFD而非0xFC)的逻辑块地址所对应页或扇区的写入数据执行数据重构。在该实施例中,在执行数据重构时不同逻辑块地址各自的所需类别实质上是完全相同的。值得注意的是,这些不同类别的逻辑块地址可以写入在相同或不同的物理存储快上。执行数据重构的存储块如Block_X/Y或其他更多的存储块分布在固态硬盘SSD的相同的平面或不同的平面。
参见图6,在可选的实施例中,数据重构包括不同类别的逻辑块地址所对应页的写入数据执行重构。Flag0_(K-1)之0xFD或0xFC表征所在存储块如Block_X/Y上逻辑块地址的所属类别。Flag0_K之0xFD或0xFC表征所在当前存储块如Block_X/Y上逻辑块地址的所属类别。Flag0_(K+1)之0xFD或0xFC可表征所在存储块如Block_X/Y上逻辑块地址的所属类别。与相同类别的逻辑块地址所对应页进行重构不同,数据恢复阶段将不同类别的逻辑块地址对应页的数据执行重构:Flag0_(K-1)之0xFC表征的逻辑块地址即类别为0xFC的逻辑块地址所对应页P(K-1)的Q数据、Flag0_K之0xFD表征的逻辑块地址即类别0xFD的逻辑块地址所对应页PK的T+7数据、Flag0_(K+1)之0xFC表征的逻辑块地址即类别0xFC的逻辑块地址所对应页P(K+1)的P数据,它们来重构。值得注意的是这些不同类别的逻辑块地址可以写入在相同或不同的物理存储快上。该实施例中数据重构时不同逻辑块地址各自的所需类别实质上是不同的、或者仅仅只是部分相同。
参见图6,在可选的实施例中,将待存数据Data0写入单一存储块的连续页或非连续页上或者将待存数据Data0写入在不同存储块的不同页,结合图5所示。
参见图6,在可选的实施例中,数据重构包括相同类别的逻辑块地址所对应页或扇区的写入数据执行重构。具体范例在前文有所阐释。
参见图6,在可选的实施例中,数据重构包括不同类别的逻辑块地址所对应页或扇区的写入数据执行重构。具体范例在前文有所阐释。
参见图6,在可选的实施例中,数据重构的应用场景包括固态硬盘SSD内部存储块与逻辑块地址的映射关系遗失,或存储块的部分存储内容意外擦除或丢失、或存储块的局部晶体管损坏。
参见图6,在可选的实施例中,执行数据重构的存储块分布在固态硬盘SSD的相同的平面或不同的平面(Plane)。
参见图6,在可选的实施例中,当需要向目标物理存储块(block)写入数据时可先将指示符进行修改得到归类(从指定类中赋予给定类型)后的指示符;然后将待存数据和逻辑块地址及归类的指示符等一起写入存储块(block)。经过归类,已确定类型的指示符所表征的归类化逻辑块地址所对应的页或扇区保存的数据是有效的,已确定类型的指示符用于指示逻辑块地址信息,逻辑块地址信息与当前写入的数据对应,逻辑块地址信息对应的页或扇区存储的数据是当前需写入的数据也是重组对象。本申请维系逻辑块地址和指示符之间的绑定或编码关系,确定类型的指示符之后可将数据和逻辑块地址以及指示符写入固定硬盘的目标盘符或目标位置存储块。倘若映射表遗失或损坏等,数据重构中提取确定类型的指示符和LBA的类别及判定LBA对应页或扇区数据有效性,进而实现整盘数据的复现并极大程度的增强了固定硬盘SSD值数据的可逆性、安全性和可靠性。
参见图5,可选范例中,任一页例如页PK配置的指示符Flag0_K可以划分成主体部分和次级部分。指示符Flag0_K写入时指示符Flag0_K的主体部分存储在页PK的备用区但指示符Flag0_K的次级部分存储在页PK的相邻页的备用区,页PK的相邻页例如在图中可以用页P(K-1)或者用页P(K+1)来表示。那么该任一页例如页PK的指示符在使用时的真实值为其主体部分和次级部分各自的读取值的组合。指示符Flag0_K的主体部分直接可以从页PK读取出来、指示符Flag0_K的次级部分需要从相邻页读取,最终主体部分和次级部分各自的读取值的组合可等效为指示符Flag0_K。在可选但非限制性的实施例中譬如主体部分0xF0和次级部分0x0F可以组合成0xFF。这种组合可以是不同部分数值的逻辑与运算或数值的逻辑或运算或数值的相加运算或数值的相减运算等。不同部分数值典型的是主体部分和次级部分或其他的替代名称如第一部分和第二部分等。或直接将不同部分的数值连接起来作为新组合的等效指示符,连接的范例譬如主体部分0xC即第一部分和次级部分0xD即第二部分组合成等效指示符0xCD。主体部分即第一部和次级部分即第二部分的组合除了常规的逻辑与、逻辑或、逻辑非是三种基本逻辑运算,自然也还允许用到由这三种基本逻辑运算组合而成的变形逻辑运算:也即复合逻辑运算,包括与非逻辑运算或者或非逻辑运算或者与或非逻辑运算或者异或逻辑运算或者同或逻辑运算等。
参见图5,基于解释的便捷性,指示符Flag0_K的主体部分和次级部分在前文中以某些数值来阐释,实质上,它们还可以用矩阵形式来体现。如0xFD变换成2*2的矩阵并且例如矩阵的第一行首个数为0x3及第一行第二数为0x3、矩阵的第二行首个数为0x3以及第二行第二数为0x1等,这是一个矩阵体现指示符范例。如0xAD变换成2*2的矩阵并且例如矩阵的第一行首个数为0x2及第一行第二数为0x2、矩阵的第二行首个数为0x3以及第二行第二数为0x1等,这是另一矩阵体现指示符范例。
参见图5,棘手难题在于,倘若页的指示符之主体部分和次级部分各自读取值的组合不属于指定类(事先已定义好)中任意一类,恢复指示符变得复杂化。
参见图5,可选范例中,若任一页例如页PK的指示符Flag0_K之主体部分和次级部分各自读取值的组合不属于所述指定类(事先已定义好)中的任意一类,则基于里德所罗门纠错如RS纠错码并使用主体部分或次级部分对指示符进行恢复。譬如纠错码技术对主体部分进行纠错或对次级部分进行纠错,纠错后的主体部分或纠错后的次级部分则可以重新得到指示符。举例说明:鉴于主体部分与次级部分分布在不同页,主体部分所在页如果发生数据错误或丢失则利用次级部分恢复指示符,次级部分所在页如果发生数据错误或丢失则利用主体部分恢复指示符。将数据进行分布式处理以降低丢失风险。虽然主体部分和次级部分布置在同一页也是本申请的可选实施例,但是如果这一页的数据均崩溃则很难再去恢复指示符,例如主体部分和次级部分共同所在页发生了页错误,那么主体部分和次级部分均被丢失或部分丢失,这种情况近乎是完全丧失掉指示符。
参见图5,在可选的实施例中,正如前文所言的,任一页配置的指示符划分成主体部分和次级部分,在写入指示符时,主体部分存储在该任一页的备用区但次级部分存储在该任一页的相邻页备用区,任一页的指示符在使用时的真实值为其主体部分和次级部分各自读取值的组合。可设定,承载该任一页的存储晶体管(或称存储单元Cell)和承载该相邻页的存储晶体是相同的一批存储晶体管。举例说明,承载页PK的全部存储晶体管和承载相邻页P(K+1)的存储晶体是相同的一批存储晶体管。详细而言:同一批存储晶体管譬如是字线WK和位线B1-BJ所确定的一系列存储单元(图4中的一行晶体管)。
参见图5,承载页PK的存储晶体管和承载相邻页P(K+1)的存储晶体不是同一批存储晶体管的范例:字线WV和位线B1-BJ所确定的一系列存储单元用于承载页PK的数据或者相关的内容,字线WK和位线B1-BJ所确定的一系列存储单元承载页P(K+1)的数据或者相关的内容。参见图4,字线WV确定的系列存储单元和字线WK确定的系列存储单元尽管是共用位线,但是这两行晶体管显示不是相同的一批存储晶体管。
参见图5,设定,承载该任一页的存储介质是相同一批存储晶体管的低层页及承载该相邻页的存储介质是相同一批存储晶体管的高层页,承载该任一页的任一存储晶体管必然与承载该相邻页的对应一个存储晶体管是相同的一个共享存储晶体管。在可选范例中举例说明,承载页PK的存储介质是相同一批存储晶体管的低层页及承载页P(K+1)的存储介质相同一批存储晶体管的高层页,承载页PK的任一存储晶体管(此任一存储晶体管假设是图4中字线WK和位线BJ所确定的存储单元Cell)必然与承载页P(K+1)的对应一个存储晶体管(字线WK和位线BJ确定的存储单元Cell)属同一共享晶体管。相同一批存储晶体管如是字线WK和位线B1-BJ所确定的一系列存储单元。值得注意,这里举例说明的实施例仅仅只是用于阐释,其并不限制页的具体存储位置和存储多样性。晶体管内的不同浮栅之间才有低层页Lower Page和高层页Upper Page之分。如单个MLC存储单元的两层浮栅对应着两个页:低层页和高层页。类似的如单个TLC的存储单元内三层浮栅分别对应着三个页:任意两个浮栅之间存在低层页和高层页之分。换而言之,承载该任一页的存储介质是相同一批存储晶体管各自的多层浮栅之一以及承载该相邻页的存储介质则是相同一批存储晶体管各自的多层浮栅的其他层,承载该任一页的任一存储晶体管必然与承载该相邻页的对应一个存储晶体管是相同的一个共享存储晶体管。此共享存储晶体管的多层浮栅之一(如图4字线WK和位线BJ确定的存储单元Cell的一层浮栅)用于布置该任一页PK的数据而此共享存储晶体管的其他浮栅(如图4字线WK和位线BJ确定的存储单元Cell的余下浮栅)用于布置相邻页P(K+1)的数据。本申请前述设定方案的相关优势在下文中将详细阐释,至少可以从下文两个优点方面进行解释。
参见图5,很容里理解,在写入指示符时主体部分存储在页PK的备用区但次级部分存储在页PK的相邻页P(K+1)的备用区,指示符之主体部分布置在相同一批存储晶体管的低层页、指示符之次级部分布置在相同一批存储晶体管高层页,任一页如PK的指示符在使用时的真实值为其主体部分和次级部分各自的读取值的组合。优点之一是前述的将数据进行分布式处理从而降低数据丢失风险。即指示符之主体部分和指示符之次级部分布置在不同的页或存储页而降低数据丢失风险。优点之二是在写入指示符之次级部分时主动扰动和影响指示符之主体部分的数据鲁棒性。如果数据鲁棒性不佳,则会迫使指示符之主体部分和次级部分各自的读取值的组合不属于指定类中的任意一类,进而进一步识别存储指示符之主体部分的存储单元或存储晶体管属于潜在的故障晶体管。而这正是存储块实现错误检查和标记坏块所需要的。显而易见的,标记故障晶体管借助于存储晶体管内的不同浮栅之间的低层页和高层页之特定结构与本文数据重构进行结合得以实现。存储晶体管数据鲁棒性不佳例如体现在浮动栅极电子泄漏、电荷偏弱、电荷耐久度下降、物理创伤或制造阶段的非显性工艺缺陷、相邻晶体管之间的耦合效应过强等,不限制于此。
参见图5,可选例中,写入指示符时,主体部分存储在该任一页的备用区但次级部分存储在该任一页的相邻页备用区,承载该任一页的存储介质是相同一批存储晶体管的低层页及承载该相邻页的存储介质是相同一批存储晶体管的高层页,主体部分所在的诸多存储晶体管各自的一系列位线与次级部分所在的诸多存储晶体管各自的一系列位线之间至少存在着部分位线重合的情况。这种设定之效果为:在写入指示符之次级部分时主动扰动和影响指示符之主体部分的数据鲁棒性。如果数据鲁棒性不佳,则指示符之主体部分和次级部分各自读取值的组合更难接近于或更难近似等于指定类中的任意一类。主体部分和次级部分各自读取值的组合难以等于指定类中的任意一类则意味着扰动奏效。反之在次级部分主动扰动主体部分情况之下,若主体部分和次级部分各自读取值的组合仍然等于指定类中的任意一类则意味着数据鲁棒性极佳。进而更灵敏的识别出存储指示符之主体部分的存储单元或存储晶体管是否属于潜在故障晶体管。
参见图5,可选范例中,作为进一步降低丢失风险的措施,同时考量到指示符的冗余特性且不能过多的占用存储空间,备用区(spare)除放置指示符Flag0_K之外还需要用于放置存储ECC(Error Checking and Correcting)值、坏块标记等必要信息,所以在可选的实施例中,任一页如PK配置的指示符Flag0_K的次级部分和后一页P(K+1)配置的指示符Flag0_(K+1)的主体部分共页例如分布在同一页P(K+1);该任一页如页PK配置的指示符Flag0_K的主体部分和前一页P(K-1)配置的指示符Flag0_(K-1)的次级部分共页例如分布在同一页PK。K是正整数。在可选的实施例中,TLC的存储单元内三层浮栅分别对应着三个页,它们可分别用作页P(K-1)和页PK及页P(K+1)。
参见图6,关于支持SSD的系统,包括计算机设备及一个或多个SSD。这里的计算机设备包括携带微处理器的小型嵌入式电子计算设备或包括大型服务器或包括带有并行计算处理功能的计算设备或包括光计算机或包括带有图形处理器的计算设备或包括带有量子计算功能的计算设备。计算机设备在执行写操作时,其将待存数据、逻辑块地址以及指示符写入SSD的存储块,逻辑块地址及指示符写入在页的备用区而待存数据写入在页的数据区,其中写入待存数据至任一页时,计算机设备将该任一页存储的指示符设为指定类中之一、任一页在不同写入次数下指示符亦设成不同。其中所述的指示符可用于表征其所在存储块上的逻辑块地址的所属的类别。可参见图1-图5的相关描述。
参见图6,关于支持SSD的系统,计算机设备执行数据重构时,在数据恢复阶段计算机设备可将所需类别的逻辑块地址对应页的写入数据执行数据重构。关于数据恢复阶段的具体方案可参见图1-图5的相关描述。
参见图6,关于支持SSD的系统,本领域的普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时执行包括上述方法实施例的步骤,前述存储介质包括了:ROM、RAM、磁盘或者光驱盘等各种可以存储程序代码的介质。
以上通过说明和附图,给出了具体实施方式的特定结构的典型实施例,上述发明提出了现有的较佳实施例,但这些内容并不作为局限。对本领域技术人员而言,阅读上述说明后各种变化和修正无疑将显而易见。因此,所附的权利要求书应看作是涵盖本发明的真实意图和范围的全部变化和修正。在权利要求书范围内任何和所有等价的范围与内容都应认为仍属本发明的意图和范围内。

Claims (10)

1.一种支持SSD的数据管理方法,其特征在于,包括:
将待存数据、逻辑块地址及指示符写入SSD的存储块,逻辑块地址及指示符布置在页的备用区而待存数据布置在页的数据区,写入待存数据至任一页时将该任一页存储的指示符修改成指定类中之一、任一页在不同写入次数下该指示符亦设为不同,指示符用于表征当前存储块上的逻辑块地址的所属类别,在数据恢复阶段将所需类别的逻辑块地址所对应页的写入数据执行数据重构。
2.根据权利要求1所述的方法,其特征在于:
将待存数据写入单一存储块的连续页或非连续页;或者
将待存数据写入不同存储块的不同页。
3.根据权利要求1所述的方法,其特征在于:
用于标识指示符的指定类的类型至少包括常规数值或矩阵或带有时间戳的数据。
4.根据权利要求1所述的方法,其特征在于:
数据重构的应用场景包括SSD内部存储块与逻辑块地址的映射关系遗失,或存储块的部分存储内容意外擦除或丢失、或存储块的局部晶体管损坏。
5.根据权利要求1所述的方法,其特征在于:
数据重构包括相同类别的逻辑块地址所对应页的写入数据执行重构;或者
数据重构包括不同类别的逻辑块地址所对应页的写入数据执行重构。
6.根据权利要求1所述的方法,其特征在于:
执行数据重构的存储块分布在SSD的相同的平面或不同的平面。
7.根据权利要求1所述的方法,其特征在于:
任一页配置的指示符划分成主体部分和次级部分,写入指示符时,主体部分存储在该任一页的备用区但次级部分存储在该任一页的相邻页备用区,任一页的指示符在使用时的真实值为其主体部分和次级部分各自的读取值的组合。
8.根据权利要求7所述的方法,其特征在于:
若任一页的指示符之主体部分和次级部分各自的读取值的组合不属于所述指定类中的任意一类,则基于RS纠错码并使用主体部分或次级部分对指示符进行恢复。
9.根据权利要求7所述的方法,其特征在于:
该任一页配置的指示符的次级部分和后一页配置的指示符的主体部分共页,该任一页配置的指示符的主体部分和前一页配置的指示符的次级部分共页。
10.一种支持SSD的系统,其特征在于,包括:
计算机设备及一个或多个SSD;
计算机设备在执行写操作时,其将待存数据、逻辑块地址以及指示符写入SSD的存储块,逻辑块地址及指示符写入在页的备用区而待存数据写入在页的数据区,其中写入待存数据至任一页时,计算机设备将该任一页存储的指示符设为指定类中之一、任一页在不同写入次数下该指示符亦设成不同;
其中,所述指示符用于表征其所在存储块上的逻辑块地址的所属类别;
计算机设备执行数据重构时,在数据恢复阶段,计算机设备将所需类别的逻辑块地址对应页的写入数据执行数据重构。
CN202311338430.XA 2023-10-16 2023-10-16 支持ssd的数据管理方法及系统 Pending CN117407325A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311338430.XA CN117407325A (zh) 2023-10-16 2023-10-16 支持ssd的数据管理方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311338430.XA CN117407325A (zh) 2023-10-16 2023-10-16 支持ssd的数据管理方法及系统

Publications (1)

Publication Number Publication Date
CN117407325A true CN117407325A (zh) 2024-01-16

Family

ID=89499288

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311338430.XA Pending CN117407325A (zh) 2023-10-16 2023-10-16 支持ssd的数据管理方法及系统

Country Status (1)

Country Link
CN (1) CN117407325A (zh)

Similar Documents

Publication Publication Date Title
US11113149B2 (en) Storage device for processing corrupted metadata and method of operating the same
TWI639917B (zh) 資料儲存裝置及映射表重建方法
Birrell et al. A design for high-performance flash disks
US8448018B2 (en) Stripe-based memory operation
US11226747B2 (en) System and method for copy on write on an SSD
US9548108B2 (en) Virtual memory device (VMD) application/driver for enhanced flash endurance
US8312204B2 (en) System and method for wear leveling in a data storage device
JP3078946B2 (ja) 一括消去型不揮発性メモリの管理方法及び半導体ディスク装置
US8037232B2 (en) Data protection method for power failure and controller using the same
TWI467581B (zh) 複合式儲存裝置及其複合式儲存媒體控制器與定址方法
TWI423024B (zh) 用於快閃記憶體的資料儲存方法及其控制器與儲存系統
US20090259896A1 (en) Bad block identifying method for flash memory, storage system, and controller thereof
US10922234B2 (en) Method and system for online recovery of logical-to-physical mapping table affected by noise sources in a solid state drive
TWI476590B (zh) 記憶體管理方法、記憶體控制器與記憶體儲存裝置
TWI435329B (zh) 快閃記憶體管理方法、快閃記憶體控制器與儲存系統
TWI479314B (zh) 系統資料儲存方法、記憶體控制器與記憶體儲存裝置
TWI463313B (zh) 記憶體管理方法、記憶體控制器與記憶體儲存裝置
US10593421B2 (en) Method and apparatus for logically removing defective pages in non-volatile memory storage device
CN102053796A (zh) 闪存储存系统、闪存控制器与数据处理方法
TW201413450A (zh) 資料儲存方法、記憶體控制器與記憶體儲存裝置
CN102087632B (zh) 用于闪存的数据储存方法及其控制器与储存系统
CN117407325A (zh) 支持ssd的数据管理方法及系统
US12008258B2 (en) Data storage device and control method for non-volatile memory

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication