SSD内部数据文件系统eblock链接结构、管理系统及方法
【技术领域】
[0001] 本发明涉及一种SSD内部数据文件系统eblock链接结构、管理系统及方法。
【背景技术】
[0002] SSD内部数据文件管理旨在控制SSD内容数据文件的访问。这些数据文件主要有 盘片日志文件、固件升级文件、配置文件、nand flash块状态、掉电数据文件等内容。为保 证SSD的可靠性,SSD内部数据管理常采用多备份、SLC模式、只使用快page等机制。
[0003] 现有SSD内部数据管理采用轻量级的盘片主机数据管理方式,如图1所示。
[0004] 在该系统中,给定逻辑地址空间,建立一张逻辑地址到flash物理地址的映射表 FLT(First Level Table),在FLT中为每个内部数据文件划分一段固定且互斥的逻辑地址 空间,这些数据文件在分配的逻辑地址空间中存放。此方式下,FLT表随着系统数据文件数 量的增加而增加,所以,可支持的内部数据文件数量有限。另外,需要较大的buffer去缓存 FLT表,增加硬件成本;由于各文件固定划分逻辑地址空间,当需要增加、删除数据文件时, 需要重新构造FLT并划分逻辑地址空间,灵活性很差。
[0005] 由于FLT较大,FLT也需作为一个文件保存到flash中,所以还需再建立一张逻辑 地址到flash物理地址的映射表SLT (Second Level Table),用于描述FLT数据存放关系。 在盘片下电时,FLT数据下刷到flash,而SLT数据则被下刷到Nor flash/EEPROM中SLT所 在块的首个空page中。若SLT所在的块记满,则需要记录到备用块中,并擦除记满的块。
[0006] SLT 数据之所以保存到 Nor Flash/EEPROM,是因为 Nor Flash/EEPROM 数据 retention非常可靠且page大小较小(如nor page size通常为64-256B,但读取较慢; nand flash page size通常为16KB),SSD控制器在boot阶段可快速、有效查询到与SLT 紧邻的空page。另外Nor Flash/EEPROM块较nand flash块的擦写次数多得多,可在Nor flash/EEPROM中选用两个块交替擦除/记录掉电时的SLT数据。但这意味着,SSD硬盘必 须外接额外的非易失介质,硬件成本增加。
[0007] 当盘片上电时,SSD firmware从Nor flash/EEPROM中给定区域内检索首个空 page,读取有效SLT到buffer,随后查找SLT从flash中获取FLT到buffer,随后即可访问 系统区的各个数据文件。通常而言,首先读取掉电数据文件用于上电重建。
[0008] 读取系统区指定数据文件时,根据文件起始逻辑地址和长度查找FLT读取存放于 flash物理地址内数据即可。更新指定系统数据文件时,若为page对齐写,则将数据写到 空白page,更新映射关系到FLT。若非page对齐写,则在执行读填充后,再将数据写到空白 page,更新映射关系到FLT。
[0009] 参考图1,现有技术中,需要在buffer中缓存SLT及整个FLT,并存在于SSD的整 个运行周期,占用buffer资源较多,增加掉电数据下刷压力,增加硬件成本。
[0010] 在满足FLT下电下刷条件下,FLT不宜过大,也意味着现有系统区管理方法可管理 的系统区数据文件数量较少。
[0011] 现有设计中,各系统区数据文件从FLT中固定分配逻辑空间用于数据读写。观察 图1,FLT表中的file之间存在一些无效表项entry,表项空间利用率低下。当需要增加或 删除某个文件时,将需要对几乎所有系统文件在FLT中的地址段进行重新划分,灵活性较 差。
[0012] 另外,由于nand的比特翻转特性导致检索的空page不可靠且在nand中交替擦除 /记录会快速消耗nand的块寿命,为有效获取SLT,需要将SLT保存到Nor flash/EEPROM 中,导致硬件成本增加。
【发明内容】
[0013] 本发明所要解决的技术问题是,针对现有技术不足,提供一种SSD内部数据文 件系统eblock链接结构、管理系统及方法,解决现有系统区数据管理方法灵活性较差, buffer资源占用过多,可支持系统区文件数量较少,表项空间利用率低下,需要外接额外非 易失介质保存SLT的问题。
[0014] 为解决上述技术问题,本发明所采用的技术方案是:一种SSD内部数据文件管理 系统多级eblock链接结构,包括:
[0015] RLO eblock :用于放置盘片配置信息以及RLn eblock的块位置信息;
[0016] RLn eblock :用于存放SLT EBLOCK的块位置信息;
[0017] SLT eblock :用于存放SLT表,供SSD盘片上电时读取。
[0018] 本发明还提供了一种SSD内部数据文件管理系统,包括上述eblock链接结构、 FILES eblock、buffer、SLT表、逻辑-物理映射表FLT# ;其中:
[0019] FILES eblock:用于存放SSD盘片数据文件内容和各文件最后一次写包含的 FLT# ;
[0020] buffer :用于在SSD盘片上电时,根据SLT eblock的块位置信息,从SLT eblock 中读取SLT表;缓存逻辑-物理映射表FLT# ;根据SLT表记录的最后一次写page的位置, 获取逻辑-物理映射表FLT#记录的映射关系,再根据逻辑-物理映射表FLT#读取存放于 FILES eblock中的SSD盘片数据文件内容,并缓存读取的SSD盘片数据文件内容;
[0021] SLT表:用于按文件ID '#'记录文件file#最后一次写page的位置;该最后一次 写page的位置记录有file#的逻辑-物理映射表FLT# ;
[0022] 逻辑-物理映射表FLT# :用于记录file#的逻辑地址到物理地址的映射关系。
[0023] 本发明所述eblock链接结构的构造过程包括以下步骤:
[0024] 1)选取nand flash中若干固定物理位置的flash blcok作为RLO eblock,并约 定SSD在boot阶段从这些固定位置中读取有效的RLO page ;
[0025] 2)从nand flash中选取一定数量的flash block构成一个block pool,并预留 一部分flash block用于坏块替换和垃圾回收;
[0026] 3)在上述block pool中获取与设计备份数相同的flash block,对这些flash block按顺序记录物理地址构成RLn block map,将RLn blockmap作为RLn-1 page的一部 分记录到RLn-Ι级中,当前获取的若干个flash block即构成RLn eblock ;
[0027] 4)在上述block pool的剩余flash block中获取与设计备份数相同flash block,对这些flash block按顺序记录物理地址构成SLT block map,将SLT block map作 为RLn page的一部分记录到RLn中;当前获取的若干个flash block即构成SLT eblock。
[0028] 本发明还提供了一种SSD内部数据文件管理方法,该方法主要实现过程为:
[0029] 在SSD boot阶段将SLT表读写到buffer中;
[0030] 读文件file#时,检查file#对应的逻辑-物理映射表FLT#是否在buffer中;若 是,则直接查找buffer中的FLT#获取物理地址来读取文件内容;若否,查找buffer中SLT 表的号节点获取文件file#最后一次写的物理地址,读取逻辑-物理映射表FLT#到 buffer,再查找buffer中逻辑-物理映射表FLT#来读取文件内容;至此完成文件file#的 读取;
[0031] 写文件file#时,检查文件file#对应的逻辑-物理映射表FLT#是否在buffer 中;若否,则查找SLT表的号节点获取文件file#最近一次写的物理地址,读取逻辑-物 理映射表FLT#到buffer中;若是,贝lj直接进行下一步操作;随后,从files eblock中获取 首个空白page写入file#需要更新的数据内容,并将这些page的物理地址更新到逻辑-物 理映射表FLT#的对应逻辑节点中;再将逻辑-物理映射表FLT#写入到另一空白page中, 更新该空白page的物理地址到SLT表的号节点中;至此,完成文件file#的写入;
[0032] 在SSD盘片掉电时,将SLT表、FLT#下刷到flash中。
[0033] 将SLT表读写到buffer中的具体实现过程包括:
[0034] 当SSD盘片上电,读取SLT表到buffer时,首先在RLOeblock中读取一份有效的 RL0 Page,根据RL0 page中块位置信息获取RL1级所在eblock,在RL1级中检索首个空 page,读取该空page的上一 page数据内容,校验通过后获得有效RL1 page ;同理,根据RL1 page中的块位置信息检索有效SLT page ;
[0035] 写buffer中的SLT表到flash时,若SLT表所在eblock未使用完毕,则将SLT page内容写入到的SLT EBLOCK首个空白epage ;若SLT eblock所在eblock使用完毕,贝丨J 获取新的eblock,并将SLT page写入该新的eblock首个空白epage中,随后把SLT表新的 块位置信息写入到RL1级中首个空白印age。
[0036] 本发明空page的判断方法为:对写入flash的每一 page数据进行格式化处理,使 得写过的page与空page的比特值为1的个数存在至少5%的差异,对读路径上比特值为1 的个数进行统计,若读取的page内容中95%以上的比特值为1,则认为该page为空page。
[0037] 将SLT表、FLT#下刷到flash中的具体实现过程包括以下步骤:
[0038] 1)设SSD盘片掉电后的相关数据保存在ID为'#'的文件