首页> 中国专利> 固态硬盘闪存转换层的实现系统和闪存转换层的实现装置

固态硬盘闪存转换层的实现系统和闪存转换层的实现装置

摘要

本发明公开了一种固态硬盘闪存转换层的实现系统和闪存转换层的实现装置,以最大限度地提高固态硬盘的使用性能。所述系统包括应用层、内核层和固态硬盘硬件层,内核层包括闪存转换层;固态硬盘硬件层用于以并发单元为设备对象向内核层提供每个设备对象的属性和操作每个设备对象的物理接口;闪存转换层用于限制业务层对设备对象实施写操作的方式和向应用层提供逻辑接口;应用层用于在业务层的触发下,通过逻辑接口实现对设备对象的管理。本发明大大降低了因SSD固件升级带来的升级成本,降低了闪存转换层在内核层实现的垃圾回收、磨损均衡等操作对业务层I/O造成的影响,延长了固态硬盘的使用寿命。

著录项

  • 公开/公告号CN105224474A

    专利类型发明专利

  • 公开/公告日2016-01-06

    原文格式PDF

  • 申请/专利权人 深圳市腾讯计算机系统有限公司;

    申请/专利号CN201410243479.1

  • 发明设计人 王银虎;高剑林;冯旭刚;吴高峰;

    申请日2014-06-03

  • 分类号G06F12/08(20160101);G06F3/06(20060101);G06F9/44(20060101);

  • 代理机构44237 深圳中一专利商标事务所;

  • 代理人张全文

  • 地址 518057 广东省深圳市南山区高新区高新南一路飞亚达大厦5-10楼

  • 入库时间 2023-12-18 13:18:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-05-31

    授权

    授权

  • 2017-03-01

    实质审查的生效 IPC(主分类):G06F12/08 申请日:20140603

    实质审查的生效

  • 2016-01-06

    公开

    公开

说明书

技术领域

本发明涉及计算机领域,具体涉及固态硬盘闪存转换层的实现系统和闪存 转换层的实现装置。

背景技术

现有的固态硬盘(SolidStateDisk,SSD)使用模型是层次化结构,闪存 转换层(FlashTranslationLayer,FTL)在SSD内部实现(即device-basedFTL), 业务层不参与对SSD中存储介质即闪存(Flash)的管理,FTL算法对业务层 透明。

通常情况下,SSD的使用分为3个层次,即应用层(UserSpace)、内核层 (Kernel)和SSD硬件层(Hardware),如附图1所示。附图1示例的SSD使 用层次中,SSD硬件层以闪存(Flash)作为存储介质,提供硬件基础,对用 户提供传统硬盘类似的操作接口和功能。SSD硬件层的核心层次是FTL,FTL 对Flash进行管理,将用户访问的逻辑地址映射到Flash的物理地址,并进行 物理擦除块(PhysicalEraseBlock,PEB)的磨损均衡、SSD内部的垃圾块回 收以及对坏块进行管理等。内核层的作用主要体现在屏蔽硬件的差异,对应用 层提供友好的、一致的操作接口;内核层本身又细化为几个层次,一般而言 SSD经过SCSI层会被注册成SCSI设备,其主要作用是对上层屏蔽硬盘操作 指令的细节;SCSI之上又有通用块(GeneralBlock,GB)层,其作用是对输 入/输出(Input/Output,IO)进行调度,使硬盘访问性能最优化,通用块层之 上的文件系统(FileSystem,FS)层将SSD以文件的形式对应用层提供友好 的接口。应用层是用户程序即SSD的使用者,应用层并不关心SSD的硬件细 节,在Linux操作系统中,SSD像其他设备一样被虚拟成文件供用户程序访问。

从上述对现有SSD使用层次的剖析可知,现有的闪存转换层(FTL)是在 SSD硬件层实现,这种实现方式带来的缺陷在于:一方面,FTL任何一点改变 都需要SSD固件升级来完成,而FTL是在SSD硬件层实现,SSD固件升级的 成本相当高,因此不适合业务多样化、使用场景快速变化的互联网海量数据存 储需求;另一方面,由于FTL对业务层(在应用层以及内核层实现)透明, 业务层不参与对Flash的管理,业务层不了解SSD内部的操作,使得在SSD 硬件层进行的垃圾回收、磨损均衡等内部操作对业务层的I/O造成影响,不仅 不能最大限度发挥SSD的性能,而且有可能造成I/O毛刺,影响互联网络的 高效运营。

发明内容

本发明实施例提供固态硬盘闪存转换层的实现系统和闪存转换层的实现 装置,以最大限度地提高固态硬盘的使用性能。

本发明实施例提供一种固态硬盘闪存转换层的实现系统,包括应用层、所 述应用层之下的内核层和所述内核层之下的固态硬盘硬件层,所述内核层包括 闪存转换层;

所述固态硬盘硬件层,用于以并发单元为设备对象向所述内核层提供每个 所述设备对象的属性和操作每个所述设备对象的物理接口,所述并发单元为构 成固态硬盘的物理芯片颗粒;

所述闪存转换层,用于限制业务层对所述设备对象实施写操作的方式和向 所述应用层提供逻辑接口,所述逻辑接口用于所述业务层通过所述应用层参与 对所述设备对象的管理;

所述应用层,用于在所述业务层的触发下,通过所述逻辑接口实现对所述 设备对象的管理。

本发明另一实施例提供一种闪存转换层的实现装置,所述装置位于操作系 统的内核层,所述装置包括:

逻辑接口模块,用于向所述内核层之上的应用层提供逻辑接口,所述逻辑 接口用于所述业务层通过所述应用层参与对设备对象的管理;

算法实现模块,用于实现闪存转换算法;

设备管理模块,用于限制所述业务层对所述设备对象实施写操作的方式;

驱动接口模块,用于向位于所述内核层之下的固态硬盘硬件层提供统一的 驱动接口。

从上述本发明实施例可知,一方面,闪存转换层在内核层而不是在固态硬 盘硬件层,因此大大降低了因SSD固件升级带来的升级成本,适合业务多样化、 使用场景快速变化的互联网海量数据存储需求;另一方面,闪存转换层向应用 层提供逻辑接口,使得业务层能够通过这些逻辑接口参与对固态硬盘中物理存 储介质Flash的管理,如此,降低了闪存转换层在内核层实现的垃圾回收、磨 损均衡等操作对业务层I/O造成的影响,而闪存转换层限制业务层对设备对象 实施写操作的方式也优化了固态硬盘的性能,降低了固态硬盘的写放大,延长 了固态硬盘的使用寿命。

附图说明

图1是现有技术提供的固态硬盘使用层次示意图;

图2是本发明实施例提供的固态硬盘闪存转换层的实现系统结构示意图;

图3是本发明实施例提供的闪存转换层的实现装置结构示意图。

具体实施方式

本发明实施例提供固态硬盘闪存转换层的实现系统和闪存转换层的实现 装置,所述系统包括应用层、所述应用层之下的内核层和所述内核层之下的固 态硬盘硬件层,所述内核层包括闪存转换层;所述固态硬盘硬件层,用于以并 发单元为设备对象向所述内核层提供每个所述设备对象的属性和操作每个所 述设备对象的物理接口,所述并发单元为构成固态硬盘的物理芯片颗粒;所述 闪存转换层,用于限制业务层对所述设备对象实施写操作的方式和向所述应用 层提供逻辑接口,所述逻辑接口用于所述业务层通过所述应用层参与对所述设 备对象的管理;所述应用层,用于在所述业务层的触发下,通过所述逻辑接口 实现对所述设备对象的管理。本发明实施例还提供相应的闪存转换层的实现装 置。以下分别进行详细说明。

与现有的固态硬盘类似,本发明实施例提供的固态硬盘闪存转换层的实现 系统也包括三个层次,即应用层(Userspace)、应用层之下的内核层(Kernel) 和内核层之下的固态硬盘硬件层(Hardware),所不同的是,本发明实施例提 供的内核层包括闪存转换层(FlashTranslationLayer,FTL),即与通用的SSD 相比,FTL被移至操作系统即主机端的内核层实现,如附图2所示。从附图2示 例的固态硬盘闪存转换层的实现系统还可以看出,本发明实施例提供的固态硬 盘闪存转换层的实现系统中,内核层仅包含FTL和固态硬盘驱动程序(SSD driver),将原有的虚拟文件系统(VFS)层、文件系统(FS)层以及针对传统 硬盘优化的通用块(GB)层和SCSI从内核层剔除,如此精简了内核层的I/O协 议栈,减小了开发成本和提高的I/O速率。

在附图2示例的固态硬盘闪存转换层的实现系统中,固态硬盘硬件层是 SSD的硬件实现,主要包括物理存储介质即闪存(Flash)和固态硬盘控制器 (Controller)。由于闪存转换层FTL被移至内核层,固态硬盘硬件层直接向内 核层暴露,此时的固态硬盘被还原成原始状态,呈现为SSD并发单元,即构成 固态硬盘的物理芯片颗粒。固态硬盘硬件层的作用在于以并发单元为设备对象 向内核层提供每个设备对象的属性和操作每个设备对象的物理接口,具体地, 是在向操作系统注册时,向内核层提供每个设备对象的属性和操作每个设备对 象的物理接口。需要说明的是,物理接口的“物理”是为了表明内核层与位于 其下的固态硬盘硬件层打交道的是物理的操作,例如,物理地址的读写、物理 块的擦除等等。

具体地,附图2示例的固态硬盘硬件层以并发单元为设备对象向内核层提 供操作每个设备对象的物理接口包括:以并发单元为设备对象向内核层提供操 作每个设备对象的物理擦除(Erase)接口、读冗余空间(ReadOOB)接口、 写冗余空间(WriteOOB)接口、坏块判断(BlockIsBad)接口和坏块标识 (BlockMarkBad)接口中的一种或多种,除此之外,还包括通用SSD具有的写 (Write)接口和读(Read)接口,其中,Erase接口被调用时,用于对设备对 象进行物理块(PhysicalBlock)的擦除,ReadOOB接口被调用时,用于对OOB 进行读操作,WriteOOB接口被调用时,用于对OOB进行写操作,BlockIsBad 接口被调用时,用于对物理块是否已损坏进行判断,BlockMarkBad接口被调 用时,用于对已损坏的物理块进行标识,Write接口被调用时,用于对设备对 象物理地址进行写操作,Read接口被调用时,用于对设备对象物理地址进行读 操作。固态硬盘硬件层向内核层提供每个设备对象的属性包括Number、Size、 Erasesize、Writesize和Oobsize等,其中,Number为每个设备对象在固态硬盘 内部的序号,Size表示每个设备对象的容量大小,Erasesize表示闪存中物理擦 除块(PhysicalEraseBlock,PEB)的大小,Writesize表示闪存中物理页(page) 的大小,Oobsize表示闪存中每页OOB的大小。在本发明实施例中,OOB表示 闪存内部每页后边冗余的空间,通常用于数据纠错和元数据(Metadata)的保 存。

在现有的固态硬盘使用层次中,应用层与内核层、固态硬盘硬件层的交互 需要先通过虚拟文件系统VFS接口,再通过内核层与固态硬盘硬件层之间的接 口,实现对固态硬盘硬件层物理存储介质的访问。在在附图2示例的固态硬盘 闪存转换层的实现系统中,闪存转换层向应用层提供逻辑接口,这些逻辑接口 用于业务层通过应用层参与对设备对象的管理。需要说明的是,逻辑接口的“逻 辑”是为了表明应用层对SSD的操作是对逻辑地址而非物理地址的操作。逻辑 接口可以是逻辑读(Read)接口、逻辑写(Write)接口和逻辑擦除(Erase) 接口,其中,逻辑Read接口被调用时,用于对设备对象的逻辑地址进行读操作, 逻辑Write接口被调用时,用于对设备对象的逻辑地址进行写操作,逻辑Erase 接口被调用时,用于对设备对象的逻辑地址进行擦除操作。正是由于闪存转换 层向应用层提供了丰富的逻辑接口,业务层才可能根据自身的实际应用场景, 触发应用层,从而参与对设备对象的管理。

闪存转换层还用于限制业务层对设备对象实施写操作的方式。具体地,可 以是与业务层约定(例如,以通信协议的方法)对设备对象实施写操作时采用 物理块内连续写和物理块间随机写的方式。所谓物理块内连续写和物理块间随 机写,具体是指要求业务层在对设备对象实施写操作时,在每个物理块内对其 页(page)是连续写而不是间隔一个或多个页进行写操作,只有在写满一个物 理块后,才可以随机跳转至另一个物理块对其页(page)进行连续的写操作。 这种在物理块内连续写和物理块间随机写的方式可以在一定程度上减小垃圾 回收(GarbageCollection,GC)的频率,降低固态硬盘的写放大(Write Amplification,WA),从而延长固态硬盘的使用寿命。

尽管在层次上移至内核层,然而,附图2示例的固态硬盘闪存转换层的实 现系统中,闪存转换层仍然需要完成与现有技术提供的闪存转换层类似的功 能,例如,逻辑地址到物理地址的映射、磨损均衡以及坏块管理(包括对是否 坏块进行判断和对坏块进行标识等等)等,这些可以通过闪存转换层中的算法 实现模块实现。

附图2示例的应用层用于在业务层的触发下,通过闪存转换层提供的逻辑 接口实现对设备对象的管理。具体地,可以是在业务层的触发下,通过所述逻 辑接口向闪存转换层下发读、写和擦除指令,例如,通过对前述实施例提及的 逻辑Read接口、逻辑Write接口和逻辑Erase接口的调用,使闪存转换层中的算 法实现模块实现闪存转换算法,包括实现逻辑地址到物理地址的映射、磨损均 衡以及坏块管理等算法。需要说明的是,在本发明实施例中,在业务层的触发 下,通过逻辑接口向闪存转换层下发读、写和擦除指令,使闪存转换层中的算 法实现模块实现闪存转换算法,具体是使闪存转换层中的算法实现模块实现垃 圾回收算法。当所有固态硬盘的空闲空间被写满之后,固态硬盘的主控芯片 (Controller)就会将所有标记为“无效”的块(block)和页(page)都统一 进行擦除,然后,将这些离散的数据整合起来重置为“空白”的块空间,这一 操作行为就是所谓的垃圾回收(GarbageCollection,GC)。

在本发明实施例中,垃圾回收是由业务层根据需要或者设定一些条件,在 条件满足时触发的,例如,业务层可以设定I/O门限值,当实际业务运行时导 致I/O低于该门限值时则触发垃圾回收,再如,可以是在某个时间点(例如凌 晨2点用户访问少时)触发垃圾回收。具体的垃圾回收方法可通过闪存转换层 的算法实现模块的固件程序算法实现,例如,自动为每一个经过擦除处理的“空 白”块作一个标记,当整个固态硬盘的垃圾达到一定数量,需要进行垃圾回收 时,自动寻找到标记等级较低的块进行垃圾回收。如此,宏观上可以做到减小 垃圾回收的频繁程度,降低对业务层I/O的影响,微观上可以做到磨损均衡, 确保块的健康,减少对某个块的频繁的垃圾回收,从而降低写放大,延长固态 硬盘的使用寿命。

闪存转换层还用于根据业务层的业务特征,对并发单元进行调度。这是由 于,闪存转换层被移至内核层,固态硬盘向操作系统呈现的是并发单元,而闪 存转换层向应用层提供了丰富的逻辑接口,业务层可以根据自身的业务特征, 通过应用层与内核层之间的这些逻辑接口,直接对并发单元操作,例如,在某 个时刻对并发单元A实施了读操作,在短时间内需要对固态硬盘实施读操作 时,尽可能去访问并发单元B而不是继续访问并发单元A,这种对并发单元的 调度方式也可以优化固态硬盘的性能。

从上述本发明实施例可知,一方面,闪存转换层在内核层而不是在固态硬 盘硬件层,因此大大降低了因SSD固件升级带来的升级成本,适合业务多样化、 使用场景快速变化的互联网海量数据存储需求;另一方面,闪存转换层向应用 层提供逻辑接口,使得业务层能够通过这些逻辑接口参与对固态硬盘中物理存 储介质Flash的管理,如此,降低了闪存转换层在内核层实现的垃圾回收、磨 损均衡等操作对业务层I/O造成的影响,而闪存转换层限制业务层对设备对象 实施写操作的方式也优化了固态硬盘的性能,降低了固态硬盘的写放大,延长 了固态硬盘的使用寿命。

请参阅附图3,是本发明实施例提供的闪存转换层的实现装置。为了便于 说明,仅仅示出了与本发明实施例相关的部分。附图3示例的闪存转换层的实 现装置位于操作系统的内核层,该装置包括逻辑接口模块301、算法实现模块 302、设备管理模块303和驱动接口模块304,其中:

逻辑接口模块301,用于向内核层之上的应用层提供逻辑接口,所述逻辑 接口用于业务层通过所述应用层参与对设备对象的管理。

需要说明的是,逻辑接口模块301向应用层提供的逻辑接口,其中的“逻 辑”是为了表明应用层对SSD的操作是对逻辑地址而非物理地址的操作。逻辑 接口可以是逻辑读(Read)接口、逻辑写(Write)接口和逻辑擦除(Erase) 接口,其中,逻辑Read接口被调用时,用于对设备对象的逻辑地址进行读操作, 逻辑Write接口被调用时,用于对设备对象的逻辑地址进行写操作,逻辑Erase 接口被调用时,用于对设备对象的逻辑地址进行擦除操作。正是由于闪存转换 层向应用层提供了丰富的逻辑接口,业务层才可能根据自身的实际应用场景, 触发应用层,从而参与对设备对象的管理。

算法实现模块302,用于实现闪存转换算法。

算法实现模块302用于实现闪存转换算法包括逻辑地址到物理地址的映 射、磨损均衡以及坏块管理(包括对是否坏块进行判断和对坏块进行标识等等) 等。除了这些基本功能之外,算法实现模块302根据从逻辑接口下发的读、写 和擦除指令,实现垃圾回收算法。所谓垃圾回收(GarbageCollection,GC), 是指当所有固态硬盘的空闲空间被写满之后,固态硬盘的主控芯片(Controller) 就会将所有标记为“无效”的块(block)和页(page)都统一进行擦除,然后, 将这些离散的数据整合起来重置为“空白”的块空间。

垃圾回收是由业务层根据需要或者设定一些条件,在条件满足时触发的, 例如,业务层可以设定I/O门限值,当实际业务运行时导致I/O低于该门限值时 则触发垃圾回收,再如,可以是在某个时间点(例如凌晨2点用户访问少时) 触发垃圾回收。具体的垃圾回收方法可通过算法实现模块302的固件程序算法 实现,例如,自动为每一个经过擦除处理的“空白”块作一个标记,当整个固 态硬盘的垃圾达到一定数量,需要进行垃圾回收时,自动寻找到标记等级较低 的块进行垃圾回收。如此,宏观上可以做到减小垃圾回收的频繁程度,降低对 业务层I/O的影响,微观上可以做到磨损均衡,确保块的健康,减少对某个块 的频繁的垃圾回收,从而降低写放大,延长固态硬盘的使用寿命。

设备管理模块303,用于限制业务层对设备对象实施写操作的方式。

具体地,设备管理模块303可以是与业务层约定(例如,以通信协议的方 法)对设备对象实施写操作时采用物理块内连续写和物理块间随机写的方式。 所谓物理块内连续写和物理块间随机写,具体是指要求业务层在对设备对象实 施写操作时,在每个物理块内对其页(page)是连续写而不是间隔一个或多个 页进行写操作,只有在写满一个物理块后,才可以随机跳转至另一个物理块对 其页(page)进行连续的写操作。这种在物理块内连续写和物理块间随机写的 方式可以在一定程度上减小垃圾回收(GarbageCollection,GC)的频率,降 低固态硬盘的写放大(WriteAmplification,WA),从而延长固态硬盘的使用 寿命。

设备管理模块303还用于根据业务层的业务特征,对并发单元进行调度。 这是由于,闪存转换层被移至内核层,固态硬盘向操作系统呈现的是并发单元, 而闪存转换层向应用层提供了丰富的逻辑接口,业务层可以根据自身的业务特 征,通过应用层与内核层之间的这些逻辑接口,直接对并发单元操作,例如, 在某个时刻对并发单元A实施了读操作,在短时间内需要对固态硬盘实施读操 作时,尽可能去访问并发单元B而不是继续访问并发单元A,这种对并发单元 的调度方式也可以优化固态硬盘的性能。

驱动接口模块304,用于向位于所述内核层之下的固态硬盘硬件层提供统 一的驱动接口。

从上述附图3示例的闪存转换层的实现装置可知,一方面,闪存转换层的 实现装置在内核层而不是在固态硬盘硬件层,因此大大降低了因SSD固件升级 带来的升级成本,适合业务多样化、使用场景快速变化的互联网海量数据存储 需求;另一方面,装置的逻辑接口模块向应用层提供逻辑接口,使得业务层能 够通过这些逻辑接口参与对固态硬盘中物理存储介质Flash的管理,如此,降 低了闪存转换层的实现装置在内核层实现的垃圾回收、磨损均衡等操作对业务 层I/O造成的影响,而设备管理模块限制业务层对设备对象实施写操作的方式 也优化了固态硬盘的性能,降低了固态硬盘的写放大,延长了固态硬盘的使用 寿命。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步 骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读 存储介质中,存储介质可以包括:只读存储器(ROM,ReadOnlyMemory)、 随机存取存储器(RAM,RandomAccessMemory)、磁盘或光盘等。

以上对本发明实施例所提供的固态硬盘闪存转换层的实现系统和闪存转 换层的实现装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实 施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核 心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施 方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本 发明的限制。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号