一种将数据写入固态硬盘的方法技术

技术编号:35253343 阅读:108 留言:0更新日期:2022-10-19 10:08
本申请提出了一种将数据写入固态硬盘的方法,该方法同时提供了字节级和页级的写入接口,对于满页的IO,采用页级接口,将其写入F l ash芯片以达到高性能和空间利用效率。对于小IO,写数据使用字节级接口,将其写入SCM芯片中,利用了SCM芯片字节级编址的优点和持久化的特性,有效提升了小IO写的效率。本申请实施例中的方法,缓解了小IO写带来的写放大问题,减少空间浪费,有效提升了固态硬盘的使用寿命。命。命。

【技术实现步骤摘要】
一种将数据写入固态硬盘的方法


[0001]本专利技术涉及存储系统领域,并且更具体地,涉及一种将数据写入固态硬盘的方法。

技术介绍

[0002]基于闪存(Flash)的固态存储器(Solid State Drive,SSD)以页(Page)为基本单元进行数据读/写操作,默认的页大小一般为4KB/8KB/16KB。因此,和SSD通信的上层系统(例如文件系统和块系统)广泛使用页作为数据写入单位,从而简化空间管理,提升元数据存储效率。
[0003]当上层系统需要向SSD写入一个小于页大小的数据(即小IO数据)时,通常先从SSD中读取出和该小IO数据属于同一个页的数据,然后将它们合并成一个新的页数据,最后将合并后的页数据作为一个新页写入SSD中。可见,执行一个小IO的写请求会带来对于一个页数据的读取操作和一个写入操作,从而造成读/写放大问题,降低了SSD的寿命。

技术实现思路

[0004]有鉴于此,本申请提供一种数据写入固态硬盘的方法、装置、固态硬盘以及系统,能够提高优化固态硬盘在小IO下写性能较差问题。
[0005]第一方面,本申请实施例提供了一种将数据写入固态硬盘中的方法,该方法提供两种写入的接口,即字节级写入接口和页级写入接口。具体的写入方法是:通过该字节级写入接口接收第一写入请求,该第一写入请求中携带待写入的第一数据,该第一数据的长度小于一个闪存页的大小,以及通过该页级写入接口接收第二写入请求,该第二写入请求中携带待写入的第二数据,该第一数据长度等于一个闪存页的大小。
[0006]该方法同时提供字节级和页级的写入接口,相比于传统的固态硬盘只能以一个闪存页为写入数据的单位,本方法根据写入的数据大小提供了不同写入接口,当数据长度小于一个闪存页大小时,仍然能接收该数据的写入,有效提高了小IO数据下写性能效率低下的问题。
[0007]一种可能的设计方式,将该第一数据写入所述固态硬盘的存储级内存SCM芯片中进行持久化存储;以及将该第二数据写入前述固态硬盘的闪存芯片中进行持久化存储。本方法将满页的数据写入Flash芯片中,以达到高性能和空间利用效率,对于小IO,本方法将小IO数据写入SCM芯片中,减少空间浪费并消除写放大问题。本方法利用了SCM芯片字节级编址的优点和持久化的特性,有效提升了小IO写的效率,缓解了小IO写带来的写放大问题,有效提升了固态硬盘的使用寿命。
[0008]一种可能的设计方式,该第一数据的长度大于或等于该SCM芯片的最小管理单元;将该第一数据写入存储级存储SCM芯片中持久化存储包括:以该最小管理单元存储该第一数据。
[0009]一种可能的设计方式,该第一写入请求中还携带该第一数据的逻辑地址,该第一数据写入前述SCM芯片进行持久化的物理地址为第一物理地址;根据该第一数据的逻辑地
址,获得所述第一数据的根页地址和子页地址;保存该根页地址和该子页地址的索引关系,以及该子页地址和所述第一物理地址之间的索引关系。本申请通过多级的索引关系管理,建立页级数据和字节级数据的翻译层,有效提升了存储系统的管理效率。
[0010]一种可能的设计方式,在将该第二数据写入该闪存芯片中持久化存储之后:当前述SCM芯片中存储的数据包含与前述第二数据的至少一部分数据相同的数据时,删除前述SCM芯片中存储的与前述的至少一部分数据相同的数据。本方法及时删除SCM芯片中的无效数据和无效索引,能提高SCM芯片的使用效率。
[0011]一种可能的设计方式,提供页级读取接口,通过该页级读取接口接收第一读取请求以读取前述第二数据,该第一读取请求中携带该第二数据的逻辑地址;根据该第二数据的逻辑地址,判断该SCM芯片中是否已存储与该第二数据的根页地址相同的第三数据;当前述的SCM芯片中已存储该第三数据时,根据该第二数据的逻辑地址从该SCM芯片中读取该第三数据,以及从该闪存芯片中读取的该第二数据;将前述读取到的所述第三数据和所述第二数据合并成整页数据后返回。
[0012]一种可能的设计方式,根据前述第二数据的逻辑地址从前述SCM芯片中读取该第三数据,包括:根据该第二数据的逻辑地址,获得该第二数据的根页地址;根据该第二数据的根页地址,获得该第三数据的子页地址;根据该第三数据的子页地址,获得该第三数据的物理地址,并根据该第三数据的物理地址读取所述第三数据。
[0013]一种可能的设计方式,在前述将第二数据的写入所述闪存芯片持久化存储之后,还包括:将该第二数据的副本缓存在前述固态硬盘的DRAM芯片中。
[0014]一种可能的设计方式,在前述将第一数据的写入所述固态硬盘的SCM芯片中进行持久化存储之后,还包括:将该第一数据的副本缓存在前述DRAM芯片中。
[0015]可选的,当从前述SCM芯片中读取前述第一数据时:判断前述DRAM芯片中是否存在第一数据的副本;如果存在,则从前述DRAM芯片中读取所述第一数据并返回;否则,从前述SCM芯片中读取该第一数据。
[0016]可选的,当从前述闪存芯片中读取前述第二数据时:判断前述DRAM芯片中是否存在第二数据的副本;如果存在,则从前述DRAM芯片中读取前述第二数据并返回;否则,从前述闪存芯片中读取该第二数据。
[0017]一种可能的设计方式,将该第一数据与其他数据以页为粒度迁移至前述闪存芯片中,该所述其他数据与该第一数据属于同一个根页,该其他数据在迁移之前位于前述SCM芯片或前述闪存芯片中。
[0018]本申请实施例第一方面还提供了一种数据迁移的方法,该方法可应用于固态硬盘中,该方法包括:确定SCM芯片中需要迁移的第一根页,该SCM芯片位于该闪存固态硬盘中;从该SCM芯片和/或闪存芯片中读取所述第一根页对应的数据,该闪存芯片位于前述闪存固态硬盘中;将所述第一页面对应的数据合并或直接写入闪存芯片中。
[0019]一种可能的设计方式,当从SCM芯片中读取第一根页对应的数据为整页数据,则只从SCM芯片读取该第一根页对应的数据,并将其写入前述闪存芯片中。
[0020]一种可能的设计方式,当从SCM芯片中读取第一根页对应的数据为不是整页数据,则分别从SCM芯片和闪存芯片中读取该第一根页对应的数据,并将其合并后写入前述闪存芯片中。
[0021]一种可能的设计方式,删除该SCM芯片中的所述第一根页对应的数据。
[0022]一种可能的设计方式,删除该第一根页对应的索引,并建立新索引。
[0023]一种可能的设计方式,根据页面聚合度确定SCM芯片中需要迁移的根页,所述页面聚合度指SCM芯片中根页面包含的子页面的数量,所述根页面由多个子页面组成。
[0024]一种可能的设计方式,前述页面聚合度越高的根页面或距离上次更新时间越久的根页面,会被优先确定为所述需要迁移的根页。
[0025]本申请实施例第一方面还提供了一种垃圾回收的方法,该方法包括:确定前述闪存芯片中需要回收的第一块,该第一块至少包括第一部分数据和第二部分数据,其中,该第一部分数据位于前述SCM芯片中,该第二部分数据位于该闪存本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种将数据写入固态硬盘的方法,其特征在于,所述方法包括:提供字节级写入接口;通过所述字节级写入接口接收第一写入请求,所述第一写入请求中携带待写入的第一数据,所述第一数据的长度小于一个闪存页的大小;提供页级写入接口;通过所述页级写入接口接收第二写入请求,所述第二写入请求中携带待写入的第二数据,所述第二数据长度等于一个闪存页的大小。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:将所述第一数据写入所述固态硬盘的存储级内存SCM芯片中进行持久化存储;以及将所述第二数据写入所述固态硬盘的闪存芯片中进行持久化存储。3.根据权利要求2所述的方法,其特征在于,所述第一数据的长度大于或等于所述SCM芯片的最小管理单元;所述将所述第一数据写入存储级存储SCM芯片中持久化存储包括:以所述最小管理单元为粒度存储所述第一数据。4.根据权利要求2或3所述的方法,其特征在于,所述第一写入请求中还携带所述第一数据的逻辑地址,所述第一数据写入所述SCM芯片的地址为第一物理地址;所述方法还包括:根据所述第一数据的逻辑地址,获得所述第一数据的根页地址和子页地址;保存所述根页地址和所述子页地址的索引关系,以及所述子页地址和所述第一物理地址之间的索引关系。5.根据权利要求2

4任一项所述的方法,其特征在于,在将所述第二数据写入所述闪存芯片中持久化存储之后,所述方法还包括:当所述SCM芯片中存储的数据包含与所述第二数据的至少一部分数据相同的数据时,删除所述SCM芯片中存储的与所述的至少一部分数据相同的数据。6.根据权利要求2至5任一项所述的方法,其特征在于,所述方法还包括:提供页级读取接口;通过所述页级读取接口接收第一读取请求以读取所述第二数据,所述第一读取请求中携带所述第二数据的逻辑地址;根据所述第二数据的逻辑地址,判断所述SCM芯片中是否已存储与所述第二数据的根页地址相同的第三数据;当所述SCM芯片中已存储所述第三数据时,根据所述第二数据的逻辑地址从所述SCM芯片中读取所述第三数据,以及从所述闪存芯片中读取的所述第二数据;将所述读取到的所述第三数据和所述第二数据合并成整页数据后返回。7.根据权利要求6所述的方法,其特征在于,根据所述第二数据的逻辑地址从所述SCM芯片中读取所述第三数据,包括:根据所述第二数据的逻辑地址,获得所述第二数据的根页地址;根据所述第二数据的根页地址,获得所述第三数据的子页地址;根据所述第三数据的子页地址,获得所述第三数据的物理地址,并根据所述第三数据的物理地址读取所述第三数据。
8.根据权利要求1至7任一项所述的方法,其特征在于,在将所述第二数据的写入所述闪存芯片持久化存储之后,所述方法还包括:将所述第二数据的副本缓存在所述固态硬盘的动态随机存取存储器DRAM芯片中。9.根据权利要求8所述的方法,其特征在于,在将所述第一数据的写入所述固态硬盘的SCM芯片中进行持久化存储之后,所述方法还包括:将所述第一数据的副本缓存在所述DRAM芯片中。10.根据权利要求1

9所述的方法,其特征在于,所述方法还包括:将所述第一数据与其他数据以页为粒度迁移至所述闪存芯片中,所述其他数据与所述第一数据属于同一个根页,所述其他数据在迁移之前位于所述SCM芯片或所述闪存芯片中。11.一种固态硬盘,其特征在于,所述固态硬盘中包括主控制器、多个闪存芯片以及一个或多个SCM芯片;所述主控制器执行计算机指令以实现权利要求1

10任一项所述的方法。12.根据权利要求11所述的固态硬盘,其特征在于,所述SCM芯片与所述闪存芯片连接在不同通道控制器上,其中,所述通道控制器位于所述主控制器中。13.一种将数据写入存储设备的方法,其特征在于,所述方法包括:控制器向存储级内存SCM存储设备发送第一写入请求,所述第一写入请求中携带待写入的第一数据,所述第一数据的长度小于一个闪存页的大小;所述SCM存储设备通过字节级写入接口接收所述第一写入请求;所述控制器向闪存存储设备发送第二写入请求,所述第二写入请求中携带待写入的第二数据,所述第二数据长度等于一个闪存页的大小;所述闪存存储设备通过页级写入接口接收所述第二写入请求;14.根据权利要求13所述的方法,其特征在于,所述方法还包括:所述SCM存储设备持久化存储所述第一数据;所述闪存存储设备持久化存储所述第二数据。15.根据权利要求14所述的方法,其特征在于,所述第一数据的长度大于或等于所述SCM存储设备的最小管理单元;所述SCM存储设备持久化存储所述第一数据包括:以所述最小管理单元存储所述第一数据。16.根据权利要求14或15任一项所述的方法,其特征在于,所述第一写入请求中还携带所述第一数据的逻辑地址,所述第一数据写入所述SCM存储设备中的地址为第一物理地址;所述方法还包括:所述控制器根据所述第一数据的逻辑地址,获得所述第一数据的根页地址和子页地址;所述控制器保存所述根页地址和所述子页地址的索引关系,以及所述子页地址和所述第一物理地址之间的索引关系。17.根据权利要求14

16任一项所述的方法,其特征在于,在所述闪存存储设备持久化存储所述第二数据之后,所述方法还包...

【专利技术属性】
技术研发人员:周文程桢苏毅蒋泓峰
申请(专利权)人:华为技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1