CN117608477A - 存储***的管理方法及装置、电子设备、存储介质 - Google Patents
存储***的管理方法及装置、电子设备、存储介质 Download PDFInfo
- Publication number
- CN117608477A CN117608477A CN202311587036.XA CN202311587036A CN117608477A CN 117608477 A CN117608477 A CN 117608477A CN 202311587036 A CN202311587036 A CN 202311587036A CN 117608477 A CN117608477 A CN 117608477A
- Authority
- CN
- China
- Prior art keywords
- solid state
- data
- socket
- target
- disk
- 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
Links
- 238000003860 storage Methods 0.000 title claims abstract description 79
- 238000007726 management method Methods 0.000 title claims abstract description 23
- 239000007787 solid Substances 0.000 claims abstract description 406
- 238000000034 method Methods 0.000 claims description 54
- 238000010586 diagram Methods 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000006870 function Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004140 cleaning Methods 0.000 description 5
- 238000013403 standard screening design Methods 0.000 description 5
- 230000001960 triggered effect Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/062—Securing storage systems
- G06F3/0623—Securing storage systems in relation to content
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及存储管理技术领域,公开一种存储***的管理方法及装置、电子设备、存储介质;其中,存储***包括n个固态硬盘以及以n个固态硬盘作为缓存盘的机械硬盘;存储***的管理方法包括:获取待写入数据;在n个固态硬盘中分别保存待写入数据;在预设写入条件满足的情况下,从n个固态硬盘中确定一个第一目标硬盘;发送写入指令给第一目标硬盘,触发第一目标硬盘将待写入数据写入机械硬盘中;释放m个固态硬盘中的待写入数据;m大于等于1且小于等于n‑1。这样,能够实现在维持数据的可靠性的情况下,提高由固态硬盘组成的缓存盘的空间利用率。
Description
技术领域
本申请涉及存储管理技术领域,尤其是涉及一种存储***的管理方法及装置、电子设备、存储介质。
背景技术
目前,常见的存储介质分为机械硬盘和固态硬盘。机械硬盘的工作原理是通过机械臂定位磁头以进行读写操作。由于机械臂的移动和磁头的定位需要一定的时间,使得机械硬盘的访问速度较慢,无法满足用户对快速数据访问的需求。固态硬盘相较于机械硬盘,具备访问延迟低、读写速度高和可靠性强的优势。但是,固态硬盘的容量相对较小且价格相对较高。由此,为了兼顾机械硬盘的容量优势和固态硬盘的性能优势。通常会给一个机械硬盘或一组机械硬盘增加一个SSD(Solid State Disk,固态硬盘)作为缓存盘。将频繁访问的数据块缓存在SSD中,在计算机***需要读取这些数据的情况下,就能直接从SSD读取,而无需等待机械硬盘的旋转延迟和寻道时间,从而提高读取速度。同时,使用写回策略,将需要写入的数据先缓存到SSD上,再由SSD写入机械硬盘,能够减少写入操作对应用程序的影响,从而提高整体的写入性能。
如果只设置一个SSD作为缓存盘,在该SSD损坏的情况下,会导致数据无法写入机械硬盘,导致出现数据丢失的情况,由此造成大量的数据需要修复,进而对存储***造成较大影响。为了解决该问题,相关技术中设置两个SSD组成一个RAID1(镜像磁盘)。这样,在其中一个SSD损坏的情况下,另一个SSD可以正常提供服务。但是,两个SSD组成一个RAID1,两个SSD之间的数据需要完全一致,导致两个SSD上能够缓存数据的空间实质上等于一个SSD的容量,缓存空间的利用率较低。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本申请的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
本申请实施例提供了一种存储***的管理方法及装置、电子设备、存储介质,以在维持数据的可靠性的情况下,提高由固态硬盘组成的缓存盘的空间利用率。
在一些实施例中,所述存储***包括n个固态硬盘以及以n个所述固态硬盘作为缓存盘的机械硬盘;所述n为大于等于2的整数;所述存储***的管理方法包括:获取待写入数据;在n个所述固态硬盘中分别保存所述待写入数据;在预设写入条件满足的情况下,从n个所述固态硬盘中确定一个第一目标硬盘;发送写入指令给所述第一目标硬盘,触发所述第一目标硬盘将所述待写入数据写入所述机械硬盘中;释放m个所述固态硬盘中的所述待写入数据;所述m大于等于1且小于等于n-1。
在上述实现方式中,通过在获取到待写入数据的情况下,将待写入数据写入多个固态硬盘,能够避免在部分固态硬盘出现损坏的情况下,造成的数据丢失。在待写入数据写入机械硬盘的情况下,在部分固态硬盘中释放待写入数据,此时由于在机械硬盘中已经保存了待写入数据,由此即便存储待写入数据的固态硬盘损坏,仍然能够从机械硬盘中获取待写入数据,以保证数据的可靠性。同时由于在部分固态硬盘中释放了待写入数据,由此能够释放部分固态硬盘中的容量,进而能够实现在维持数据的可靠性的情况下,提高由固体硬盘组成的缓存盘的空间利用率。
在一些实施例中,各固态硬盘分别划分有多个bucket;在所述n个固态硬盘中分别保存所述待写入数据,包括:建立目标bucket之间的关联关系;所述目标bucket为每一个所述固态硬盘中用于存储所述待写入数据的bucket;在各所述目标bucket中分别保存所述待写入数据。
在上述实现方式中,通过建立目标bucket之间的关联关系,再将待写入数据写入存在关联关系的目标bucket中。能够在查找待写入数据时,通过关联关系简单便捷地查找到存储相同待写入数据的其他bucket,从而便于在存储待写入数据的固态硬盘损坏的情况下,快速的从其他固态硬盘的bucket中获取待写入数据。
在一些实施例中,建立目标bucket之间的关联关系包括:在n个所述固态硬盘中分别选取一个目标bucket;针对每一个所述目标bucket,在该目标bucket的元数据中增加第一副本信息;所述第一副本信息包括除该目标bucket外的所有目标bucket的标识信息。
在上述实现方式中,通过在元数据中增加第一副本信息的方式,只需要修改元数据,便能够建立目标bucket之间的关联关系。便于灵活的建立目标bucket之间的关联关系。
在一些实施例中,各bucket的元数据包括使用状态信息,使用状态信息用于表征bucket是否处于可使用状态;在保存所述待写入数据后,各所述目标bucket的使用状态信息为第一值;所述第一值用于标识bucket处于不可使用状态;释放m个所述固态硬盘中的所述待写入数据,包括:从各所述目标bucket中选择出位于m个所述固态硬盘中的m个待释放bucket;将各所述待释放bucket的使用状态信息从第一值修改为第二值;所述第二值用于标识bucket处于可使用状态。
在上述实现方式中,通过修改待释放bucket的使用状态信息,使待释放bucket处于可使用状态。这样,由于固态硬盘在接受到新的待写入数据时,能够将待写入数据写入处于可使用状态的bucket。因此,通过修改待释放bucket的使用状态信息,能够达到释放固态硬盘的容量的目的。
在一些实施例中,释放m个所述固态硬盘中的所述待写入数据后,还包括:删除各所述待释放bucket的副本信息;针对各所述目标bucket中除所述待释放bucket外的保留bucket,删除各所述保留bucket的元数据中各所述待释放bucket的标识信息。
在上述实现方式中,通过释放固态硬盘中的待写入数据后,删除各待释放bucket的副本信息。这样,由于在释放固态硬盘中的待写入数据后,各固态硬盘中的目标bucket之间的关联关系产生了变化。由此,在释放固态硬盘中的待写入数据后,更新副本信息。能够使得在释放了部分固态硬盘中的待写入数据后,依然能够准确的查询固态硬盘中各目标bucket的关联关系。
在一些实施例中,所述预设写入条件包括以下至少之一:所述n个固态硬盘的写入次数均小于第一预设次数;存在固态硬盘的可使用容量小于第一预设容量。
在上述实现方式中,在各固态硬盘的写入次数均小于第一预设次数的情况下,即各固态硬盘均处于空闲的状态。此时从固态硬盘中确定一个第一目标硬盘,并触发第一目标硬盘将待写入数据写入机械硬盘中。能够减少对固态硬盘与上层应用之间的交互的影响,从而提高用户的体验感。为了保证数据的可靠性,固态硬盘在将存储的待写入数据写入机械硬盘的情况下,才能释放待写入数据。因此,通过在存在固态硬盘的可使用容量小于第一预设容量的情况下,从固态硬盘中确定一个第一目标硬盘,并触发第一目标硬盘将待写入数据写入机械硬盘中。便于后续释放固态硬盘的容量,从而提高固态硬盘的空间利用率。
在一些实施例中,所述存储***的管理方法还包括:向n个所述固态硬盘发送针对同一目标数据的读出指令,以使各所述固态硬盘查找所述目标数据;在n个所述固态硬盘中均未找到所述目标数据的情况下,向所述机械硬盘发送所述目标数据的读出指令,以从所述机械硬盘中获取所述目标数据;将所述目标数据在n个所述固态硬盘中的k个第二目标固态硬盘中进行存储;所述k大于等于1且小于等于n-1。
在上述实现方式中,通过在固态硬盘没有存储目标数据的情况下,将目标数据在n个固态硬盘中的k个第二目标固态硬盘中进行存储。能够便于上层应用在下次读取同样的目标数据的情况下,能够快速获取目标数据。同时,由于机械硬盘中已经保存有目标数据。由此,即便固态硬盘损坏,仍然能够从机械硬盘中读取到目标数据,以保证目标数据的可靠性。因此,不将目标数据存储在所有固态硬盘中,能够在保证快速且可靠的读取目标数据的情况下,减少固态硬盘的空间的浪费。
在一些实施例中,各固态硬盘分别划分有多个bucket;通过以下方式确定k个所述第二目标固态硬盘:分别获取n个所述固态硬盘中的处于可使用状态的bucket的数量;按照所述数量从高到低的顺序,将前k个固态硬盘确定为所述第二目标固态硬盘。
在上述实现方式中,按照处于可使用状态的bucket的数量,从高到底的选取固态硬盘作为第二目标固态硬盘。能够将目标数据存入可使用的bucket更多的固态硬盘中。以避免各固态硬盘的容量空余相差较大。
在一些实施例中,所述存储***的管理方法还包括:在n个所述固态硬盘的写入次数均小于第二预设次数的情况下,根据各所述固态硬盘的可使用容量释放固态硬盘的已使用容量。
在上述实现方式中,通过在n个固态硬盘的写入次数均小于第二预设次数的情况下,释放固态硬盘的已使用容量。能够在不影响固态硬盘与上层应用的交互的情况下,释放更多的固态硬盘的容量,以保证后续固态硬盘能够正常存储新的数据。
在一些实施例中,各固态硬盘分别划分有多个bucket;根据各固态硬盘的可使用容量释放固态硬盘的已使用容量,包括:获取n个所述固态硬盘的可使用容量;将可使用容量低于第二预设容量的所述固态硬盘确定为待清理硬盘;根据所述待清理硬盘中各bucket的脏数据存在情况,释放所述待清理硬盘的已使用容量;所述脏数据存在情况用于表征所述bucket中是否存在有脏数据。
在上述实现方式中,将可使用容量低于第二预设容量的固态硬盘确定为待清理硬盘,能够使得被清理的固态硬盘都是容量使用较多的固态硬盘。由此,避免在部分固态硬盘的容量较多的情况下,部分固态硬盘的容量已被使用完。能够均衡各固态硬盘的剩余的容量。
在一些实施例中,根据所述待清理硬盘中各bucket的脏数据存在情况,释放所述待清理硬盘的已使用容量,包括:将所述待清理硬盘中不存在脏数据的bucket确定为待清理bucket;根据待清理bucket的优先级释放待清理bucket;所述优先级用于表征待清理bucket内存储的数据被访问的频率。
在上述实现方式中,由于待清理bucket对应的优先级越高,则待清理bucket内的数据被访问的频率越高。根据待清理bucket的优先级释放待清理bucket,能够便于清理掉访问频率更低的待清理bucket。从而减小上层应用访问固态硬盘的速度的影响。
在一些实施例中,本申请实施例提供的存储***的管理装置中,所述存储***包括n个固态硬盘以及以n个所述固态硬盘作为缓存盘的机械硬盘;所述n为大于等于2的整数;所述装置包括:获取模块,用于获取待写入数据;固态硬盘写入模块,用于在n个所述固态硬盘中分别保存所述待写入数据;硬盘确定模块,用于在预设写入条件满足的情况下,从所述n个固态硬盘中确定一个第一目标硬盘;机械硬盘写入模块,用于发送写入指令给所述第一目标硬盘,触发所述第一目标硬盘将所述待写入数据写入所述机械硬盘中;释放模块,用于释放m个所述固态硬盘中的所述待写入数据;所述m大于等于1且小于等于n-1。
在一些实施例中,本申请实施例提供的电子设备包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现上述存储***的管理方法。
在一些实施例中,本申请实施例提供的存储介质中存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使处理器实现上述存储***的管理方法。
以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本申请。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:
图1是本申请实施例提供的一个存储***的结构组成示意图;
图2是本申请实施例提供的一个存储***的管理方法的示意图;
图3是本申请实施例提供的一个数据的存储结构的示意图;
图4是本申请实施例提供的一个固态硬盘的bucket分布示意图;
图5是本申请实施例提供的一个存储***的管理装置的示意图;
图6是本申请实施例提供的一个电子设备的示意图。
附图标记:
1:存储***;2:固态硬盘;3:机械硬盘;4:处于可使用状态的bucket;5:存储有脏数据的bucket;6:未存储脏数据的bucket;7:获取模块;8:固态硬盘写入模块;9:硬盘确定模块;10:机械硬盘写入模块;11:释放模块;12:处理器;13:存储器;14:通信接口;15:总线。
具体实施方式
为了能够更加详尽地了解本申请实施例的特点与技术内容,下面结合附图对本申请实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本申请实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
本申请实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
除非另有说明,术语“多个”表示两个或两个以上。
术语“对应”可以指的是一种关联关系或绑定关系,A与B相对应指的是A与B之间是一种关联关系或绑定关系。
在一些实施例中,存储***包括n个固态硬盘以及以n个固态硬盘作为缓存盘的机械硬盘,其中n为大于等于2的整数。结合图1所示,图1为一种存储***的结构组成示意图。存储***1包括两个固态硬盘2和以两个固态硬盘2作为缓存盘的五个机械硬盘3。可以理解,图1仅为一种示例,不作为对于存储***的结构限制,例如在存储***中固态硬盘2的数量可以多于2个,机械硬盘的数量也可以为5以外的值。
为了在维持数据的可靠性的情况下,提高由固体硬盘组成的缓存盘的空间利用率,本申请实施例提供了一种针对上述存储***的管理方法,该方法可以应用于电子设备的上层应用,通过运行上层应用的处理器访问固态硬盘和机械硬盘,以实现对存储***的管理。
结合图2所示,本申请实施例提供一种存储***的管理方法,包括:
步骤S101,获取待写入数据。
步骤S102,在n个固态硬盘中分别保存待写入数据。
步骤S103,在预设写入条件满足的情况下,从n个固态硬盘中确定一个第一目标硬盘。
步骤S104,发送写入指令给第一目标硬盘,触发第一目标硬盘将待写入数据写入机械硬盘中。
步骤S105,释放m个固态硬盘中的待写入数据;m大于等于1且小于等于n-1。
采用本申请实施例提供的存储***的管理方法,通过在获取到待写入数据的情况下,将待写入数据写入多个固态硬盘,能够避免在部分固态硬盘出现损坏的情况下,造成的数据丢失。在待写入数据写入机械硬盘的情况下,在部分固态硬盘中释放待写入数据。由于在机械硬盘中已经保存了待写入数据,由此即便存储待写入数据的固态硬盘损坏,仍然能够从机械硬盘中获取待写入数据,以保证数据的可靠性。同时由于在部分固态硬盘中释放了待写入数据。由此能够释放部分固态硬盘中的容量,进而能够实现在维持数据的可靠性的情况下,提高由固体硬盘组成的缓存盘的空间利用率。
在一些实施例中,待写入数据表征待写入机械硬盘的数据。其中,待写入数据可以由上层应用根据相关业务获得。
在一些实施例中,各固态硬盘中可以分别划分有多个bucket(数据桶)。此时,步骤S102在n个固态硬盘中分别保存待写入数据的过程可以包括:
建立目标bucket之间的关联关系,并在各目标bucket中分别保存待写入数据。其中,目标bucket为每一个固态硬盘中用于存储待写入数据的bucket。在本申请实施例中,可以从每一个固态硬盘中分别选择至少一个bucket作为目标bucket,从而实现待写入数据在n个固态硬盘中的存储,避免在部分固态硬盘出现损坏的情况下,造成的数据丢失。而通过建立目标bucket之间的关联关系,能够在查找待写入数据时,简单便捷地查找到存储相同待写入数据的其他bucket,从而便于在存在存储待写入数据的固态硬盘损坏的情况下,能够快速的从其他固态硬盘的bucket中获取待写入数据。
在本申请实施例中,建立目标bucket之间的关联关系的过程可以包括:在n个固态硬盘中分别选取一个目标bucket;针对每一个目标bucket,在该目标bucket的元数据中增加第一副本信息;第一副本信息包括除该目标bucket外的所有目标bucket的标识信息。其中,第一副本信息用于记录存储有相同数据的bucket的标识信息。这样,通过在元数据中增加第一副本信息的方式能够快速便捷的建立目标bucket之间的关联关系。
可选的,在本实施例中,可以在固态硬盘中随机选取一个处于可使用状态的bucket作为目标bucket。
在一些实施例中,各固态硬盘的bucket的元数据可以保存在上层应用可访问的存储空间中,例如可以保存在内存中,但不作为限制。
在一些实施例中,元数据中可以设置有replica(副本)字段。replica字段通过bucket的标识信息来描述存储有相同数据的bucket。即,replica字段的内容用于表示存储有相同数据的bucket。在replica字段内增加副本信息,以建立目标bucket之间的关联关系。
在本申请实施例中,标识信息是指可以唯一标识出bucket的信息。其中,一种示例,例如:存储***包括n个固态硬盘,每个固态硬盘中均设置有u个bucket。假设标识信息为从1至n×u的正整数,为bucket分配的标识信息为1至n×u中的一个,且不同的bucket分配的标识信息均不同。另一种示例,例如:存储***包括n个固态硬盘,每个固态硬盘中均设置有u个bucket。假设固态硬盘的编号从1至n,且不同固态硬盘的编号不同。单个固态硬盘中的bucket的编号从1至u,且同一个固态硬盘中不同bucket的编号不同。标识信息,可以为固态硬盘的编号+bucket的编号。例如:n+u。示例性的,以存储***包括2个固态硬盘,分别为固态硬盘A和固态硬盘B为例。假设固态硬盘A中各bucket的元数据和固态硬盘B中各bucket的元数据均保存在内存中。上层应用从固态硬盘A中选取一个可使用的bucket作为第一目标bucket,并获取第一目标bucket的标识信息a。上层应用从固态硬盘B中选取一个可使用的bucket作为第二目标bucket,并获取第二目标bucket的标识信息b。上层应用在内存中查找描述第一目标bucket的元数据c,并在元数据c的replica字段中增加内容为“标识信息a”的副本信息。上层应用在内存中查找第二目标bucket的元数据d,并在元数据d的replica字段中增加内容为“标识信息b”的副本信息。由此使得第一目标bucket和第二目标bucket之间建立关联关系。上层应用在第一目标bucket和第二目标bucket中分别保存待写入数据。
在本申请实施例中,建立目标bucket之间的关联关系的过程还可以是:在n个固态硬盘中分别选取一个目标bucket;在预设的关联关系表中存储各目标bucket的关联关系。其中,预设的关联关系表存放于上层应用可访问的存储空间中,例如可以保存在内存中,但不作为限制。示例性的:关联关系表以表格的形式展示,将存在关联关系的目标bucket的标识信息存入同一个表格中。其中,处于同一表格中的标识信息对应的bucket存储有相同的待写入数据。
在一些实施例中,结合图3所示,可以按照dirty字段、size字段、bucket_offset字段、hdd_id字段、hdd_offset字段、data字段的顺序在目标bucket中存储待写入数据。且一个bucket中能够存入多个待写入数据。其中,dirty字段表征bucket中是否存在脏数据。size字段表征待写入数据的长度,单位为扇区。bucket_offset字段表征待写入数据存在于bucket哪个位置中。hdd_id字段表征存储待写入数据的机械硬盘的编号。其中,存储***中各机械硬盘的编号是唯一的。hdd_offset字段表征待写入数据的起始位置对应机械硬盘的偏移量。data字段为待写入数据。上层应用可通过hdd_id字段、hdd_offset字段和size字段确定待写入数据在机械硬盘中的位置。
可选地,预设写入条件可以包括以下至少之一:
n个固态硬盘的写入次数均小于第一预设次数;
存在固态硬盘的可使用容量小于第一预设容量。
这样,由于固态硬盘在业务繁忙的情况下,将待写入数据写入机械硬盘,可能造成固态硬盘对上层应用的响应不及时,从而导致用户体验感较差。在n个固态硬盘的写入次数均小于第一预设次数的情况下,触发固态硬盘将待写入数据写入机械硬盘,使得固态硬盘在业务不繁忙的情况下,将待写入数据写入机械硬盘。能够减少固态硬盘对上层应用的响应不及时的情况,从而增强用户体验感。由于固态硬盘的可使用容量小于第一预设容量,可能导致在后续需要存储待写入数据时,固态硬盘无法正常进行存储。因此,在固态硬盘的可使用容量小于第一预设容量的情况下,触发固态硬盘将待写入数据写入机械硬盘,便于后续固态硬盘能够正常存储新数据。
在一些实施例中,固态硬盘的写入次数,即固态硬盘每秒的写入次数。示例性的,第一预设次数为30。其中,第一预设次数是研究人员根据固态硬盘处于业务不繁忙的状态时,通常写入次数为多少进行设置。
在一些实施例中,研究人员基于经验判断在固态硬盘的可使用容量低于多少数值的情况下,可能会影响下一次固态硬盘存入新的待写入数据。从而设置第一预设容量。
可选地,在预设写入条件为存在固态硬盘的可使用容量小于第一预设容量的情况下,可以将n个固态硬盘中可使用容量最小的固态硬盘确定为第一目标硬盘。可选地,在预设写入条件为n个固态硬盘的写入次数均小于第一预设次数的情况下,可以通过以下方式从n个固态硬盘中确定一个第一目标硬盘:分别获取各固态硬盘的可使用容量;在存在容量差值大于预设容量差值的情况下,将可使用容量最低的固态硬盘确定为第一目标硬盘。在不存在容量差值大于预设容量差值的情况下,随机选择一个固态硬盘确定为第一目标硬盘。容量差值为两个固态硬盘的可使用容量之间的差值的绝对值。
可选地,在预设写入条件为n个固态硬盘的写入次数均小于第一预设次数的情况下,可以通过以下方式从n个固态硬盘中确定一个第一目标硬盘:分别获取各固态硬盘的处于可使用状态的bucket的数量;在存在数量差值大于预设数量差值的情况下,将处于可使用状态的bucket的数量最低的固态硬盘确定为第一目标硬盘。在不存在数量差值大于预设数量差值的情况下,随机选择一个固态硬盘确定为第一目标硬盘。数量差值为两个固态硬盘中处于可使用状态的bucket的数量之间的差值的绝对值。
示例性的,以存储***包括3个固态硬盘,分别为固态硬盘C、固态硬盘D和固态硬盘E为例。假设固态硬盘C中处于可使用状态的bucket的数量为20,固态硬盘D中处于可使用状态的bucket的数量为15,固态硬盘E中处于可使用状态的bucket的数量为8。由此,获得固态硬盘C与固态硬盘D之间的数量差值为5。固态硬盘C与固态硬盘E之间的数量差值为12。固态硬盘D与固态硬盘E之间的数量差值为7。假设预设数量差值为5,则存在数量差值大于预设数量差值,选取处于可使用状态的bucket的数量最低的固态硬盘E作为第一目标硬盘。假设预设数量差值为20,则不存在数量差值大于预设数量差值,从固态硬盘C、固态硬盘D和固态硬盘E中随机选取一个固态硬盘作为第一目标硬盘。
在一些实施例中,由于两个固态硬盘之间的数量差值较大的情况下,可能存在其中一个固态硬盘容量剩余较多,而另一个固态硬盘的容量剩余较小。此时,为了避免造成各固态硬盘之间剩余的容量空间失衡。研究人员基于经验值设置预设数量差值。
可选地,本申请实施例中也可以直接随机从n个固态硬盘中选取一个固态硬盘确定为第一目标硬盘。
可选地,在一些实施例中,各bucket的元数据中可以包括脏数据存在情况,脏数据存在情况用于表征bucket中是否存在有脏数据。在未保存待写入数据前,各目标bucket的脏数据存在情况为第四值;第四值用于标识中不存在脏数据;在触发第一目标硬盘将待写入数据写入机械硬盘中后,各待释放bucket的脏数据存在情况可以从第四值修改为第三值;第三值用于标识bucket中存在脏数据。其中,脏数据表征未写入机械硬盘中的待写入数据。这样,通过修改脏数据存在情况,能够便于上层应用获知bucket中的数据是否写入机械硬盘,从而便于后续快速释放bucket。
在一些实施例中,结合图4所示,图4为固态硬盘的bucket分布示意图。如图4所示,固态硬盘可以按照bucket的大小划分成多个bucket。同时,bucket按照存储的数据分为不同的状态,例如:将各bucket分为处于可使用状态的bucket4,存储有脏数据的bucket5和未存储脏数据的bucket6。并且,在固态硬盘存在两个的情况下,两个固态硬盘中存储有脏数据的bucket互相之间存在关联关系。
可选地,各bucket的元数据可以包括使用状态信息,使用状态信息用于表征bucket是否处于可使用状态;在保存待写入数据后,各目标bucket的使用状态信息为第一值;第一值用于标识bucket处于不可使用状态;在释放m个固态硬盘中的待写入数据时,可以从各目标bucket中选择出位于m个固态硬盘中的m个待释放bucket;将各待释放bucket的使用状态信息从第一值修改为第二值;第二值用于标识bucket处于可使用状态。这样,将bucket的使用状态信息更改为可使用状态,后续在接收到需要保存在固态硬盘中的数据时,就能在该bucket中进行数据存储。通过只修改使用状态信息的方式能够快速便捷的变更固态硬盘中的可使用容量。
在一些实施例中,元数据的inused字段表征使用状态信息。inused字段为1的bucket为处于可使用状态的bucket。inused字段为0的bucket为处于不可使用状态的bucket。
可选地,通过以下方式从n个固态硬盘中如何选择出m个固态硬盘:分别获取各固态硬盘的处于可使用状态的bucket的数量;在存在数量差值大于预设数量差值的情况下,按照处于可使用状态的bucket的数量从低到高的顺序,选取m个固态硬盘。在不存在数量差值大于预设数量差值的情况下,随机选择m个固态硬盘。数量差值为两个固态硬盘中处于可使用状态的bucket的数量之间的差值的绝对值。
可选地,释放m个固态硬盘中的待写入数据的过程可以包括:从各目标bucket中选择出位于m个固态硬盘中的m个待释放bucket;发送删除指令给m个待释放bucket对应的固态硬盘,触发固态硬盘删除m个待释放bucket内存储的数据。
在本申请实施例中,可以通过以下方式从各目标bucket中选择出位于m个固态硬盘中的m个待释放bucket:分别获取各固态硬盘的可使用容量;按照可使用容量从低到高的顺序,将前m个固态硬盘中的目标bucket确定为待释放bucket。
可选地,在将各待释放bucket的使用状态信息从第一值修改为第二值,或者触发固态硬盘删除m个待释放bucket内存储的数据的情况下,还可以删除各待释放bucket的副本信息,并针对各目标bucket中除待释放bucket外的保留bucket,删除各保留bucket的元数据中各待释放bucket的标识信息。这样,由于释放了部分固态硬盘中的待写入数据,使得各目标bucket之间的关联关系产生了变化。由此,在释放m个固态硬盘中的待写入数据后,更新副本信息。能够使得在释放了部分固态硬盘中的待写入数据后,依然能够准确的查询固态硬盘中各目标bucket的关联关系。
在一些实施例中,以存储***包括3个固态硬盘,分别为固态硬盘F、固态硬盘G、固态硬盘H为例。在3个固态硬盘中分别保存待写入数据。例如:在固态硬盘F中选取一个第三目标bucket,在固态硬盘G中选取一个第四目标bucket,在固态硬盘H中选取一个第五目标bucket;并将待写入数据分别存入第三目标bucket、第四目标bucket和第五目标bucket中。此时,第三目标bucket的元数据内存储有第四目标bucket的“标识信息gg”和第五目标bucket的“标识信息hh”。第四目标bucket的元数据内存储有第三目标bucket的“标识信息ff”和第五目标bucket的“标识信息hh”。第五目标bucket的元数据内存储有第三目标bucket的“标识信息ff”和第四目标bucket的“标识信息gg”。若m等于2,且选择出第三目标bucket和第四目标bucket作为待释放bucket,则第五目标bucket为保留bucket。在释放第三目标bucket和第四目标bucket中存储的待写入数据后,在第五目标bucket的元数据内删除“标识信息ff”和“标识信息gg”。此时,第五目标bucket的元数据内不存在副本信息。若m等于1,且选择出第四目标bucket作为待释放bucket,则第三目标bucket和第五目标bucket为保留bucket。在释放第四目标bucke中存储的待写入数据后,在第三目标bucket的元数据内删除“标识信息gg”,且在第五目标bucket的元数据内删除“标识信息gg”。此时,第三目标bucket的元数据内存储有“标识信息hh”。第五目标bucket的元数据内存储有“标识信息ff”。
可选地,在保存待写入数据后,各目标bucket的脏数据存在情况为第三值。在释放m个固态硬盘中的待写入数据后,还可以将各待释放bucket的脏数据存在情况从第三值修改为第四值。
可选地,存储***的管理方法还可以包括:向n个固态硬盘发送针对同一目标数据的读出指令,以使各固态硬盘查找目标数据;在n个固态硬盘中均未找到目标数据的情况下,向机械硬盘发送目标数据的读出指令,以从机械硬盘中获取目标数据;将目标数据在n个固态硬盘中的k个第二目标固态硬盘中进行存储;k大于等于1且小于等于n-1。这样,在n个固态硬盘中均未找到目标数据的情况下,从机械硬盘中查找目标数据,并将目标数据保存在m个固态硬盘中。能够使得上层应用在下一次寻找目标数据时,能够从固态硬盘中快速读取。同时,由于机械硬盘中已经保存有目标数据。由此,即便固态硬盘损坏,仍然能够从机械硬盘中读取到目标数据,以保证目标数据的可靠性。因此,不将目标数据存储在所有固态硬盘中,能够在保证快速且可靠的读取目标数据的情况下,减少固态硬盘的空间的浪费。
在本申请实施例中,可以通过以下方式确定k个第二目标固态硬盘:分别获取n个固态硬盘中的处于可使用状态的bucket的数量;按照数量从高到低的顺序,将前k个固态硬盘确定为第二目标固态硬盘。这样,按照数量从高到低的顺序,将前k个固态硬盘确定为第二目标固态硬盘。能够将目标数据存入可使用的bucket更多的固态硬盘中。以避免各固态硬盘的容量空余相差较大,即避免部分固态硬盘的容量空余较多的情况下,部分固态硬盘的容量空余较少。
其中,在k大于等于2的情况下,将目标数据在n个固态硬盘中的k个第二目标固态硬盘中进行存储的过程可以包括:建立备选bucket之间的关联关系;备选bucket为每一个固态硬盘中用于存储目标数据的bucket;在各备选bucket中分别保存目标数据。
在一些实施例中,建立备选bucket之间的关联关系的过程可以包括:在k个第二目标固态硬盘中分别选取一个备选bucket;针对每一个备选bucket,在该备选bucket的元数据中增加第二副本信息;第二副本信息包括除该备选bucket外的所有备选bucket的标识信息。这样,通过增加第二副本信息的方式,能够便捷的创建备选bucket之间的关联关系。
示例性的,以存储***包括3个固态硬盘,分别为固态硬盘I、固态硬盘J、固态硬盘K为例。上层应用可以向固态硬盘I、固态硬盘J、固态硬盘K分别发送针对目标数据“e”的读出指令。在固态硬盘I、固态硬盘J、固态硬盘K中均未存储目标数据“e”的情况下,上层应用向机械硬盘发送目标数据“e”的读出指令,然后从机械硬盘中获取目标数据“e”。假设k等于2,且获取固态硬盘I中处于可使用状态的bucket的数量为20,获取固态硬盘J中处于可使用状态的bucket的数量为25,获取固态硬盘K中处于可使用状态的bucket的数量为30。按照处于可使用状态的bucket的数量从高到低的顺序,将固态硬盘K和固态硬盘J确定为第二目标固态硬盘。上层应用从固态硬盘K中选取一个可使用的bucket作为第六目标bucket,并获取第六目标bucket的标识信息f。上层应用从固态硬盘J中选取一个可使用的bucket作为第七目标bucket,并获取第七目标bucket的标识信息j。上层应用在内存中查找描述第六目标bucket的元数据h,并在元数据h的replica字段中增加内容为“标识信息j”的副本信息。上层应用在内存中查找第七目标bucket的元数据i,并在元数据i的replica字段中增加内容为“标识信息f”的副本信息。然后,上层应用将目标数据“e”存储到第六目标bucket和第七目标bucket内。
在一些实施例中,待写入数据的长度可以是扇区的整数倍。最小的待写入数据的长度为1个扇区,即512字节。目标数据的长度是扇区的整数倍。最小的目标数据的长度为1个扇区。
在一些实施例中,固态硬盘中设置的bucket的大小与固态硬盘的擦除大小一致。例如:固态硬盘的擦除大小为512KB,固态硬盘中设置的bucket的大小也为512KB。
可选地,存储***的管理方法还可以包括:在n个固态硬盘的写入次数均小于第二预设次数的情况下,根据各固态硬盘的可使用容量释放固态硬盘的已使用容量。其中,可使用容量用于表征处于可使用状态的bucket所占容量,或,可使用容量用于表征固态硬盘内可存储数据的容量。在可使用容量用于表征处于可使用状态的bucket所占容量的情况下,已使用容量用于表征处于不可使用状态的bucket所占容量。在可使用容量用于表征固态硬盘内可存储数据的容量的情况下,已使用容量用于表征固态硬盘内已存储数据所占容量。这样,在n个固态硬盘的写入次数均小于第二预设次数的情况下,释放固态硬盘的已使用容量。能够在不影响固态硬盘与上层应用的交互的情况下,释放更多的固态硬盘的容量,以保证后续固态硬盘能够正常存储新的数据。
在一些实施例中,第一预设次数可以等于第二预设次数。第二预设次数也是研究人员根据固态硬盘处于业务不繁忙的状态时,通常写入次数为多少进行设置。
在一些实施例中,根据各固态硬盘的可使用容量释放固态硬盘的已使用容量的过程可以包括:获取n个固态硬盘的可使用容量;将可使用容量低于第二预设容量的固态硬盘确定为待清理硬盘;根据待清理硬盘中各bucket的脏数据存在情况,释放待清理硬盘的已使用容量。
在一些实施例中,研究人员基于经验判断在固态硬盘的可使用容量低于多少数值的情况下,可能会影响下一次固态硬盘存入新的待写入数据。从而设置第二预设容量。
在一些实施例中,根据待清理硬盘中各bucket的脏数据存在情况,释放待清理硬盘的已使用容量,包括:将待清理硬盘中不存在脏数据的bucket确定为待清理bucket;根据待清理bucket的优先级释放待清理bucket;优先级用于表征待清理bucket内存储的数据被访问的频率。
可选地,在上述实施例中,根据待清理bucket的优先级释放待清理bucket可以是:释放优先级低于预设优先级的待清理bucket。这样,由于优先级低的待清理bucket被访问的概率更小,通过清理低于预设优先级的待清理bucket,能够在不影响用户的读取速度的情况下,提高固态硬盘的空间利用率。
又可选地,在上述实施例中,根据待清理bucket的优先级释放待清理bucket也可以是:按照待清理bucket的优先级从低到高的顺序依次释放待清理bucket,直至存在固态硬盘的写入次数大于第二预设次数。
在一些实施例中,研究人员基于大量实验调查,在将预设优先级设置为多少的情况下,能够兼顾上层应用对数据的响应速度,且能释放固态硬盘的容量空间。从而进行设置。
在一些实施例中,bucket内的数据每被访问一次,则该bucket的优先级可以累加1次。
在一些实施例中,以存储***包括2个固态硬盘,分别为固态硬盘L、固态硬盘M为例。在固态硬盘L和固态硬盘M的写入次数均小于第二预设次数的情况下,获取固态硬盘L的可使用容量为ll。获取固态硬盘M的可使用容量为mm。假设固态硬盘L的可使用容量为ll高于第二预设容量,而固态硬盘M的可使用容量为mm小于第二预设容量。将固态硬盘M确定为待清理硬盘。将固态硬盘M中不存在脏数据的bucket确定为待清理bucket。获取各待清理bucket的优先级,并释放优先级低于预设优先级的待清理bucket。
在一些实施例中,每一个bucket的元数据结构如下:struct bucket_meta{boolinused;bool dirty;uint16_t priority;uint64_t replica;}。其中,inused字段表征使用状态信息,dirty字段表征脏数据的存在情况,priority字段表征bucket的优先级,replica字段表征存储有相同数据的bucket。
在一些实施例中,假设采用两个容量为500G的固态硬盘作为缓存盘。如果将两个固态硬盘组成一个RAID1,缓存盘可使用的缓存空间就只有500G。如果脏数据限制在最高40%,即固态硬盘中最多使用40%的容量来存储脏数据,则固态硬盘中能够使用200GB存储脏数据,使用300GB来存储不是脏数据的数据。如果采用本申请的存储***的管理方法,如果脏数据限制在最高40%,假设脏数据的大小为x,那么有x/(x+2(500-x))=40%,则最大的用于存储脏数据的容量有285.7GB,有428.6GB来存储不是脏数据的数据,比RAID1方案都增加了42.85%的空间。
结合图5所示,存储***包括n个固态硬盘以及以n个固态硬盘作为缓存盘的机械硬盘;n为大于等于2的整数;本申请实施例提供一种存储***的管理装置,包括:获取模块7、固态硬盘写入模块8、硬盘确定模块9、机械硬盘写入模块10和释放模块11。获取模块7,用于获取待写入数据;固态硬盘写入模块8,用于在n个固态硬盘中分别保存待写入数据;硬盘确定模块9,用于在预设写入条件满足的情况下,从n个固态硬盘中确定一个第一目标硬盘;机械硬盘写入模块10,用于发送写入指令给第一目标硬盘,触发第一目标硬盘将待写入数据写入机械硬盘中;释放模块11用于在m个固态硬盘中释放待写入数据;m大于等于1且小于等于n-1。
采用本申请实施例提供的存储***的管理装置,通过获取模块获取待写入数据。固态硬盘写入模块在n个固态硬盘中分别保存待写入数据。硬盘确定模块在预设写入条件满足的情况下,从n个固态硬盘中确定一个第一目标硬盘。机械硬盘写入模块发送写入指令给第一目标硬盘,触发第一目标硬盘将待写入数据写入机械硬盘中。释放模块在m个固态硬盘中释放待写入数据;m大于等于1且小于等于n-1。这样,将待写入数据写入多个固态硬盘,能够避免在部分固态硬盘出现损坏的情况下,造成的数据丢失。在待写入数据写入机械硬盘的情况下,在部分固态硬盘中释放待写入数据。由于在机械硬盘中已经保存了待写入数据,由此即便存储待写入数据的固态硬盘损坏,仍然能够从机械硬盘中获取待写入数据,以保证数据的可靠性。同时由于在部分固态硬盘中释放了待写入数据。由此能够释放部分固态硬盘中的容量,进而能够实现在维持数据的可靠性的情况下,提高由固体硬盘组成的缓存盘的空间利用率。
可选地,各固态硬盘分别划分有多个bucket;固态硬盘写入模块通过以下方式在n个固态硬盘中分别保存待写入数据:建立目标bucket之间的关联关系;目标bucket为每一个固态硬盘中用于存储待写入数据的bucket;在各目标bucket中分别保存待写入数据。
可选地,固态硬盘写入模块通过以下方式建立目标bucket之间的关联关系:在n个固态硬盘中分别选取一个目标bucket;针对每一个目标bucket,在该目标bucket的元数据中增加第一副本信息;第一副本信息包括除该目标bucket外的所有目标bucket的标识信息。
可选地,各bucket的元数据包括使用状态信息,使用状态信息用于表征bucket是否处于可使用状态;在保存待写入数据后,各目标bucket的使用状态信息为第一值;第一值用于标识bucket处于不可使用状态;释放模块通过以下方式释放m个固态硬盘中的待写入数据:从各目标bucket中选择出位于m个固态硬盘中的m个待释放bucket;将各待释放bucket的使用状态信息从第一值修改为第二值;第二值用于标识bucket处于可使用状态。
可选地,释放模块用于在释放m个固态硬盘中的待写入数据后:删除各待释放bucket的第一副本信息;针对各目标bucket中除待释放bucket外的保留bucket,删除各保留bucket的元数据中各待释放bucket的标识信息。
可选地,存储***的管理装置还包括:写入模块。写入模块用于向n个固态硬盘发送针对同一目标数据的读出指令,以使各固态硬盘查找目标数据;在n个固态硬盘中均未找到目标数据的情况下,向机械硬盘发送目标数据的读出指令,以从机械硬盘中获取目标数据;将目标数据在n个固态硬盘中的k个第二目标固态硬盘中进行存储;k大于等于1且小于等于n-1。
可选地,写入模块通过以下方式确定k个第二目标固态硬盘:分别获取n个固态硬盘中的处于可使用状态的bucket的数量;按照数量从高到低的顺序,将前k个固态硬盘确定为第二目标固态硬盘。
可选地,存储***的管理装置还包括:容量清理模块。容量清理模块用于在n个固态硬盘的写入次数均小于第二预设次数的情况下,根据各固态硬盘的可使用容量释放固态硬盘的已使用容量。
可选地,容量清理模块通过以下方式根据各固态硬盘的可使用容量释放固态硬盘的已使用容量:获取n个固态硬盘的可使用容量;将可使用容量低于第二预设容量的固态硬盘确定为待清理硬盘;根据待清理硬盘中各bucket的脏数据存在情况,释放待清理硬盘的已使用容量;脏数据存在情况用于表征bucket中是否存在有脏数据。
可选地,容量清理模块通过以下方式根据待清理硬盘中各bucket的脏数据存在情况,释放待清理硬盘的已使用容量:将待清理硬盘中不存在脏数据的bucket确定为待清理bucket;根据待清理bucket的优先级释放待清理bucket;优先级用于表征待清理bucket内存储的数据被访问的频率。
结合图6所示,本申请实施例提供一种电子设备,包括处理器12和存储器13。可选地,该装置还可以包括通信接口14和总线15。其中,处理器12、通信接口14、存储器13可以通过总线15完成相互间的通信。通信接口14可以用于信息传输。处理器12可以调用存储器13中的逻辑指令,以执行上述实施例的存储***的管理方法。
此外,上述的存储器13中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器13作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序,如本申请实施例中的方法对应的程序指令/模块。处理器12通过运行存储在存储器13中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述实施例中存储***的管理方法。
存储器13可包括存储程序区和存储数据区,其中,存储程序区可存储操作***、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器13可以包括高速随机存取存储器,还可以包括非易失性存储器。
本申请实施例提供了一种存储介质,存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现上述存储***的管理方法。
本申请实施例提供了一种计算机程序产品,所述计算机程序产品包括存储在存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述存储***的管理方法。
上述的计算机可读存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。
本申请实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括一个或多个指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例所述方法的全部或部分步骤。而前述的存储介质可以是非暂态存储介质,包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等多种可以存储程序代码的介质,也可以是暂态存储介质。
以上描述和附图充分地示出了本申请的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本申请实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,可以仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例。另外,在本申请实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
附图中的流程图和框图显示了根据本申请实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (14)
1.一种存储***的管理方法,其特征在于,所述存储***包括n个固态硬盘以及以n个所述固态硬盘作为缓存盘的机械硬盘;所述n为大于等于2的整数;所述方法包括:
获取待写入数据;
在n个所述固态硬盘中分别保存所述待写入数据;
在预设写入条件满足的情况下,从n个所述固态硬盘中确定一个第一目标硬盘;
发送写入指令给所述第一目标硬盘,触发所述第一目标硬盘将所述待写入数据写入所述机械硬盘中;
释放m个所述固态硬盘中的所述待写入数据;所述m大于等于1且小于等于n-1。
2.根据权利要求1所述的方法,其特征在于,各固态硬盘分别划分有多个bucket;在n个所述固态硬盘中分别保存所述待写入数据,包括:
建立目标bucket之间的关联关系;所述目标bucket为每一个所述固态硬盘中用于存储所述待写入数据的bucket;
在各所述目标bucket中分别保存所述待写入数据。
3.根据权利要求2所述的方法,其特征在于,建立目标bucket之间的关联关系包括:
在n个所述固态硬盘中分别选取一个目标bucket;
针对每一个所述目标bucket,在该目标bucket的元数据中增加第一副本信息;所述第一副本信息包括除该目标bucket外的所有目标bucket的标识信息。
4.根据权利要求3所述的方法,其特征在于,各bucket的元数据包括使用状态信息,所述使用状态信息用于表征bucket是否处于可使用状态;在保存所述待写入数据后,各所述目标bucket的使用状态信息为第一值;所述第一值用于标识bucket处于不可使用状态;
释放m个所述固态硬盘中的所述待写入数据,包括:
从各所述目标bucket中选择出位于m个所述固态硬盘中的m个待释放bucket;
将各所述待释放bucket的使用状态信息从第一值修改为第二值;所述第二值用于标识bucket处于可使用状态。
5.根据权利要求4所述的方法,其特征在于,释放m个所述固态硬盘中的所述待写入数据后,还包括:
删除各所述待释放bucket的第一副本信息;
针对各所述目标bucket中除所述待释放bucket外的保留bucket,删除各所述保留bucket的元数据中各所述待释放bucket的标识信息。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述预设写入条件包括以下至少之一:
n个所述固态硬盘的写入次数均小于第一预设次数;
存在固态硬盘的可使用容量小于第一预设容量。
7.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
向n个所述固态硬盘发送针对同一目标数据的读出指令,以使各所述固态硬盘查找所述目标数据;
在n个所述固态硬盘中均未找到所述目标数据的情况下,向所述机械硬盘发送所述目标数据的读出指令,以从所述机械硬盘中获取所述目标数据;
将所述目标数据在n个所述固态硬盘中的k个第二目标固态硬盘中进行存储;所述k大于等于1且小于等于n-1。
8.根据权利要求7所述的方法,其特征在于,各固态硬盘分别划分有多个bucket;通过以下方式确定k个所述第二目标固态硬盘:
分别获取n个所述固态硬盘中的处于可使用状态的bucket的数量;
按照所述数量从高到低的顺序,将前k个固态硬盘确定为所述第二目标固态硬盘。
9.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
在n个所述固态硬盘的写入次数均小于第二预设次数的情况下,根据各所述固态硬盘的可使用容量释放固态硬盘的已使用容量。
10.根据权利要求9所述的方法,其特征在于,各固态硬盘分别划分有多个bucket;根据各所述固态硬盘的可使用容量释放固态硬盘的已使用容量,包括:
获取n个所述固态硬盘的可使用容量;
将可使用容量低于第二预设容量的所述固态硬盘确定为待清理硬盘;
根据所述待清理硬盘中各bucket的脏数据存在情况,释放所述待清理硬盘的已使用容量;所述脏数据存在情况用于表征bucket中是否存在有脏数据。
11.根据权利要求10所述的方法,其特征在于,根据所述待清理硬盘中各bucket的脏数据存在情况,释放所述待清理硬盘的已使用容量,包括:
将所述待清理硬盘中不存在脏数据的bucket确定为待清理bucket;
根据待清理bucket的优先级释放待清理bucket;所述优先级用于表征待清理bucket内存储的数据被访问的频率。
12.一种存储***的管理装置,其特征在于,所述存储***包括n个固态硬盘以及以n个所述固态硬盘作为缓存盘的机械硬盘;所述n为大于等于2的整数;所述装置包括:
获取模块,用于获取待写入数据;
固态硬盘写入模块,用于在n个所述固态硬盘中分别保存所述待写入数据;
硬盘确定模块,用于在预设写入条件满足的情况下,从所述n个固态硬盘中确定一个第一目标硬盘;
机械硬盘写入模块,用于发送写入指令给所述第一目标硬盘,触发所述第一目标硬盘将所述待写入数据写入所述机械硬盘中;
释放模块,用于释放m个所述固态硬盘中的所述待写入数据;所述m大于等于1且小于等于n-1。
13.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储有能够被所述处理器执行的计算机可执行指令,所述处理器执行所述计算机可执行指令以实现权利要求1至11任一项所述的存储***的管理方法。
14.一种存储介质,其特征在于,所述存储介质存储有计算机可执行指令,所述计算机可执行指令在被处理器调用和执行时,所述计算机可执行指令促使所述处理器实现权利要求1至11任一项所述的存储***的管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311587036.XA CN117608477A (zh) | 2023-11-24 | 2023-11-24 | 存储***的管理方法及装置、电子设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311587036.XA CN117608477A (zh) | 2023-11-24 | 2023-11-24 | 存储***的管理方法及装置、电子设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117608477A true CN117608477A (zh) | 2024-02-27 |
Family
ID=89949229
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311587036.XA Pending CN117608477A (zh) | 2023-11-24 | 2023-11-24 | 存储***的管理方法及装置、电子设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117608477A (zh) |
-
2023
- 2023-11-24 CN CN202311587036.XA patent/CN117608477A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11301379B2 (en) | Access request processing method and apparatus, and computer device | |
US8595451B2 (en) | Managing a storage cache utilizing externally assigned cache priority tags | |
CN106502587B (zh) | 硬盘数据管理方法和硬盘控制装置 | |
KR101717644B1 (ko) | 고체-상태 저장 디바이스 상에서 데이터를 캐싱하는 장치, 시스템, 및 방법 | |
CN107391774B (zh) | 基于重复数据删除的日志文件***的垃圾回收方法 | |
US8161240B2 (en) | Cache management | |
CN108268219B (zh) | 一种处理io请求的方法及装置 | |
CN110399310B (zh) | 一种存储空间的回收方法及装置 | |
CN109800185B (zh) | 一种数据存储***中的数据缓存方法 | |
KR20090026296A (ko) | 예측 데이터 로더 | |
CN108733306B (zh) | 一种文件合并方法及装置 | |
CN107329704B (zh) | 一种缓存镜像方法及控制器 | |
CN108604165A (zh) | 存储装置 | |
CN107329692B (zh) | 一种数据重删的方法及存储设备 | |
KR20070060070A (ko) | 최적화된 순차적인 클러스터 관리용 에프에이티 분석 | |
CN111209253B (zh) | 分布式存储设备性能提升方法、装置及分布式存储设备 | |
CN108628542B (zh) | 一种文件合并方法及控制器 | |
CN112114753B (zh) | 一种数据写入方法、装置及设备 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
KR100703680B1 (ko) | 플래시 파일 시스템 | |
JP2019028954A (ja) | ストレージ制御装置、プログラム、及び重複排除方法 | |
CN113254365A (zh) | 存储空间的管理方法、装置、设备、介质和程序产品 | |
KR101114125B1 (ko) | 낸드 플래시 파일 시스템 및 그의 초기화 및 크래시 복구 방법 | |
CN113253932B (zh) | 一种分布式存储***的读写控制方法和*** | |
CN109508140B (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 |