CN113490922B - 固态硬盘写放大优化方法 - Google Patents

固态硬盘写放大优化方法 Download PDF

Info

Publication number
CN113490922B
CN113490922B CN201980093138.1A CN201980093138A CN113490922B CN 113490922 B CN113490922 B CN 113490922B CN 201980093138 A CN201980093138 A CN 201980093138A CN 113490922 B CN113490922 B CN 113490922B
Authority
CN
China
Prior art keywords
solid state
state disk
capacity
controller
host device
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.)
Active
Application number
CN201980093138.1A
Other languages
English (en)
Other versions
CN113490922A (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
Publication of CN113490922A publication Critical patent/CN113490922A/zh
Application granted granted Critical
Publication of CN113490922B publication Critical patent/CN113490922B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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/04Addressing variable-length words or parts of words
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

一种固态硬盘写放大优化方法,应用于主机设备,主机设备与存储系统相连;每个固态硬盘包括控制器以及存储介质,固态硬盘能够按预定策略进行块擦除、垃圾回收;主机设备接收存储系统中每个固态硬盘上报的自身的虚拟容量,虚拟容量大于固态硬盘自身所具有的物理容量;主机设备根据每个固态硬盘的虚拟容量划分出多个RAID条带;当有数据需要存储时,主机设备根据多个RAID条带存储数据。

Description

固态硬盘写放大优化方法
技术领域
本申请实施例涉及存储技术领域,尤其涉及一种固态硬盘写放大优化方法。
背景技术
固态硬盘(solid state drivers,SSD)基于闪存实现,SSD相比于传统的硬盘驱动器(hard disk drive,HDD),有着速度快、可靠性高等显著优势,随着闪存技术的不断发展,成本逐年降低,近年来在企业级存储、数据中心应用越来越广泛。
在多个固态硬盘组成的存储系统中,存储系统的最小存储单位是扇区(sector),例如存储系统的扇区大小是512比特(bit),存储系统每次可以读多个扇区。
现有技术中,每个固态硬盘向存储系统上报逻辑区块地址(logical blockaddress,LBA)空间,并且每个固态硬盘的物理存储容量要大于用户可见的LBA空间,因为在固态硬盘中需要预留出预留空间(over provisioning,OP)。
随着存储系统中不断写入数据以及删除数据,存储系统中已写入数据的条带中会产生无效数据,当条带即将分配完毕时,存储系统必须做条带上的垃圾回收,从而腾出新的存储空间,这些新的存储空间可用于写入新的数据。
现有技术中垃圾回收时的拷贝过程比较耗时,即会带来额外的写操作,这部分额外的写入操作称为系统级的写放大。如果频繁的进行条带上的垃圾回收,这部分额外的写入操作会占用固态硬盘的带宽,从而会影响数据的存储性能。
发明内容
本申请实施例提供了一种固态硬盘写放大优化方法和设备以及系统,用于缓解现有技术中存在着的写放大问题,从而提升数据的存储性能。
第一方面,本申请实施例提供一种固态硬盘写放大优化方法,应用于主机设备,所述主机设备与存储系统相连,所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;其中,所述固态硬盘能够按预定策略进行块擦除以及垃圾回收;所述方法包括:所述主机设备接收所述存储系统中每个所述固态硬盘上报的自身的虚拟容量,其中,所述虚拟容量大于所述固态硬盘自身所具有的物理容量;所述主机设备根据每个所述固态硬盘的虚拟容量划分出多个独立冗余磁盘阵列RAID条带;当有数据需要存储时,所述主机设备根据划分出的所述多个RAID条带存储数据。
在本申请中,由于固态硬盘上报给主机设备的虚拟容量大于存储介质的物理容量,使得主机设备可以划分出更多个数的RAID条带。当有更多的RAID条带可以使用时,意味着上层可以利用这些多出来的条带写更多的数据,因此,上层进行条带回收的频率就会减少,从而可以减少条带回收时对有效数据进行搬移的频率,减少写放大,提高固态硬盘使用寿命。同时,由于在日常应用中,上层通常会对各种数据(如文件)进行修改,修改后的数据通常会使用新的条带来保存。同时,会使固态硬盘中的存储介质中的一部分数据会被变成无效数据。如果上层可使用的条带越多,上层可以保存更多份修改后的数据,固态硬盘中的无效数据也会越多,此时,进行垃圾回收时,能够提升回收效率,进一步减少写放大,提高固态硬盘使用寿命。
在第一方面的一种可能实现方式中,所述固态硬盘还支持trim命令,所述方法还包括:所述主机设备向每个所述固态硬盘发送trim命令。
本申请通过在判断条件满足时发送trim命令可以及时释放空闲空间,防止上层使用新RAID条带时出错。如果没有及时发送trim命令,固态硬盘仍然会认为在上层已经无效的数据有效,从而无法及时清除存储介质中的无效数据来腾出空闲空间给上层的RAID条带,导致上层使用新RAID条带时而出错。本申请通过在条件满足时发送trim命令,后续以便固态硬盘及时更新无效数据,后续进行块擦除、垃圾回收等操作来释放出更多的空闲空间,从而防止这种情况发生。
在第一方面的一种可能实现方式中,所述主机设备向每个所述固态硬盘发送trim命令,包括:所述主机设备定期获取每个所述固态硬盘中的有效数据容量,当至少一个所述固态硬盘中的所述有效数据容量大于占用阈值时,所述主机设备向每个所述固态硬盘发送trim命令。
需要说明的是,在本申请中,主机设备除了在固态硬盘的有效数据容量大于占用阈值时向固态硬盘发送trim命令之外,主机设备通过其他的方法来下发trim命令,例如主机设备可以按照预定的周期,定时的向每个固态硬盘发送trim命令,从而保证每个固态硬盘中具有可用的物理容量来写入新数据。另外,本申请中主机设备在固态硬盘的有效数据容量大于占用阈值时向固态硬盘发送trim命令,在保证固态硬盘的可用物理容量的效果基础上,这种发送trim命令的方式占用的资源也会相对较少。
在第一方面的一种可能实现方式中,所述主机设备定期获取每个所述固态硬盘中的有效数据容量,包括:所述主机设备按照预设的周期向每个所述固态硬盘发送有效数据容量读取指令;所述主机设备接收每个所述固态硬盘根据所述有效数据容量读取指令分别发送的有效数据容量。其中,主机设备可以按照预设的周期发送有效数据容量读取指令,例如该预设的周期可以是3秒(s),或者5s等,该预设的周期可以根据实际场景来确定周期取值大小,此处不限定预设的周期的取值大小。N个控制器中至少一个控制器在接收到主机设备发送的有效数据容量读取指令之后,控制器读取固态硬盘的有效数据容量,并向主机设备上报读取到的该固态硬盘的有效数据容量,从而主机设备可以实时的确定N个固态硬盘中是否还有剩余的存储空间来存储数据。
在第一方面的一种可能实现方式中,所述主机设备定期获取每个所述固态硬盘中的有效数据容量,包括:所述主机设备接收每个所述固态硬盘按照预设的上报周期分别发送的有效数据容量。其中,主机设备除了采用发送有效数据容量读取指令来获取到固态硬盘的有效数据容量的方式之外,每个固态硬盘的控制器还可以采用主动上报自身的有效数据容量的方式,例如控制器采用预设的上报周期可以是3s,或者5s等,该预设的上报周期可以根据实际场景来确定周期取值大小,此处不限定预设的周期的取值大小。每个固态硬盘的控制器可以按照该预设的上报周期获取固态硬盘的有效数据容量,然后周期性的向主机设备上报每个固态硬盘的有效数据容量,从而使得主机设备接收每个固态硬盘按照预设的上报周期分别发送的有效数据容量。
在第一方面的一种可能实现方式中,所述虚拟容量为所述物理容量的两倍。其中,固态硬盘上报的自身虚拟容量为固态硬盘自身所具有的物理容量的两倍时,主机设备根据所有固态硬盘具有的虚拟容量划分出的条带个数可以是根据固态硬盘的物理容量划分出的条带个数的两倍,在现有技术中每个固态硬盘上报的物理容量小于该固态硬盘的物理容量,这样可以保证每个LBA都对应有存储介质的存储空间。与现有技术不相同的是,本申请实施例中将固态硬盘的虚拟容量扩大为该固态硬盘的物理容量的两倍,从而主机设备能够根据该固态硬盘的虚拟容量从存储介质中划分出更多的条带,例如本申请实施例中划分出的条带个数为现有技术中划分出的条带个数的两倍。
以固态硬盘的物理容量为1T示例说明,固态硬盘将虚拟容量扩大到2T,如果1T的数据写到2T的LBA空间中,平均每个条带上的有效数据量是50%,回收1个条带就可以腾出2个新条带供新的用户数据写入,此时,相当于往两个新条带写数据,实际需要写三个条带的数据(还包括回收一个条带时写的数据),因此即写放大为3/2=1.5,在实际应用场景中,固态硬盘的存储介质中存储的数据会被不断的修改,随着时间的推移,存储介质中会存在更多的无效数据,例如平均每个条带上的有效数据量减少为20%。此时,回收1个条带可以腾出5个新条带,因此,写放大为(5+1)/5=1.2,如果选择有效数据量更少的条带做垃圾回收,实际业务中的写放大会更低,非常接近于1(相当于没写放大),从而有效减少了写放大,提高了SSD的使用寿命。
第二方面,本申请实施例提供一种固态硬盘写放大优化方法,应用于存储系统,所述存储系统与主机设备相连,所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;所述方法包括:每个所述固态硬盘的控制器根据所述固态硬盘自身所具有的物理容量确定所述固态硬盘自身的虚拟容量,其中,所述虚拟容量大于所述固态硬盘自身所具有的物理容量;每个所述固态硬盘的控制器向所述主机设备上报自身的虚拟容量,其中,所述虚拟容量用于所述主机设备根据所述虚拟容量划分出多个独立冗余磁盘阵列RAID条带;当有数据需要存储时,每个所述固态硬盘的控制器将所述数据存储到所述主机设备划分的RAID条带对应的存储介质中。
在本申请中,由于固态硬盘上报给主机设备的虚拟容量大于存储介质的物理容量,使得主机设备可以划分出更多个数的RAID条带。当有更多的RAID条带可以使用时,意味着上层可以利用这些多出来的条带写更多的数据,因此,上层进行条带回收的频率就会减少,从而可以减少条带回收时对有效数据进行搬移的频率,减少写放大,提高固态硬盘使用寿命。同时,由于在日常应用中,上层通常会对各种数据(如文件)进行修改,修改后的数据通常会使用新的条带来保存。同时,会使固态硬盘中的存储介质中的一部分数据会被变成无效数据。如果上层可使用的条带越多,上层可以保存更多份修改后的数据,固态硬盘中的无效数据也会越多,此时,进行垃圾回收时,能够提升回收效率,进一步减少写放大,提高固态硬盘使用寿命。
在第二方面的一种可能实现方式中,所述方法还包括:所述方法还包括:每个所述固态硬盘的控制器定期向所述主机设备发送每个固态硬盘的有效数据容量;每个所述固态硬盘的控制器接收所述主机设备下发的trim命令,其中,所述trim命令为所述主机设备检测到至少一个所述固态硬盘中的所述有效数据容量大于占用阈值时下发的;每个所述固态硬盘的控制器处理所述trim命令;所述方法还包括:每个所述固态硬盘的控制器按照预定的策略进行块擦除以及垃圾回收。
在第二方面的一种可能实现方式中,所述每个所述固态硬盘的控制器定期向所述主机设备发送每个固态硬盘的有效数据容量,包括:每个所述固态硬盘的控制器接收所述主机设备按照预设的周期发送的有效数据容量读取指令;每个所述固态硬盘的控制器根据所述有效数据容量读取指令发送所述固态硬盘的有效数据容量。其中,主机设备可以按照预设的周期发送有效数据容量读取指令,例如该预设的周期可以是3s,或者5s等,该预设的周期可以根据实际场景来确定周期取值大小。N个控制器中每个控制器在接收到有效数据容量读取指令之后,控制器读取固态硬盘中的有效数据容量,并向主机设备上报读取到的该固态硬盘的有效数据容量,从而主机设备可以实时的确定N个固态硬盘中是否还有剩余的存储空间来存储数据。
在第二方面的一种可能实现方式中,所述每个所述固态硬盘的控制器定期向所述主机设备发送每个固态硬盘的有效数据容量,包括:每个所述固态硬盘的控制器定期获取所述固态硬盘的有效数据容量;每个所述固态硬盘的控制器在每次获取到所述有效数据容量之后,向所述主机设备发送所述有效数据容量。其中,每个固态硬盘的控制器还可以采用主动上报自身的有效数据容量的方式,例如该预设的上报周期可以是3s,或者5s等,该预设的上报周期可以根据实际场景来确定周期取值大小,从而使得主机设备接收每个固态硬盘按照预设的上报周期分别发送的有效数据容量。
在第二方面的一种可能实现方式中,所述虚拟容量为所述物理容量的两倍。其中,固态硬盘上报的自身虚拟容量为固态硬盘自身所具有的物理容量的两倍时,主机设备根据所有固态硬盘具有的虚拟容量划分出的条带个数可以是根据固态硬盘的物理容量划分出的条带个数的两倍,在现有技术中每个固态硬盘上报的物理容量小于该固态硬盘的物理容量,这样可以保证每个LBA都对应有存储介质的存储空间。与现有技术不相同的是,本申请实施例中将固态硬盘的虚拟容量扩大为该固态硬盘的物理容量的两倍,从而主机设备能够根据该固态硬盘的虚拟容量从存储介质中划分出更多的条带,例如本申请实施例中划分出的条带个数为现有技术中划分出的条带个数的两倍。
在第一方面或第二方面的一种可能实现方式中,RAID条带是RAID技术中所使用的概念,通过RAID技术,数据被分成几份分别存储到不同硬盘,此时,每个硬盘用于存储数据的部分构成条带的一部分,所有硬盘用于存储数据的部分构成一个条带。需要说明的是,条带的概念是针对使用RAID技术的设备而言,例如,主机设备执行RAID时,主机设备是针对硬盘上报的LBA(逻辑区块地址)组RAID,而并不直接对硬盘中的PA(物理地址)组RAID。
在第一方面或第二方面的一种可能实现方式中,由于每个固态硬盘上报的自身的虚拟容量大于该固态硬盘自身所具有的物理容量,因此主机设备根据每个固态硬盘的虚拟容量划分出多个RAID条带时,多个RAID条带的数量大于基于N个固态硬盘的物理容量进行划分时的数量。
在第一方面或第二方面的一种可能实现方式中,在固态硬盘中,当空闲块的大小小于阈值时,会将一些包含无效数据以及有效数据的块中的有效数据搬移到新的块,然后将这些块中擦除,从而可以腾出更多的空闲块。
在第一方面或第二方面的一种可能实现方式中,SSD为了回收更多的空闲空间,会有一个策略来定期看一下哪些块上存储的都是无效数据,如果都是无效数据,会将这些块擦除,从而腾出更多的空间。块擦除也可以在垃圾回收过程中被使用,具体的,在将老的块中的有效数据搬移到新的块后,可以将该块进行块擦除。
在第一方面或第二方面的一种可能实现方式中,上层(如操作系统)通知SSD哪些上层的数据已经不再被使用的命令。通过trim命令,SSD知道哪些上层使用的数据已经不需要再被使用,后续可以让SSD通过块擦除、垃圾回收等动作将这些数据对应的存储空间进行清除。在处理trim命令时,SSD具体可以通过修改FTL表(如删除不再被使用的数据对应的映射关系)来实现。
在第一方面或第二方面的一种可能实现方式中,垃圾回收策略可以基于现有技术,并不需要改动。例如,可以在存储介质中的空闲块小于相应的阈值时进行垃圾回收,从而释放出空闲空间,其中,该阈值可以是一个预设的数据量大小,该阈值还可以是一个预设的比例值。垃圾回收由固态硬盘自己执行,电子设备的主机设备不需要参与。本申请实施例中主机设备划分出RAID条带之后,本申请实施例中固态硬盘能够按预定策略进行块擦除、垃圾回收,因此减少了条带个数被分配完毕时的垃圾回收的频率,从而减少在RAID条带上的垃圾回收产生的写操作,提高数据的存储性能。举例说明如下,现有技术中若划分出3个条带,本申请实施例中可以划分出6个条带,因此一次性垃圾的回收效率就高。现有技术中固态硬盘内的块(block)中既有有效数据,又有无效数据时,需要搬迁,导致写放大,数据存储效率低。而本申请实例中固态硬盘能够按预定策略进行块擦除、垃圾回收,可以依靠不断地块擦除来产生的新的物理空间分配给RAID条带,因此能够做到针对无效数据,仅仅一次统一擦除,数据存储效率很高。
第三方面,本申请实施例还提供一种主机设备,所述主机设备与存储系统相连,所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;其中,所述固态硬盘能够按预定策略进行块擦除、垃圾回收;
所述主机设备包括处理器和存储器,其中,所述处理器用于执行前述第一方面的任意一种固态硬盘写放大优化方法。
在本申请的第三方面中,主机设备可以执行前述第一方面以及各种可能的实现方式中所描述的步骤,详见前述对第一方面以及各种可能的实现方式中的说明。
第四方面,本申请实施例还提供一种存储系统,所述存储系统与主机设备相连,所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;
每个所述固态硬盘的控制器,用于执行前述第二方面的任意一种的固态硬盘写放大优化方法。
第五方面,本申请实施例还提供一种固态硬盘,所述固态硬盘属于存储系统中的N个固态硬盘中的一个硬盘,所述N为大于或等于2的正整数;
所述固态硬盘包括控制器以及存储介质;
所述固态硬盘的控制器,用于执行前述第二方面的任意一种的固态硬盘写放大优化方法。
在本申请的第五方面中,固态硬盘的控制器可以执行前述第二方面以及各种可能的实现方式中所描述的步骤,详见前述对第二方面以及各种可能的实现方式中的说明。
第六方面,本申请实施例还提供一种电子设备,所述电子设备包括主机设备和存储系统;所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;其中,所述固态硬盘能够按预定策略进行块擦除、垃圾回收;
所述主机设备用于执行前述第一方面的任意一种的固态硬盘写放大优化方法。
每个所述固态硬盘的控制器,用于执行前述第二方面的任意一种的固态硬盘写放大优化方法。
第七方面,本申请提供了一种非瞬态计算机可读存储介质,所述非瞬态计算机可读存储介质包括指令,所述指令可被主机设备中的处理器读取以执行第一方面及第一方面各实现方式中的方法。
第八方面,本申请还提供了一种非瞬态计算机可读存储介质,所述非瞬态计算机可读存储介质包括指令,所述指令可被固态硬盘中的控制器读取以执行第二方面及第二方面各实现方式中的方法。
第九方面,本申请实施例提供一种电子设备,该电子设备可以包括主机设备、固态硬盘或者芯片等实体,所述电子设备执行如前述第一方面或第二方面中任一项所述的方法。
第十方面,本申请提供了一种芯片系统,该芯片系统包括主机设备或者固态硬盘,用于支持主机设备、固态硬盘实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存主机设备、固态硬盘必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
其中,第二方面至第十方面及各方面中的各种实现方式的效果可以参考第一方面及各其各实现方式所能取得的效果,本申请不再赘述。
附图说明
图1为本申请实施例提供的电子设备的一种组成结构示意图;
图2为本申请实施例提供的固态硬盘的组成结构示意图;
图3为现有技术提供的固态硬盘内部空间管理示意图;
图4为本申请实施例提供存储系统采用RAID条带化的数据存放方式的示意图;
图5为本申请实施例提供的主机设备和固态硬盘包括的控制器之间的交互示意图;
图6为本申请实施例实施例提供的存储系统进行垃圾回收的示意图;
图7为本申请实施例中发送trim命令后的映射关系示意图;
图8为本申请实施例提供的基于虚拟容量进行RAID条带划分时的数据分布示意图;
图9为本申请实施例提供的主机设备的组成结构示意图;
图10为本申请实施例提供的存储系统的组成结构示意图;
图11为本申请实施例提供的固态硬盘的组成结构示意图。
具体实施方式
本申请实施例提供了一种固态硬盘写放大优化方法和设备以及系统,能够缓解条带上的垃圾回收导致的写放大问题,从而提高数据的存储性能。
为方便理解,下文先本申请中涉及的一些术语进行定义解释。
1、RAID:独立冗余磁盘阵列(redundant array of independent disks,RAID),是指将几个硬盘组合起来形成一个硬盘阵列,以满足对可靠性或者速度等更好的需求。
2、RAID条带(strip):RAID条带是RAID技术中所使用的概念,通过RAID技术,数据被分成几份分别存储到不同硬盘,此时,每个硬盘用于存储数据的部分构成条带的一部分,所有硬盘用于存储数据的部分构成一个条带。需要说明的是,条带的概念是针对使用RAID技术的设备而言,例如,主机执行RAID时,主机是针对硬盘上报的LBA(逻辑区块地址)组RAID,而并不直接对硬盘中的PA(物理地址)组RAID。
3、RAID条带回收:当条带快使用完时,需要将一些老条带中的有效数据合并,然后写到一个新的条带,然后将老条带中的数据清除,从而可以腾出更多的空闲条带。条带回收过程中,会有将老条带的数据写到新条带的过程,因此,会造成“写放大”。
4、垃圾回收:在固态硬盘中,当空闲块的大小小于阈值时,会将一些包含无效数据以及有效数据的块中的有效数据搬移到新的空闲块,然后将这些块中的数据擦除使之变成空闲块,从而可以腾出更多的空闲块。
例如,图6为本申请实施例实施例提供的存储系统进行垃圾回收的示意图,以条带1和条带2中的垃圾回收为例,图6中的条带1和条带2中黑色方块表示无效数据,也可以称为垃圾数据,空白方块表示空白的分片(即没有写入数据的分片),斜划线方块表示有效数据,条带1中的有效数据和条带2中的有效数据合并起来,重新写入到一个新的条带中(例如写入条带n+1),接下来把原来分片的条带1和条带2中的数据全部擦除以腾出存储空间。
在条带上的垃圾回收过程中,需要把几个条带的有效数据合并到一个新的条带,带来了额外的写操作,这部分额外的写入操作称为系统级的写放大。这部分额外的写入操作占用固态硬盘的带宽,影响了用户业务数据的存储性能,还会减少固态硬盘的使用寿命。
5、FTL:闪存转换层(flash translation layer),用于完成上层的LBA与SSD中的PA之间的转换,主要通过一个FTL表(该FTL表可以存放在SSD中)来实现,该FTL表保存了LBA与PA之间的映射关系。
6、块擦除:即将一个块进行擦除的动作,SSD为了回收更多的空闲空间,会有一个策略来定期看一下哪些块上存储的都是无效数据,如果都是无效数据,会将这些块擦除,从而腾出更多的空间。块擦除也可以在垃圾回收过程中被使用,具体的,在将老的块中的有效数据搬移到新的块后,可以对该老的块进行块擦除。
7、trim(修剪)命令:上层(如操作系统)通知SSD哪些上层的数据已经不再被使用的命令。通过trim命令,SSD可以知道哪些上层使用的数掘已经不需要再被使用(即可以知道哪些数据是无效数据),后续可以让SSD通过块擦除、垃圾回收等操作将这些数据对应的存储空间进行清除。在处理trim命令时,SSD具体可以通过修改FTL表(如删除不再被使用的数据对应的映射关系)来实现。
下面结合附图,对本申请的实施例进行描述。
本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
本申请实施例提供的电子设备具体可以是存储设备,或者服务器,或者基站,或者终端等设备。如图1所示,为本申请实施例提供的电子设备的一种组成结构示意图,该电子设备可包括:主机设备和存储系统,其中,
主机设备包括处理器以及存储器,处理器可以是基于x86架构,或者ARM(AdvancedRISC Machines)架构的处理器,该处理器可以运行操作系统(如Linux操作系统或者Windows操作系统),并基于操作系统运行各种应用软件。本申请中,为了叙述方便,也将处理器称为“上层”,相应地,在软件层面,将基于处理器运行的软件统称为“上层软件”。存储器可以包括内存以及非易失性存储器(如磁盘、固态硬盘),其中,可以使用存储系统作为非易失性存储器,也可以使用与存储系统独立的存储器作为非易失性存储器。
上层软件在进行数据存储时又可分为几个层次。其中,最底层的软件是跟存储系统直接交互的软件,例如,用于提供RAID功能的软件,这里可称为RAID软件;RAID软件中使用的是LBA,这些LBA与存储系统中的存储介质的物理地址相关(例如通过FTL映射表来确定映射关系)。中间层的软件通常可以是文件系统,文件系统使用RAID软件分配的LBA来作为自己的地址,并建立与应用层的地址之间的映射关系。最上层的是普通的应用,这些应用使用文件系统分配的地址(如目录)来对数据进行存储。
本申请中,存储系统包括N个固态硬盘,N为大于或等于2的正整数。每个固态硬盘都与主机设备相连接,例如可以通过串行高级技术附件(serial advanced technologyattachment,SATA)总线,或者串行连接的SCSI(Serial Attached SCSI,SAS)总线,或者快捷外围部件互连标准(peripheral component interconnect express,PCIe)总线和主机设备相连接。每个固态硬盘包括控制器以及存储介质,其中,控制器可采用基于指令集的通用处理器、专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA),存储介质可以包括:NAND闪存(flash)介质。
本申请中,固态硬盘能够按预定策略进行块擦除、垃圾回收。进一步的,固态硬盘还可以支持trim命令。其中,块操作以及trim命令都为现有技术,具体含义可参见前述中的描述。
在本申请实施例中,存储系统中可以包括:N个固态硬盘,这些固态硬盘的物理容量可以都相同,每个固态硬盘向主机设备上报的内容也一样,从而可以便于上层对存储系统的管理。不限定的是,本申请实施例中存储系统中的N个固态硬盘也可以具有不同的物理容量,每个固态硬盘上报的内容也可以不一样,则上层可以基于预定的策略来处理每个固态硬盘上报的内容。举例说明如下,每个固态硬盘上报的虚拟容量不一样,上层可以从所有固态硬盘上报的虚拟容量中选择最小值作为固态硬盘的虚拟容量,基于最小值的虚拟容量进行RAID条带的划分,其中,RAID条带的划分,具体含义可参见前述中的描述。
在本申请实施例中,请参阅图2所示,为本申请实施例提供的固态硬盘的更具体的组成结构示意图,该固态硬盘可以包括:控制器、内存(如SDRAM)和存储介质(如NANDflash),其中,内存(memory)也被称为内存储器,可用于暂时存放控制器中的运算数据,以及与存储介质交换的数据,例如,可以在控制器上电运行时存放FTL表,以加快速处理速度;下电后,FTL表可以保存到存储介质中,供下次上电运行时使用。
在本申请实施例中,固态硬盘基于闪存技术,数据管理是以块(block)、页(page)等为单位,每个块包含多个页,写入数据以页为单位,擦除数据是以块为单位。如果一个块中包含有一部分有效数据和一部分无效数据,那么就必须先把这部分有效数据与其他块中的有效数据合并起来,重新写入到一个新的块中,才能把原来块的数据全部擦除以供新的数据写入(这个过程也称为垃圾回收)。
因此,每个固态硬盘包括的存储介质的物理容量中要预留出预留空间(OP)。SSD在出厂时,SSD厂家通常会将这部分设置为用户不可见,不对用户开放,仅供SSD自己在执行例如垃圾回收等操作使用该预留空间。因此,固态硬盘的总存储容量(也即真正的能够用于存储的容量)=用户可使用的存储空间所占的容量(下文也称“物理容量”)+预留空间所占的容量。由于固态硬盘(SSD)实际是基于存储介质来存储数据的,因此,本申请中,SSD的存储空间(容量)实际上即为存储介质的存储空间(容量)。
如图3所示,为现有技术提供的固态硬盘内部空间管理示意图。其中,固态硬盘的存储介质为NAND f]ash介质(也可以称为NAND闪存),在固态硬盘中,数据擦除以块为单位,数据写入以页为单位。同时,固态硬盘中存储有FTL表,例如可以在固态硬盘的内存中存储FTL表,该FTL表用于记录上层LBA(逻辑区块地址)和固态硬盘中的PA(物理地址)之间的映射关系,LBA空间中的每个LBA映射到NAND闪存中的一个存储空间。
如图4所示,为本申请实施例提供的存储系统采用RAID条带化的数据存放方式的示意图。上层在组RAID条带时,会将SSD上报的LBA划分成固定大小的分片(chunk),例如图4中的一个斜划线表示的方框为一个分片,多个分片(如6个分片)构成一个分片组(chunkgroup)。每个SSD的一个分片组(通常具有相同偏移地址)组成一个条带,每个RAID条带包含若干个用于存储用户数据(即用户真正需要的数据)的分片组,和1到2个的用于存储校验数据(校验数据可用于进行校验,以提高可靠性)的分片组。
如图4所示,存储系统包括N个固态硬盘,这个N个固态硬盘可以分别为固态硬盘1、固态硬盘2、固态硬盘3、固态硬盘4、…、固态硬盘N。其中,N的取值为大于或等于2的正整数,例如N的取值可以为6,或者11,或者22等。该存储系统中的前N-1个固态硬盘用于存放数据,最后一个固态硬盘(在图4中用P表示最后一个固态硬盘)用于存放校验数据。在进行RAID条带划分时,可以划分成多个RAID条带,例如,在图4中划分成了n个RAID条带,n的取值通常可以为大于等于2的正整数,例如n的取值可以为6,或者12,或者20等。
上层为了知道固态硬盘的容量,会对每个固态硬盘下发一个读容量的命令,每个固态硬盘会根据该命令向上层上报自身的物理容量(即一个LBA值)。在现有技术中,SDD上报给主机设备的物理容量小于存储介质的物理容量,主机设备根据固态硬盘上报的物理容量(基于LBA)划分出RAID条带,物理容量越大所能够划分出的条带个数越大。举例说明如下,按照现有技术,固态硬盘的物理容量为110M(本申请容量单元都为字节(Byte),为叙述方便,本申请并不一一指出),若预留空间为10M,则固态硬盘的实际可用物理容量为100M,固态硬盘上报的固态硬盘的虚拟容量为100M,假设每个分片组(chunk group)大小为1M,则上层可以划分出100个RAID条带,该100个RAID条带可以从0-99依次编号。在每次有数据需要写入存储系统时,主机设备可以为数据分配一个RAID条带,直到这100个RAID条带即将使用完毕,此时就需要对100个RAID条带中的部分RAID条带进行垃圾回收。例如,对100个RAID条带中的其中10个RAID条带进行垃圾回收。
本申请实施例与现有技术不相同的是,固态硬盘向主机设备上报的固态硬盘自身的虚拟容量,该虚拟容量大于固态硬盘自身所具有的物理容量。接下来通过具体的实施例对本申请进行详细举例说明。
实施例一
基于前述说明的电子设备,本申请实施例对主机设备与存储系统的交互进行具体说明,为了描述方便,本实施例以电子设备中的主机设备与第1个固态硬盘中的控制器的交互为例进行说明。主机设备与其它固态硬盘的控制器的交互流程可以参阅该主机设备与第1个固态硬盘的控制器之间交互的详细说明。
如图5所示,为本申请实施例提供的主机设备和固态硬盘包括的控制器之间的交互示意图,图5中以主机设备和第1个固态硬盘中的控制器进行交互为例,图5中不再对所有固态硬盘中的控制器所执行的数据存储流程进行示例说明。同时,可以理解,由于主机设备包括处理器。因此,主机设备的执行方法具体是通过处理器通过读取存储在主机设备中的存储器中的指令来执行。图5所示的主机设备和固态硬盘包括的控制器之间的交互流程,包括如下步骤:
501、控制器根据固态硬盘自身所具有的物理容量确定固态硬盘自身的虚拟容量,其中,虚拟容量大于固态硬盘自身所具有的物理容量。
在本申请的实施例中,控制器获取存储介质的物理容量,该存储介质的物理容量也可以称为固态硬盘自身所具有的物理容量。控制器根据固态硬盘自身所具有的物理容量确定固态硬盘自身的虚拟容量。例如,固态硬盘自身的虚拟容量为固态硬盘自身所具有的物理容量的S倍。其中,S为大于1的数值,例如S的取值可以为1.2,或者1.5,或者2。当S的取值为2时,固态硬盘自身的虚拟容量为固态硬盘自身所具有的物理容量的两倍。
举例说明如下,固态硬盘的存储介质的总存储容量为110M,若预留空间为10M,则固态硬盘的用户实际可用的容量(即物理容量)为100M,按照本申请实施例固态硬盘自身的虚拟容量为大于100M的容量值,例如固态硬盘确定自身的虚拟容量可以为200M。
在另一实施例中,虚拟容量也可以人为指定,也即由开发人员在编程时,直接指定一个数值,或者也可以由控制器通过读取配置文件中保存的数据来得到固态硬盘的虚拟容量。
502、控制器向主机设备上报自身的虚拟容量。
在本申请实施例中,控制器通过前述步骤501获取到固态硬盘自身的虚拟容量之后,控制器可以将固态硬盘的虚拟容量发送给主机设备。例如控制器通过SATA总线,或者SAS总线,或者PCIe总线向主机设备发送固态硬盘的虚拟容量。
举例说明如下,控制器可以向主机设备发送容量信息。其中,容量信息包括:固态硬盘自身的虚拟容量。另外,容量信息还可以包括:存储介质的物理容量,即控制器上报给主机设备的是两个容量:一个是存储介质的物理容量,一个是固态硬盘的虚拟容量,且虚拟容量大于存储介质的物理容量。
需要说明的是,存储系统中每个固态硬盘的控制器都可以执行前述的步骤501和步骤502。
503、主机设备接收存储系统中每个固态硬盘上报的自身的虚拟容量。其中,虚拟容量大于固态硬盘自身所具有的物理容量。
504、主机设备根据每个固态硬盘的虚拟容量划分出多个RAID条带。
当每个固态硬盘上报的虚拟容量大于固态硬盘自身所具有的物理容量时,主机设备划分出的多个RAID条带的数量大于基于N个固态硬盘的物理容量进行划分时的数量。
其中,RAID条带的概念详见前述内容中的概念说明,此处不再赘述。
本申请实施例中,N个固态硬盘中分别包括有控制器,这N个控制器分别向主机设备上报每个固态硬盘的虚拟容量。主机设备获取到N个固态硬盘分别对应的虚拟容量之后,主机设备根据N个虚拟容量从N个存储介质中划分出多个RAID条带(简称为条带),例如RAID条带的个数为M,若N个固态硬盘的虚拟容量越大,主机设备划分出的条带个数M的取值就越大,相反的,若N个固态硬盘的虚拟容量越小,主机设备划分出的条带个数M的取值就越小。
主机设备根据N个固态硬盘的虚拟容量划分出M个条带,其中每个条带包括:N个分片组,一个分片组属于一个存储介质,M为正整数。即N个固态硬盘中每个固态硬盘中提供一个分片组,N个分片组构成一个条带,对于M的具体取值取决于应用场景。
505、当有数据需要存储时,主机设备根据划分出的多个RAID条带存储数据。
在本申请实施例中,主机设备从M个RAID条带中确定出的当前存储数据可使用的RAID条带。M个RAID条带由主机设备根据N个固态硬盘分别对应的虚拟容量从N个存储介质中划分得到,每个固态硬盘对应的虚拟容量大于相应固态硬盘的物理容量,每个RAID条带包括:N个分片组,一个分片组属于一个存储介质,M为正整数。
在本申请实施例中,主机设备从M个RAID条带中确定出的RAID条带可以是一个空白RAID条带。举例说明如下,在M个RAID条带中,若当前已经分配了m个RAID条带,主机设备收到需要存储的数据之后,从M个RAID条带中确定出第m+1个RAID条带,该第m+1个RAID条带可用于写入当前数据。
对于主机设备划分出M个RAID条带的实现方式,详见前述步骤的说明,此处不再赘述。
需要说明的是,本申请实施例中,如果需要存储的数据是需要覆盖别的数据,对用户来讲的,比如改写文件,主机设备会分配新的虚拟LBA地址,并且为需要存储的数据会分配一个新的RAID条带。
在本申请实施例提供的电子设备中,固态硬盘上报给主机设备的虚拟容量大于存储介质的物理容量,使得主机设备可以划分出更多个数的RAID条带。当有更多的RAID条带可以使用时,意味着上层可以利用这些多出来的条带写更多的数据,因此,上层进行条带回收的频率就会减少,从而可以减少条带回收时对有效数据进行搬移的频率,减少写放大,提高固态硬盘使用寿命。
例如,如图8所示,为本申请实施例提供的基于虚拟容量进行RAID条带划分时的数据分布示意图。存储系统包括N个固态硬盘,N个固态硬盘中的块形成n个条带,分别为条带1、条带2、…、条带n。条带1至条带5中黑色方块表示无效数据,也可以称为垃圾数据,空白方块表示空白的分片(即没有写入数据的分片),6个空白的分片构成一个分片组,斜划线方块表示有效数据。本申请实施例中,固态硬盘上报的虚拟容量大于存储介质的物理容量,只要固态硬盘内的物理空间还有剩余,上层不需要进行条带回收。
此外,由于在日常应用中,上层通常会对各种数据(如文件)进行修改,修改后的数据通常会使用新的条带来保存。同时,会使固态硬盘中的存储介质中的一部分数据会被变成无效数据。如果上层可使用的条带越多,上层可以保存更多份修改后的数据,固态硬盘中的无效数据也会越多,此时,进行垃圾回收时,能够提升回收效率,进一步减少写放大,提高固态硬盘使用寿命。
例如,现有技术中的主机设备中,平均每个条带上的无效数据量占比相比本申请较低(如无效数据为50%,有效数据也为50%),此时,主机设备回收1个条带可以腾出2个新条带供新的用户数据写入。在这种情况下,往两个新条带写数据,实际需要写三个条带的数据(还包括回收一个条带时写的数据),因此即写放大为3/2=1.5,在实际应用场景中,固态硬盘的存储介质中存储的数据会被不断的修改,随着时间的推移,主机中的条带会存在更多的无效数据,例如平均每个条带上的有效数据量减少为20%,此时,回收1个条带可以腾出5个新条带,因此,写放大为(5+1)/5=1.2,如果选择有效数据量更少的条带做垃圾回收,实际业务中的写放大会更低,非常接近于1(相当于没写放大),从而有效减少了写放大,提高了SSD寿命。
本申请中,虚拟容量可以是物理容量的两倍(例如,物理容量为1TB,虚拟容量为2TB),经过实验、测量,在两倍的时候,基本能够让写放大接近1,同时,又不会过多地增加额外的开销(如FTL表的占用空间),取得一个较好的综合收益。当然,本领域技术人员也可以结合实际应用场景来选择合适的虚拟容量。
506、当有数据需要存储时,控制器将数据存储到主机设备划分的RAID条带对应的存储介质中。
在本申请实施例中,当有数据需要写入时,主机设备向N个固态存储硬盘分别包括的控制器发送写入命令,由N个控制器将需要存储的数据写入主机设备确定出的当前RAID条带对应的N个存储介质的存储空间中。
在本申请实施例中,主机设备为需要存储的数据确定出当前RAID条带之后,主机设备发送写入命令,N个控制器将需要写入的数据写入RAID条带对应的N个存储介质的存储空间中。例如主机设备发送给控制器的写入命令中携带数据,从而每个控制器可以在各自对应的存储介质的存储空间中完成数据存储任务。
在本申请实施例中,控制器根据写入命令将数据写入存储介质的存储空间中,例如存储介质中以页为单位写入数据,该数据可以写入存储介质的页中。控制器还需要在内存的FTL表中记录LBA对应的PA,其中LBA是指数据存储到的PA所映射到的LBA,在后续需要读取该数据时,可以通过FTL中记录的LBA查找到该数据。
在本申请实施例提供的方法中,步骤501至步骤506中描述了RAID条带的划分以及数据存储的流程,在申请实施例中,主机设备还可以向每个固态硬盘发送trim命令,接下来对本申请实施例中的trim命令的发送以及处理进行详细说明。如图5所示,本申请实施例提供的方法还可以包括后续的步骤507至步骤510。主机设备除了在固态硬盘的有效数据容量大于占用阈值时向固态硬盘发送trim命令之外,主机设备还可以通过其他的方法来下发trim命令,例如主机设备可以按照预定的周期,定时的向每个固态硬盘发送trim命令,从而保证每个固态硬盘中具有可用的物理容量来写入新数据。
507、本申请中,主机设备定期获取每个固态硬盘中的有效数据容量,当至少一个固态硬盘中的有效数据容量大于占用阈值时,主机设备向每个固态硬盘发送trim命令。
在本申请的一些实施例中,主机设备还需要定期获取每个固态硬盘中的有效数据容量,通过该有效数据容量可以衡量出在固态硬盘中已经被占用的存储空间的大小。当至少一个固态硬盘中的有效数据容量大于占用阈值时,主机设备可以向每个固态硬盘发送trim命令。固态硬盘的有效数据容量指的是在存储介质中已经存储的数据量大小,即存储介质的存储空间被占用的容量。
在本申请实施例中,占用阈值是根据固态硬盘包括的存储介质的物理容量设置的阈值,该占用阈值用于判断存储介质是否已经存储满,其中,该占用阈值可以是一个预设的数据量大小,该占用阈值还可以是一个预设的比例值。例如,固态硬盘中的有效数据容量大于占用阈值,可以包括:固态硬盘中的有效数据容量与该固态硬盘的物理容量之比大于占用阈值。接下来对占用阈值进行举例说明,例如该占用阈值可以是100M或者200M,又如该占用阈值可以设置为存储介质的物理容量的90%,或者可以是100%,对于占用阈值的具体取值可以取决于应用场景,此处不做限定。其中,若占用阈值的取值太小,那么固态硬盘的垃圾量没那么多时也会发送trim命令,则垃圾回收的效率低一点。若占用阈值的取值过大,那么固态硬盘的垃圾量会很大,此时发送trim命令,就需要进行垃圾回收后才能写入新数据,对于写数据会形成延时。本领域技术人员可以根据实际应用的需求选择一个的阈值。
在本申请的一些实施例中,步骤507中主机设备定期获取每个固态硬盘中的有效数据容量包括:
主机设备按照预设的周期向每个固态硬盘发送有效数据容量读取指令;
主机设备接收每个固态硬盘根据有效数据容量读取指令分别发送的有效数据容量。
其中,主机设备可以按照预设的周期发送有效数据容量读取指令,例如该预设的周期可以是3秒(s),或者5s等,该预设的周期可以根据实际场景来确定周期取值大小,此处不限定预设的周期的取值大小。N个控制器中至少一个控制器在接收到主机设备发送的有效数据容量读取指令之后,控制器读取固态硬盘中的有效数据容量,并向主机设备上报读取到的该固态硬盘的有效数据容量,从而主机设备可以实时的确定N个固态硬盘中是否还有剩余的存储空间来存储数据。
在本申请的另一实施例中,步骤507中主机设备定期获取每个固态硬盘中的有效数据容量包括:
主机设备接收每个固态硬盘按照预设的上报周期分别发送的有效数据容量。
其中,主机设备除了采用发送有效数据容量读取指令来获取到固态硬盘的有效数据容量的方式之外,每个固态硬盘的控制器还可以采用主动上报自身的有效数据容量的方式,例如控制器采用预设的上报周期可以是3s,或者5s等,该预设的上报周期可以根据实际场景来确定周期取值大小,此处不限定预设的周期的取值大小。每个固态硬盘的控制器可以按照该预设的上报周期获取固态硬盘的有效数据容量,然后周期性的向主机设备上报每个固态硬盘的有效数据容量,从而使得主机设备接收每个固态硬盘按照预设的上报周期分别发送的有效数据容量。
508、控制器接收主机设备下发的trim命令。其中,trim命令为主机设备检测到至少一个固态硬盘中的所述有效数据容量大于占用阈值时下发的。
509、控制器处理主机设备发送的trim命令。
其中,trim命令携带有哪些数据不需要被上层使用的信息,也即指示了哪些数据变成了无效数据。存储系统中的N个控制器都可以分别接收主机设备发送的trim命令,每个控制器收到trim命令后对trim命令进行处理。例如,根据trim命令中携带的数据的地址,在FTL表中将这些数据与PA之间的映射关系清除掉,使得这些数据变成无效数据。后续可以基于预定策略来进行垃圾回收、块擦除等动作,从而回收更多的空间。
例如,如图7所示,为本申请实施例中发送trim命令后的映射关系示意图。本申请实施例中,存储系统中用户可见的LBA空间中包括有多个LBA(实际中可以是一个地址,或者一个地址范围,本申请中都使用LBA表示),图7中白色方块表示没有写入数据的存储空间对应的LBA,斜划线方块表示写入了数据的存储空间对应的LBA。LBA空间的LBA0、LBA1、LBA2、LBA3、LBA4以及LBA5写入数据后,LBA和NAND闪存之间存在如图7所示的映射关系(参见图7左侧部分,箭头表示某个LBA与NAND闪存的对应关系)。假设电子设备中的主机设备发送了trim命令1、trim命令3、trim命令4(这些命令中分别带有LBA1、LBA3以及LBA4这些地址,用来指示控制器LBA1、LBA3以及LBA4的数据已经无效),控制器收到上述的trim命令后,会将LBA1、LBA3、LBA4和与NAND闪存之间的映射关系删除,LBA0、LBA2、LBA5与NAND闪存之间的映射关系保持不变(参见图7右侧的部分描述),这样,原来存储在LBA1、LBA3、LBA4对应的NAND闪存中的数据成为无效数据。
510、控制器按照预定的策略进行块擦除以及垃圾回收。
在本申请实施例中,每个固态硬盘的控制器处理trim命令之后,可以基于预定的策略进行块擦除以及垃圾回收。
其中,垃圾回收和块擦除的执行过程详见前述的概念说明,此处不再赘述。
本申请中,通过在判断条件满足时发送trim命令(参见前述的步骤507)可以及时释放空闲空间,防止上层使用新RAID条带时出错。如果没有及时发送trim命令,固态硬盘仍然会认为在上层已经无效的数据有效,从而无法及时清除存储介质中的无效数据来腾出空闲空间给上层的RAID条带,导致上层使用新RAID条带时而出错。本申请实施例通过在条件满足时发送trim命令,后续以便固态硬盘及时更新无效数据,后续进行块擦除、垃圾回收等操作来释放出更多的空闲空间,从而防止这种情况发生。
实施例二
基于上述实施例,本实施例提供了一种主机设备,主机设备与存储系统相连,所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;其中,所述固态硬盘能够按预定策略进行块擦除、垃圾回收;
如图9所示,主机设备包括处理器以及存储器。其中,处理器可以是基于x86架构,或者ARM(Advanced RISC Machines)架构的处理器,该处理器可以运行操作系统(如Linux操作系统或者Windows操作系统),并基于操作系统运行各种应用软件。本申请中,为了叙述方便,也将处理器称为“上层”,相应地,在软件层面,将基于处理器运行的软件统称为“上层软件”。存储器可以包括内存以及非易失性存储器(如磁盘、固态硬盘),其中,可以使用存储系统作为非易失性存储器,也可以使用与存储系统独立的存储器作为非易失性存储器。
具体的,所述处理器用于执行前述的由主机设备执行的固态硬盘写放大优化方法。
实施例三
基于上述各实施例,本实施例提供一种存储系统,存储系统与主机设备相连。如图10所示,所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;
每个所述固态硬盘的控制器,用于执行前述的由控制器执行的固态硬盘写放大优化方法。
可以理解的是,控制器的硬件实现可以基于指令集的处理器(如基于x86、ARM核的处理器),或者基于FPGA,或者ASIC实现,本领域技术人员可以了解基于这些处理器实现时,需要配合其他的器件,例如,当控制器是基于指令集的处理器时,可以需要配合存储器来存储程序代码以及运行时的数据,存储器可以是本申请中的存储系统,也可以是另一个单独的存储器。
实施例四
基于上述各实施例,本实施例提供一种固态硬盘,所述固态硬盘属于存储系统中的N个固态硬盘中的一个硬盘,所述N为大于或等于2的正整数;
如图11所示,所述固态硬盘包括控制器以及存储介质;
所述固态硬盘的控制器,用于执行前述由控制器执行的固态硬盘写放大优化方法。
实施例五
基于上述各实施例,本实施例提供一种电子设备,如图1所示,所述电子设备包括主机设备和存储系统;所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;其中,所述固态硬盘能够按预定策略进行块擦除、垃圾回收;
所述主机设备用于执行前述的由主机设备执行的固态硬盘写放大优化方法。
每个所述固态硬盘的控制器用于执行前述的由控制器执行的固态硬盘写放大优化方法。
进一步的,固态硬盘还支持trim命令。
实施例六
基于上述各实施例,本实施例提供一种非瞬态计算机可读存储介质,该存储介质存储有指令,该指令可被主机设备中的处理器读取以执行如前述各实施例中所述的主机设备执行的方法。
本实施例还提供一种非瞬态计算机可读存储介质,该存储介质存储有指令,该指令可被固态硬盘中的控制器读取以执行如前述各实施例中所述的固态硬盘中的控制器执行的方法。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质等。

Claims (17)

1.一种固态硬盘写放大优化方法,其特征在于,应用于主机设备,所述主机设备与存储系统相连,所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;其中,所述固态硬盘能够按预定策略进行块擦除以及垃圾回收;所述方法包括:
所述主机设备接收所述存储系统中每个所述固态硬盘上报的自身的虚拟容量,其中,所述虚拟容量大于所述固态硬盘自身所具有的物理容量;
所述主机设备根据每个所述固态硬盘的虚拟容量划分出多个独立冗余磁盘阵列RAID条带;
当有数据需要存储时,所述主机设备根据划分出的所述多个RAID条带存储数据。
2.根据权利要求1所述的方法,其特征在于,所述固态硬盘支持修剪trim命令,所述方法还包括:
所述主机设备向每个所述固态硬盘发送trim命令。
3.根据权利要求2所述的方法,其特征在于,所述主机设备向每个所述固态硬盘发送trim命令,包括:
所述主机设备定期获取每个所述固态硬盘中的有效数据容量,当至少一个所述固态硬盘中的所述有效数据容量大于占用阈值时,所述主机设备向每个所述固态硬盘发送trim命令。
4.根据权利要求3所述的方法,其特征在于,所述主机设备定期获取每个所述固态硬盘中的有效数据容量,包括:
所述主机设备按照预设的周期向每个所述固态硬盘发送有效数据容量读取指令;
所述主机设备接收每个所述固态硬盘根据所述有效数据容量读取指令分别发送的所述有效数据容量。
5.根据权利要求3所述的方法,其特征在于,所述主机设备定期获取每个所述固态硬盘中的有效数据容量,包括:
所述主机设备接收每个所述固态硬盘按照预设的上报周期分别发送的所述有效数据容量。
6.根据权利要求1至5中任一项所述的方法,其特征在于,所述虚拟容量为所述物理容量的两倍。
7.一种固态硬盘写放大优化方法,其特征在于,应用于存储系统,所述存储系统与主机设备相连,所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;所述方法包括:
每个所述固态硬盘的控制器根据所述固态硬盘自身所具有的物理容量确定所述固态硬盘自身的虚拟容量,其中,所述虚拟容量大于所述固态硬盘自身所具有的物理容量;
每个所述固态硬盘的控制器向所述主机设备上报自身的虚拟容量,其中,所述虚拟容量用于所述主机设备根据所述虚拟容量划分出多个独立冗余磁盘阵列RAID条带;
当有数据需要存储时,每个所述固态硬盘的控制器将所述数据存储到所述主机设备划分的RAID条带对应的存储介质中。
8.根据权利要求7所述的方法,其特征在于,所述方法还包括:
每个所述固态硬盘的控制器定期向所述主机设备发送每个固态硬盘的有效数据容量;
每个所述固态硬盘的控制器接收所述主机设备下发的修剪trim命令,其中,所述trim命令为所述主机设备检测到至少一个所述固态硬盘中的所述有效数据容量大于占用阈值时下发的;
每个所述固态硬盘的控制器处理所述trim命令;
所述方法还包括:
每个所述固态硬盘的控制器按照预定的策略进行块擦除以及垃圾回收。
9.根据权利要求8所述的方法,其特征在于,所述每个所述固态硬盘的控制器定期向所述主机设备发送每个固态硬盘的有效数据容量,包括:
每个所述固态硬盘的控制器接收所述主机设备按照预设的周期发送的有效数据容量读取指令;
每个所述固态硬盘的控制器根据所述有效数据容量读取指令发送所述有效数据容量。
10.根据权利要求8所述的方法,其特征在于,所述每个所述固态硬盘的控制器定期向所述主机设备发送每个固态硬盘的有效数据容量,包括:
每个所述固态硬盘的控制器定期获取所述固态硬盘的有效数据容量;
每个所述固态硬盘的控制器在每次获取到所述有效数据容量之后,向所述主机设备发送所述有效数据容量。
11.根据权利要求7至10中任一项所述的方法,其特征在于,所述虚拟容量为所述物理容量的两倍。
12.一种主机设备,其特征在于,所述主机设备与存储系统相连,所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;其中,所述固态硬盘能够按预定策略进行块擦除、垃圾回收;
所述主机设备包括处理器和存储器,其中,所述处理器用于执行前述权利要求1至权利要求6中的任意一种方法。
13.一种存储系统,其特征在于,所述存储系统与主机设备相连,所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;
每个所述固态硬盘的控制器,用于执行前述权利要求7至权利要求11中的任意一种方法。
14.一种固态硬盘,其特征在于,所述固态硬盘属于存储系统中的N个固态硬盘中的一个硬盘,所述N为大于或等于2的正整数;
所述固态硬盘包括控制器以及存储介质;
所述固态硬盘的控制器,用于执行前述权利要求7至权利要求11中的任意一种方法。
15.一种电子设备,其特征在于,所述电子设备包括主机设备和存储系统;所述存储系统包括N个固态硬盘,每个所述固态硬盘包括控制器以及存储介质,所述N为大于或等于2的正整数;其中,所述固态硬盘能够按预定策略进行块擦除、垃圾回收;
所述主机设备用于执行前述权利要求1至权利要求6中的任意一种方法;
每个所述固态硬盘的控制器,用于执行前述权利要求7至权利要求11中的任意一种方法。
16.一种非瞬态计算机可读存储介质,所述非瞬态计算机可读存储介质包括指令,所述指令可被主机设备中的处理器读取以执行如权利要求1至6任一所述的方法。
17.一种非瞬态计算机可读存储介质,所述非瞬态计算机可读存储介质包括指令,所述指令可被固态硬盘中的控制器读取以执行如权利要求7至11任一所述的方法。
CN201980093138.1A 2019-02-27 2019-02-27 固态硬盘写放大优化方法 Active CN113490922B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2019/076330 WO2020172821A1 (zh) 2019-02-27 2019-02-27 固态硬盘写放大优化方法

Publications (2)

Publication Number Publication Date
CN113490922A CN113490922A (zh) 2021-10-08
CN113490922B true CN113490922B (zh) 2023-07-18

Family

ID=72238770

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980093138.1A Active CN113490922B (zh) 2019-02-27 2019-02-27 固态硬盘写放大优化方法

Country Status (2)

Country Link
CN (1) CN113490922B (zh)
WO (1) WO2020172821A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112765048B (zh) * 2021-01-20 2022-07-22 苏州浪潮智能科技有限公司 一种固态硬盘垃圾回收方法、系统、电子设备及存储介质
CN113535088A (zh) * 2021-07-15 2021-10-22 深圳市安存数据技术有限公司 存储设备、数据处理方法和存储系统
CN114741327B (zh) * 2022-04-22 2024-04-19 中科驭数(北京)科技有限公司 一种垃圾回收方法及装置
CN117806528A (zh) * 2022-09-23 2024-04-02 华为云计算技术有限公司 一种数据存储方法及装置
CN117453147B (zh) * 2023-12-22 2024-04-02 合肥联宝信息技术有限公司 固态硬盘垃圾回收方法、装置及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508788A (zh) * 2011-09-28 2012-06-20 成都市华为赛门铁克科技有限公司 Ssd及ssd垃圾回收方法和装置
CN103902465A (zh) * 2014-03-19 2014-07-02 华为技术有限公司 一种固态硬盘垃圾回收的方法、系统和固态硬盘控制器
CN104794070A (zh) * 2015-04-23 2015-07-22 南京道熵信息技术有限公司 基于动态非覆盖raid技术的固态闪存写缓存系统及方法
CN107632942A (zh) * 2017-08-29 2018-01-26 记忆科技(深圳)有限公司 一种固态硬盘实现lba级别trim命令的方法
CN107861790A (zh) * 2017-10-27 2018-03-30 新华三云计算技术有限公司 虚拟机磁盘空间扩展方法、装置、宿主机及可读存储介质
CN108475230A (zh) * 2016-11-11 2018-08-31 华为技术有限公司 一种存储系统和系统垃圾回收方法
CN109344090A (zh) * 2018-10-30 2019-02-15 深圳润迅数据通信有限公司 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190042405A1 (en) * 2013-06-21 2019-02-07 Western Digital Technologies, Inc. Storing data based on writing frequency in data storage systems
CN104484283B (zh) * 2014-11-27 2018-03-27 记忆科技(深圳)有限公司 一种降低固态硬盘写放大的方法
US20170199680A1 (en) * 2016-01-13 2017-07-13 Alibaba Group Holding Limited System and method of write amplification factor mitigation and flash lifespan extension

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102508788A (zh) * 2011-09-28 2012-06-20 成都市华为赛门铁克科技有限公司 Ssd及ssd垃圾回收方法和装置
CN103902465A (zh) * 2014-03-19 2014-07-02 华为技术有限公司 一种固态硬盘垃圾回收的方法、系统和固态硬盘控制器
CN104794070A (zh) * 2015-04-23 2015-07-22 南京道熵信息技术有限公司 基于动态非覆盖raid技术的固态闪存写缓存系统及方法
CN108475230A (zh) * 2016-11-11 2018-08-31 华为技术有限公司 一种存储系统和系统垃圾回收方法
CN107632942A (zh) * 2017-08-29 2018-01-26 记忆科技(深圳)有限公司 一种固态硬盘实现lba级别trim命令的方法
CN107861790A (zh) * 2017-10-27 2018-03-30 新华三云计算技术有限公司 虚拟机磁盘空间扩展方法、装置、宿主机及可读存储介质
CN109344090A (zh) * 2018-10-30 2019-02-15 深圳润迅数据通信有限公司 数据中心中kvm虚拟机的虚拟硬盘系统及数据中心

Also Published As

Publication number Publication date
CN113490922A (zh) 2021-10-08
WO2020172821A1 (zh) 2020-09-03

Similar Documents

Publication Publication Date Title
CN113490922B (zh) 固态硬盘写放大优化方法
US10073640B1 (en) Large scale implementation of a plurality of open channel solid state drives
US8832371B2 (en) Storage system with multiple flash memory packages and data control method therefor
US10203876B2 (en) Storage medium apparatus, method, and program for storing non-contiguous regions
JP2020035300A (ja) 情報処理装置および制御方法
US20160132429A1 (en) Method and Storage Device for Collecting Garbage Data
US11928053B2 (en) System garbage collection method and method for garbage collection in solid state disk
CN111194438B (zh) 扩展ssd长久性
JP6459644B2 (ja) ストレージ制御装置、制御システム及び制御プログラム
US11321229B2 (en) System controller and system garbage collection method
CN109086219B (zh) 去分配命令处理方法及其存储设备
US20200183831A1 (en) Storage system and system garbage collection method
US20100169556A1 (en) Nonvolatile storage device, information recording system, and information recording method
EP3798852B1 (en) System controller and system garbage recovery method
JP6817340B2 (ja) 計算機
US11068180B2 (en) System including non-volatile memory drive
JP6605762B2 (ja) 記憶ドライブの故障により消失したデータを復元する装置
CN115202569A (zh) 一种存储设备中的硬盘的管理方法及设备
CN113868149A (zh) 一种数据存储方法、装置、设备及可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant