CN115168298A - 文件系统碎片化的评估方法及电子设备 - Google Patents
文件系统碎片化的评估方法及电子设备 Download PDFInfo
- Publication number
- CN115168298A CN115168298A CN202210643487.XA CN202210643487A CN115168298A CN 115168298 A CN115168298 A CN 115168298A CN 202210643487 A CN202210643487 A CN 202210643487A CN 115168298 A CN115168298 A CN 115168298A
- Authority
- CN
- China
- Prior art keywords
- data block
- fragmentation
- target
- bitmap
- state
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种文件系统碎片化的评估方法及电子设备,应用于电子设备技术领域。该方法根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定目标段的第一碎片化分值,并根据目标段中的各个数据块的状态,确定目标段的第二碎片化分值,根据第一碎片化分值和第二碎片化分值,评估目标段的碎片化程度指标。采用上述方式对文件系统的碎片化程度进行定量描述,从而使得文件系统后续在依据各个目标段的碎片化程度指标,来执行垃圾回收操作或者将空间分配方式从顺序分配切换为松弛空间分配时,可提高数据的读写性能。
Description
技术领域
本申请涉及电子设备技术领域,尤其涉及一种文件系统碎片化的评估方法及电子设备。
背景技术
随着电子技术的不断发展,手机、平板电脑等电子设备的使用越来越普及。在用户使用电子设备的过程中,经常需要占用存储空间来存储数据,并在数据使用完毕时释放占用的存储空间,随着存储空间的不断被占用和不断被释放,会造成文件系统的碎片化问题。当文件系统的碎片化程度较高时,会导致数据读写性能的下降。
因此,亟需一种针对文件系统的碎片化评估方法,来评估文件系统的碎片化程度,以在文件系统的碎片化程度较为严重时,采用相应的策略来提高数据的读写性能。
发明内容
本申请实施例提供一种文件系统碎片化的评估方法及电子设备,其可以对目标段的碎片化程度指标进行定量评估。
第一方面,本申请实施例提出一种文件系统碎片化的评估方法,应用于电子设备,该方法包括:电子设备根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定目标段的第一碎片化分值;电子设备根据目标段中的各个数据块的状态,确定目标段的第二碎片化分值;电子设备根据第一碎片化分值和第二碎片化分值,评估目标段的碎片化程度指标。
其中,第一碎片化分值也可称为内部碎片化分值,第二碎片化分值也可称为外部碎片化分值。这样,通过对目标段的内部碎片化分值和外部碎片化分值进行综合考虑,来评估目标段的碎片化程度指标,可提高对目标段的碎片化程度指标的评估准确性;并且,采用上述方式对文件系统的碎片化程度进行定量描述,以根据评估得到的目标段的碎片化程度指标提前预测IO性能下降的情况,从而使得文件系统后续在依据各个目标段的碎片化程度指标,来执行垃圾回收操作或者将空间分配方式从顺序分配切换为松弛空间分配时,可提高数据的读写性能。
在一种可能的实现方式中,电子设备根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定目标段的第一碎片化分值,包括:电子设备根据目标段中的每个数据块与其相邻的数据块之间的状态差异信息,依次确定目标段中的每个数据块的局部碎片化分值;电子设备对目标段中的各个数据块的局部碎片化分值进行求和,得到目标段的第一碎片化分值。这样,综合考虑目标段中的各个数据块的局部碎片化分值,来得到目标段的第一碎片化分值,使得第一碎片化分值的计算结果更准确。
在一种可能的实现方式中,电子设备根据目标段中的每个数据块与其相邻的数据块之间的状态差异信息,依次确定目标段中的每个数据块的局部碎片化分值,包括:电子设备依次确定目标段中,与第i个数据块相邻的数据块的状态是否与第i个数据块的状态相同;i为正整数,数据块的状态为可写状态或不可写状态;电子设备将与第i个数据块的状态不相同的相邻数据块的个数,作为第i个数据块的局部碎片化分值。这样,通过将与第i个数据块的状态不相同的相邻数据块的个数,作为第i个数据块的局部碎片化分值,使得该局部碎片化分值可以准确衡量目标段中状态为可写状态的数据块的连续性,从而准确计算得到目标段的内部碎片化分值。
在一种可能的实现方式中,电子设备根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定目标段的第一碎片化分值,包括:电子设备获取目标段对应的可写性位图;电子设备根据可写性位图,确定左连续性位图和右连续性位图;左连续性位图表示目标段中的每个数据块与其右侧相邻的数据块之间的状态差异信息,右连续性位图表示目标段中的每个数据块与其左侧相邻的数据块之间的状态差异信息;电子设备计算左连续性位图的汉明距离,得到目标段的第一部分分值;电子设备计算右连续性位图的汉明距离,得到目标段的第二部分分值;电子设备对第一部分分值与第二部分分值进行求和,得到目标段的第一碎片化分值。这样,可通过灵活使用位运算来计算目标段的第一碎片化分值,以进一步降低目标段的第一碎片化分值的计算负担,从而进一步降低因本申请引入的计算文件系统的目标段的碎片化程度指标,对文件系统性能带来的影响。
在一种可能的实现方式中,电子设备根据可写性位图,确定左连续性位图和右连续性位图,包括:电子设备将可写性位图向左移动一位,得到左移位图;电子设备对可写性位图与左移位图进行按位取异或操作,得到左连续性位图;电子设备将可写性位图向右移动一位,得到右移位图;电子设备对可写性位图与右移位图进行按位取异或操作,得到右连续性位图。
在一种可能的实现方式中,电子设备根据目标段中的各个数据块的状态,确定目标段的第二碎片化分值,包括:电子设备依次确定目标段中的每个数据块的状态;数据块的状态为可写状态或不可写状态;电子设备将目标段中状态为不可写状态的数据块的个数,作为目标段的第二碎片化分值。这样,采用逐一判断的方式,统计目标段中状态为不可写状态的数据块的个数,将其作为目标段的外部碎片化分值,以基于外部碎片化分值准确衡量文件系统跨目标段的碎片化对数据读写的影响。
在一种可能的实现方式中,电子设备根据目标段中的各个数据块的状态,确定目标段的第二碎片化分值,包括:电子设备获取目标段对应的可写性位图;电子设备对可写性位图进行按位取反操作,得到第一取反位图;电子设备计算第一取反位图的汉明距离,得到目标段的第二碎片化分值。这样,可通过灵活使用位运算来计算目标段的第二碎片化分值,以进一步降低目标段的第二碎片化分值的计算负担,从而进一步降低因本申请引入的计算文件系统的目标段的碎片化程度指标,对文件系统性能带来的影响。
在一种可能的实现方式中,电子设备获取目标段对应的可写性位图,包括:电子设备获取目标段对应的可读性位图和可擦性位图;电子设备对可读性位图进行按位取反操作,得到第二取反位图;电子设备对第二取反位图与可擦性位图进行按位相与操作,得到目标段对应的可写性位图。
在一种可能的实现方式中,电子设备根据第一碎片化分值和第二碎片化分值,评估目标段的碎片化程度指标,包括:电子设备对第一碎片化分值和第二碎片化分值进行加权求和,得到目标段的碎片化程度指标。这样,通过对目标段的内部碎片化分值和外部碎片化分值进行综合考虑,来评估目标段的碎片化程度指标,可提高对目标段的碎片化程度指标的评估准确性。
在一种可能的实现方式中,该方法还包括:当挂载文件系统时,电子设备执行根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定目标段的第一碎片化分值及之后的步骤。这样,提供了一种在挂载文件系统的场景下,计算目标段的碎片化程度指标的方式。
在一种可能的实现方式中,在电子设备根据第一碎片化分值和第二碎片化分值,评估目标段的碎片化程度指标之后,还包括:当获取到对目标段中的目标数据块的状态更新请求时,电子设备确定目标数据块相邻的数据块中,与更新后的目标数据块状态不相同的数据块的第一个数,以及与更新前的目标数据块状态不相同的数据块的第二个数;数据块的状态为可写状态或不可写状态;电子设备将第一个数与第二个数的差值,作为目标段的第一更新值;电子设备根据目标数据块更新后的状态以及目标数据块更新前的状态,确定目标段的第二更新值;电子设备采用第一更新值与第二更新值之和,更新目标段的碎片化程度指标。这样,将目标段的碎片化程度的计算过程,拆分成“初始化”和“更新”两个动作来执行,其在挂载文件系统时对目标段的碎片化程度指标的初始化计算,并在系统运行过程中实时更新目标段的碎片化程度指标,从而以较低的运算负载,实时计算得到目标段的碎片化程度指标。
在一种可能的实现方式中,该方法还包括:当获取到垃圾回收请求,或空间分配方式变更为松弛空间分配时,电子设备执行根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定目标段的第一碎片化分值及之后的步骤。这样,提供了一种在获取到垃圾回收请求,或空间分配方式变更为松弛空间分配的场景下,按需计算目标段的碎片化程度指标的方式,丰富了本申请评估目标段的碎片化程度指标的应用场景。
在一种可能的实现方式中,在电子设备根据第一碎片化分值和第二碎片化分值,评估目标段的碎片化程度指标之后,还包括:电子设备按照碎片化程度指标从高到低的顺序,对文件系统中的多个目标段进行排序;电子设备对排序靠前的M个目标段进行垃圾回收操作;M为正整数。这样,文件系统在进行垃圾回收操作之前,先确定各个目标段的碎片化程度指标,对碎片化程度指标较高的一个或多个目标段进行垃圾回收操作,使得在每次评估各个目标段的碎片化程度指标之后,都可以及时对碎片化程度较高的目标段进行垃圾回收操作,从而提高数据读写性能。
在一种可能的实现方式中,在电子设备根据第一碎片化分值和第二碎片化分值,评估目标段的碎片化程度指标之后,还包括:电子设备按照碎片化程度指标从低到高的顺序,对文件系统中的多个目标段进行排序;电子设备将待写入数据写入排序靠前的K个目标段中;K为正整数。这样,文件系统在进行数据写入之前,先确定各个目标段的碎片化程度指标,根据待写入数据的数据量大小分配排序靠前的K个目标段中的数据块来进行数据写入,使得最终写入的数据在存储空间中的连续性较好,从而提高了当前数据写入的性能以及后续读取该数据的读取性能。
第二方面,本申请实施例提出一种电子设备,包括存储器和处理器,存储器用于存储计算机程序,处理器用于调用计算机程序,以执行上述的文件系统碎片化的评估方法。
第三方面,本申请实施例提出一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序或指令,当计算机程序或指令被运行时,实现上述的文件系统碎片化的评估方法。
第二方面至第三方面各可能的实现方式,效果与第一方面以及第一方面的可能的设计中的效果类似,在此不再赘述。
附图说明
图1为本申请实施例提供的电子设备的硬件系统结构示意图;
图2为本申请实施例提供的电子设备的软件系统结构示意图;
图3为本申请实施例提供的一种文件系统碎片化的评估方法的流程示意图;
图4为本申请实施例提供的第i个数据块的局部碎片化分值的计算示意图;
图5为本申请实施例提供的采用可写性位图,计算目标段的第一碎片化分值的示意图;
图6为本申请实施例提供的更新目标段的碎片化程度指标的示意图;
图7为本申请实施例提供的另一种文件系统碎片化的评估方法的流程示意图;
图8为本申请实施提供的一种电子设备的结构示意图。
具体实施方式
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分。例如,第一芯片和第二芯片仅仅是为了区分不同的芯片,并不对其先后顺序进行限定。本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定,并且“第一”、“第二”等字样也并不限定一定不同。
需要说明的是,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
本申请实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。
随着存储技术的发展,存储的应用场景越来越广泛。在一些电子设备的存储方案中,数据是以文件的方式保存在电子设备的存储器中,并通过电子设备的文件系统对存储的文件进行管理。
也就是说,在文件系统的抽象模型中,文件是数据的容器。同一文件中的数据在逻辑上存在彼此的联系,但是文件系统在保存文件中的数据时,并不能保证逻辑上连续的数据在物理的存储空间上也是连续的。
在用户使用电子设备的过程中,在数据写入时需要占用存储空间来存储数据,并在数据使用完毕时释放占用的存储空间,随着存储空间的不断被占用和不断被释放,使得文件系统中状态为可写状态的数据块,也不是连续分布在实际的存储空间内的,即出现文件系统的碎片化问题。
在实际应用过程中,当文件系统的碎片化程度较高时,上层应用程序每次下发的数据写入请求,会被文件系统包装成很多个输入输出(block input output,BIO)请求下发给块设备层,使得块设备层在根据每个BIO请求驱动对应的块设备驱动,对存储器进行数据写入操作时,数据写入操作的处理时间较长。
相应的,当文件系统的碎片化程度较高时,后续在根据上层应用程序下发的数据读取请求,读取这次写入存储器中的数据时,文件系统也会将数据读取请求拆分成很多个BIO请求下发给块设备层,使得块设备层在根据每个BIO请求驱动对应的块设备驱动,对存储器进行数据读取操作时,数据读取操作的处理时间也较长。
当文件系统的碎片化程度越高时,文件系统根据上层应用程序下发的数据访问请求(数据写入请求或数据读取请求),拆分出的BIO请求的数量越多,从而导致数据读写性能的下降,即IO性能的下降。
在一相关技术中,文件系统可基于垃圾回收(garbage collection,GC)机制,来缓解文件系统的碎片化问题,来提高数据的读写性能。垃圾回收机制可根据一定的算法选择可用空间不连续的段(segment),如选取有效数据比较少的段或者最后一次访问时间较久的段等,将其中的所有有效数据搬移至其他段中,并对该段内的数据整体擦除,从而得到完整可写的段,完成垃圾回收操作。
但是,由于在相关技术中,文件系统的垃圾回收机制也仅是通过考虑寿命和IO性能等因素,选择合适的段来进行数据搬移进而从侧面缓解文件系统的碎片化,其并没有量化描述文件系统的碎片化程度。因此,相关技术中在进行垃圾回收操作时,进行垃圾回收的段可能是碎片化程度较低的段,而碎片化程度较高的段并没有及时进行垃圾回收,从而导致部分场景下没有及时对碎片化程度较高的段进行垃圾回收操作,而影响数据读写性能。
在另一相关技术中,当剩余的可用存储空间较少时,文件系统在执行数据写入操作时,会将空间分配方式从顺序分配切换为松弛空间分配(slack space recycle,SSR)。由于在相关技术中,也没有量化描述文件系统的碎片化程度,因此,在采用松弛空间分配方式进行数据写入操作时,选择的待写入的段也未能考虑该段的碎片化程度,使得最终写入的数据在存储空间中的连续性较差,从而导致当前数据写入的性能以及后续读取该数据的读取性能都会下降。
需要说明的是,空间分配的主要任务是在可用的剩余存储空间中为待写入数据分配数据块。当文件系统包括足够的空闲段时,可采用顺序分配方式,将待写入数据按照顺序依次写入该空闲段中的各个数据块中;而当文件系统没有空闲段或者空闲段不足时,可采用松弛空间分配方式,其可以将碎片化的多个段中不包括有效数据的数据块分配出去,将待写入数据写入这些分配的数据块中,则写入的数据会位于不同段所包含的数据块中,使得写入的数据在存储空间上不是连续的。
综上,可以看出,文件系统的碎片化问题是影响数据读写性能的关键因素之一,但是相关技术中对文件系统的碎片化程度依然没有严格的定量描述方法,导致文件系统在执行垃圾回收操作,或者将空间分配方式从顺序分配切换为松弛空间分配时,数据的读写性能依旧比较差。
基于此,本申请实施例提供一种文件系统碎片化的评估方法及电子设备,根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定目标段的第一碎片化分值,并根据目标段中的各个数据块的状态,确定目标段的第二碎片化分值,根据第一碎片化分值和第二碎片化分值,评估目标段的碎片化程度指标。采用上述方式对文件系统的碎片化程度进行定量描述,以根据评估得到的目标段的碎片化程度指标提前预测IO性能下降的情况,从而使得文件系统后续在依据各个目标段的碎片化程度指标,来执行垃圾回收操作或者将空间分配方式从顺序分配切换为松弛空间分配时,可提高数据的读写性能。
本申请实施例提供的文件系统碎片化的评估方法,可以应用在具有文件系统的电子设备中。该电子设备可以称为终端(terminal)、用户设备(user equipment,UE)、移动台(mobile station,MS)、移动终端(mobile terminal,MT)等。电子设备可以是智能手机(mobile phone)、穿戴式设备、平板电脑(Pad)、个人电脑(personal computer,PC)、虚拟现实(virtual reality,VR)终端设备、增强现实(augmented reality,AR)终端设备、工业控制(industrial control)中的无线终端、无人驾驶(self-driving)中的无线终端、远程手术(remote medical surgery)中的无线终端、智能电网(smart grid)中的无线终端、运输安全(transportation safety)中的无线终端、智慧城市(smart city)中的无线终端、智慧家庭(smart home)中的电子设备等。本申请的实施例对电子设备所采用的具体技术和具体设备形态不做限定。
为了能够更好地理解本申请实施例,下面对本申请实施例的电子设备的结构进行介绍示例性的,图1为本申请实施例提供的电子设备的硬件系统结构示意图。
电子设备100可以包括处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriberidentification module,SIM)卡接口195等。
可以理解的是,本申请实施例示意的结构并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器110可以包括一个或多个处理单元,例如:处理器110可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。
控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器110中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器110中的存储器为高速缓冲存储器。该存储器可以保存处理器110刚用过或循环使用的指令或数据。如果处理器110需要再次使用该指令或数据,可从存储器中调用。避免了重复存取,减少了处理器110的等待时间,因而提高了系统的效率。
充电管理模块140用于从充电器接收充电输入。其中,充电器可以是无线充电器,也可以是有线充电器。在一些有线充电的实施例中,充电管理模块140可以通过USB接口130接收有线充电器的充电输入。在一些无线充电的实施例中,充电管理模块140可以通过电子设备100的无线充电线圈接收无线充电输入。充电管理模块140为电池142充电的同时,还可以通过电源管理模块141为电子设备供电。
电源管理模块141用于连接电池142,充电管理模块140与处理器110。电源管理模块141接收电池142和/或充电管理模块140的输入,为处理器110,内部存储器121,显示屏194,摄像头193,和无线通信模块160等供电。
电子设备100的无线通信功能可以通过天线1,天线2,移动通信模块150,无线通信模块160,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。移动通信模块150可以提供应用在电子设备100上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块150可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(low noise amplifier,LNA)等。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。
无线通信模块160可以提供应用在电子设备100上的包括无线局域网(wirelesslocal area networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequency modulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块160经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器110。无线通信模块160还可以从处理器110接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
电子设备100通过GPU,显示屏194,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏194和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器110可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏194用于显示图像、显示视频和接收滑动操作等。显示屏194包括显示面板。电子设备100可以通过ISP,摄像头193,视频编解码器,GPU,显示屏194以及应用处理器等实现拍摄功能。
外部存储器接口120可以用于连接外部存储卡,例如Micro SD卡,实现扩展电子设备100的存储能力。外部存储卡通过外部存储器接口120与处理器110通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。
内部存储器121可以用于存储计算机可执行程序代码,可执行程序代码包括指令。内部存储器121可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储电子设备100使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器121可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flash storage,UFS)等。处理器110通过运行存储在内部存储器121的指令,和/或存储在设置于处理器中的存储器的指令,执行电子设备100的各种功能应用以及数据处理。
电子设备100可以通过音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
按键190包括开机键,音量键等。按键190可以是机械按键。也可以是触摸式按键。电子设备100可以接收按键输入,产生与电子设备100的用户设置以及功能控制有关的键信号输入。
马达191可以产生振动提示。马达191可以用于来电振动提示,也可以用于触摸振动反馈。指示器192可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口195用于连接SIM卡。SIM卡可以通过插入SIM卡接口195,或从SIM卡接口195拔出,实现和电子设备100的接触和分离。
电子设备100的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构,等。本申请实施例以分层架构的Android系统为例,示例性说明电子设备100的软件结构。
图2是本申请实施例的电子设备100的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,电子设备的架构可以包括应用层、操作系统层和硬件层。
应用层可以包括一系列应用程序包。如图2所示,应用程序包可以包括电话、邮箱以及相机等应用程序。
在一些实施例中,操作系统层包括内核层,还包括框架层等其他层,由于本申请实施例主要涉及到文件系统相关的内容,因此,图2所示的操作系统层主要示意了与文件系统相关的内核层。可以理解的,本申请实施例中的电子设备100的软件架构,不限于图2所示的应用层和操作系统层,电子设备100的软件架构还可包括更多的层级关系,本申请实施例对此不作限制。
其中,内核层包括文件系统、块设备层和驱动层。
文件系统是操作系统用于明确存储器或分区上的文件的方法和数据结构,即在存储器上组织文件的方法。也可以说,操作系统中负责管理和存储文件信息的软件结构称为文件系统,即文件系统属于操作系统(或者内核)本身的功能单元。
内核用于将硬件层中包括的存储器虚拟成多个块设备,形成块设备层,并将该块设备层提供给文件系统使用。而驱动层可以包括块设备驱动。
文件系统将应用层中各个应用程序产生的数据,以文件的形式存储在存储器中的。当文件系统接收到应用层中某个应用程序发送的文件访问请求时,则将生成对块设备层中的块设备对应的块设备访问请求,然后,将该块设备访问请求发送到块设备层,通过块设备层的调度管理,驱动对应的块设备驱动,从而将该访问请求下发到存储器中,从而通过文件系统、块设备层以及块设备驱动实现电子设备100的存储功能。
在一些实施例中,文件系统可采用分块的方式进行数据管理,存储器中的可用空间在逻辑上被划分为大量大小相同的数据块作为存储空间的粒度,进而通过元数据实现细粒度的存储空间状态跟踪和管理。文件系统的分块机制在与块设备层的协同工作时,块设备层可以合并文件系统业务流程对连续地址分块数据的操作,实现数据操作的“化零为整”,从而提升文件业务操作的性能,具体表现为数据读写速度的提升以及数据读写的延迟时间的降低。
其中,在文件系统中,段为文件系统进行存储空间分配、整理和回收的基本单元,一个段包括多个数据块(block),数据块是数据存储的最小粒度。文件系统中的每个段的大小可根据需求进行配置。
在本申请实施例中,文件系统可以是闪存友好型文件系统(flash friendly filesystem,F2FS),以文件系统为F2FS文件系统为例,4096字节(即4KB)大小的存储空间可作为一个数据块,而512个数据块可组成一个段,即F2FS文件系统中的每个段的大小为2MB。
因此,在F2FS文件系统中,数据在写入时会先选择待写入的段,然后再拆分为4KB大小的单元映射到存储空间中的不同块地址;在进行数据读取时,会按照保存的逻辑地址与物理地址的映射关系,并根据逻辑地址的偏移量依次确定出数据在存储空间中的块地址,以实现对数据的读取。
硬件层用于指示电子设备100上安装的硬件,其可以包括处理器、存储器和通信接口等。该存储器可以为UFS、嵌入式多媒体存储卡(embedded multi media card,EMMC)等。
可以理解的是,本申请实施例中的文件系统可以不局限于F2FS文件系统,其还可以为其他文件系统,如第四代扩展文件系统(fourth extended file system,EXT4)、闪存日志型文件系统(journaling flash file system,JFFS)、网络文件系统(network filesystem,NFS),本申请实施例对此不作限定。
另外,本申请实施例中的电子设备的操作系统可以不局限于Android系统,其还可以为Windows系统、MAC OS系统、Linux系统等,本申请实施例对此不作限定。
下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以独立实现,也可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。
示例性的,图3为本申请实施例提供的一种文件系统碎片化的评估方法的流程示意图,该方法可以由电子设备100中的文件系统执行。参照图3所示,该文件系统碎片化的评估方法具体可以包括如下步骤:
步骤301,当挂载文件系统时,电子设备根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定目标段的第一碎片化分值。
在一些实施例中,文件系统在生成之后还不能直接使用,因此,需要将该文件系统挂载到某个目录上,就可以通过这个目录访问该文件系统了。该目录可称为挂载点,其用于作为另一个文件系统的访问入口。挂载可以看作是文件系统的初始化过程,其可以在电子设备的开机过程中来挂载文件系统。
在本申请实施例中,电子设备在挂载文件系统时,可以执行步骤301至步骤303所示的目标段的碎片化程度指标的初始化计算流程。
以F2FS文件系统为例,文件系统包括多个段,以下也可称为目标段,每个目标段包括多个数据块,如每个目标段包括512个数据块。
目标段中的每个数据块都有三种状态,其分别为可读状态、可写状态和可擦状态。当数据块中没有数据写入时,该数据块的状态为可写状态;当可写状态的数据块中写入了有效数据后,该数据块的状态变为可读状态;当可读状态的数据块中的数据被废弃后,该数据块的状态变为可擦状态;而当可擦状态的数据块中的数据被文件系统执行完成擦除操作后,该数据块的状态又变为了可写状态。
由于文件系统的碎片化问题主要面向准备进行数据写入的数据写入操作,对于计算目标段的碎片化程度指标来说,可以仅考虑目标段中的每个数据块的状态是不是可写状态。因此,可以将上述的可读状态、可写状态和可擦状态这三种状态,归纳为可写状态和不可写状态这两种状态,可读状态和可擦状态均属于不可写状态。以下涉及到的数据块的状态均指的是可写状态或不可写状态。
本申请实施例中的文件系统的碎片化程度,是以一个目标段为单元来衡量的,并且,文件系统的目标段的碎片化程度指标,可以是基于目标段中的状态为可写状态的数据块在物理存储空间的连续性进行衡量的。
在一些实施例中,文件系统的目标段的碎片化程度指标,可以分别从目标段的内部碎片化分值和外部碎片化分值两方面,来共同来评估目标段的碎片化程度指标。
下面采用两种具体的实现方式,说明电子设备计算目标段的内部碎片化分值的具体过程,内部碎片化分值也可称为第一碎片化分值。
一种具体实现方式中,电子设备根据目标段中的每个数据块与其相邻的数据块之间的状态差异信息,依次确定目标段中的每个数据块的局部碎片化分值;电子设备对目标段中的各个数据块的局部碎片化分值进行求和,得到目标段的第一碎片化分值。
具体的,电子设备依次确定目标段中,与第i个数据块相邻的数据块的状态是否与第i个数据块的状态相同,i为正整数,数据块的状态为可写状态或不可写状态;电子设备将与第i个数据块的状态不相同的相邻数据块的个数,作为第i个数据块的局部碎片化分值。
假设目标段中的数据块的总个数为N,N为大于1的正整数。针对目标段中的第i(i=23,4…,N-1)个数据块,其相邻的数据块为第i-1个数据块和第i+1个数据块,因此,电子设备可判断第i-1个数据块的状态是否与第i个数据块的状态相同,以及第i+1个数据块的状态是否与第i个数据块的状态相同,将第i-1个数据块和第i+1个数据块中,与第i个数据块的状态不相同的相邻数据块的个数,作为第i个数据块的局部碎片化分值。
下面以图4所示的八种场景,依次说明不同场景下第i个数据块的局部碎片化分值的具体计算过程。在图4中的(a)至图4中的(h)所示的每种场景中,均通过三个数据块来说明局部碎片化分值的计算过程,这三个数据块从左到右分别表示第i-1个数据块、第i个数据块和第i+1个数据块。
第一种场景下,如图4中的(a)所示,第i个数据块的状态为可写状态,第i-1个数据块和第i+1个数据块的状态也均为可写状态,即第i-1个数据块的状态与第i个数据块的状态相同,第i+1个数据块的状态与第i个数据块的状态也相同,则第i-1个数据块和第i+1个数据块中,与第i个数据块的状态不相同的相邻数据块的个数为0,因此,第i个数据块的局部碎片化分值为0。
第二种场景下,如图4中的(b)所示,第i个数据块的状态为可写状态,第i-1个数据块的状态为不可写状态,第i+1个数据块的状态为可写状态,即第i-1个数据块的状态与第i个数据块的状态不相同,而第i+1个数据块的状态与第i个数据块的状态相同,则第i-1个数据块和第i+1个数据块中,与第i个数据块的状态不相同的相邻数据块的个数为1,因此,第i个数据块的局部碎片化分值为1。
第三种场景下,如图4中的(c)所示,第i个数据块的状态为可写状态,第i-1个数据块的状态为可写状态,第i+1个数据块的状态为不可写状态,即第i-1个数据块的状态与第i个数据块的状态相同,而第i+1个数据块的状态与第i个数据块的状态不相同,则第i-1个数据块和第i+1个数据块中,与第i个数据块的状态不相同的相邻数据块的个数为1,因此,第i个数据块的局部碎片化分值为1。
第四种场景下,如图4中的(d)所示,第i个数据块的状态为可写状态,第i-1个数据块和第i+1个数据块的状态均为不可写状态,即第i-1个数据块的状态与第i个数据块的状态不相同,且第i+1个数据块的状态与第i个数据块的状态也不相同,则第i-1个数据块和第i+1个数据块中,与第i个数据块的状态不相同的相邻数据块的个数为2,因此,第i个数据块的局部碎片化分值为2。
第五种场景下,如图4中的(e)所示,第i个数据块的状态为不可写状态,第i-1个数据块和第i+1个数据块的状态也均为不可写状态,即第i-1个数据块的状态与第i个数据块的状态相同,第i+1个数据块的状态与第i个数据块的状态也相同,则第i-1个数据块和第i+1个数据块中,与第i个数据块的状态不相同的相邻数据块的个数为0,因此,第i个数据块的局部碎片化分值为0。
第六种场景下,如图4中的(f)所示,第i个数据块的状态为不可写状态,第i-1个数据块的状态为可写状态,第i+1个数据块的状态为不可写状态,即第i-1个数据块的状态与第i个数据块的状态不相同,而第i+1个数据块的状态与第i个数据块的状态相同,则第i-1个数据块和第i+1个数据块中,与第i个数据块的状态不相同的相邻数据块的个数为1,因此,第i个数据块的局部碎片化分值为1。
第七种场景下,如图4中的(g)所示,第i个数据块的状态为不可写状态,第i-1个数据块的状态为不可写状态,第i+1个数据块的状态为可写状态,即第i-1个数据块的状态与第i个数据块的状态相同,而第i+1个数据块的状态与第i个数据块的状态不相同,则第i-1个数据块和第i+1个数据块中,与第i个数据块的状态不相同的相邻数据块的个数为1,因此,第i个数据块的局部碎片化分值为1。
第八种场景下,如图4中的(h)所示,第i个数据块的状态为不可写状态,第i-1个数据块和第i+1个数据块的状态均为可写状态,即第i-1个数据块的状态与第i个数据块的状态不相同,且第i+1个数据块的状态与第i个数据块的状态也不相同,则第i-1个数据块和第i+1个数据块中,与第i个数据块的状态不相同的相邻数据块的个数为2,因此,第i个数据块的局部碎片化分值为2。
因此,针对目标段中的第i(i=23,4…,N-1)个数据块,第i个数据块的局部碎片化分值可以为0、1和2中的一者。
而针对目标段中的第1个数据块,即i=1时,其相邻的数据块为第2个数据块,因此,电子设备可以仅判断第2个数据块的状态是否与第1个数据块的状态相同。若第2个数据块的状态与第1个数据块的状态相同,则第1个数据块的局部碎片化分值为0;若第2个数据块的状态与第1个数据块的状态不相同,则第1个数据块的局部碎片化分值为1。因此,针对目标段中的第1个数据块,其局部碎片化分值可以为0或1。
针对目标段中的第N个数据块,即i=N时,其相邻的数据块为第N-1个数据块,因此,电子设备可以仅判断第N-1个数据块的状态是否与第N个数据块的状态相同。若第N-1个数据块的状态与第N个数据块的状态相同,则第N个数据块的局部碎片化分值为0;若第N-1个数据块的状态与第N个数据块的状态不相同,则第N个数据块的局部碎片化分值为1。因此,针对目标段中的第N个数据块,其局部碎片化分值可以为0或1。
综上,电子设备可采用上述的循环比较的方式,逐一比较目标段中的每个数据块与其相邻的数据块之间的状态差异信息,依次确定目标段中的N个数据块的局部碎片化分值;最后,对目标段中的N个数据块的局部碎片化分值进行求和,得到目标段的第一碎片化分值。
以F2FS文件系统为例,目标段中的数据块的总个数为512个,即N为512,针对文件系统的目标段,逐一比较目标段中的每个数据块与其相邻的数据块之间的的状态差异信息,依次确定目标段中的这512个数据块的局部碎片化分值;最后,对目标段中的这512个数据块的局部碎片化分值进行求和,得到目标段的第一碎片化分值。
另一种具体实现方式,电子设备获取目标段对应的可写性位图;电子设备根据可写性位图,确定左连续性位图和右连续性位图;电子设备计算左连续性位图的汉明距离,得到目标段的第一部分分值;电子设备计算右连续性位图的汉明距离,得到目标段的第二部分分值;电子设备对第一部分分值与第二部分分值进行求和,得到目标段的第一碎片化分值。
电子设备在挂载文件系统时,首先结合文件系统为每个目标段维护对应的状态位图,该状态位图包括可读性位图(valid_map)和可擦性位图(discard_map)。
其中,可读性位图记录了目标段中的每个数据块的状态是否为可读状态,可读性位图中的一个数值用于表示一个数据块的状态是否为可读状态。在可读性位图中,数值“0”表示数据块的状态为不可读状态,数值“1”表示数据块的状态为可读状态。
可擦性位图记录了目标段中的每个数据块的状态是否为可擦状态,可擦性位图中的一个数值用于表示一个数据块的状态是否为可擦状态。在可擦性位图中,数值“0”表示数据块的状态为未擦除状态,数值“1”表示数据块的状态为已擦除状态。
电子设备在获取到目标段对应的可读性位图和可擦性位图之后,对可读性位图进行按位取反操作,得到第二取反位图,然后,对第二取反位图与可擦性位图进行按位相与操作,得到目标段对应的可写性位图。
针对可读性位图中数值为“0”的数据块,在对可读性位图进行按位取反操作之后,其数值会从“0”变为“1”;而针对可读性位图中数值为“1”的数据块,在对可读性位图进行按位取反操作之后,其数值会从“1”变为“0”。
针对第二取反位图中数值为“0”的数据块,其在与可擦性位图中数值为“0”的数据块进行按位相与操作时,得到的可写性位图中该数据块的数值为“0”;针对第二取反位图中数值为“0”的数据块,其在与可擦性位图中数值为“1”的数据块进行按位相与操作时,得到的可写性位图中该数据块的数值也为“0”;针对第二取反位图中数值为“1”的数据块,其在与可擦性位图中数值为“0”的数据块进行按位相与操作时,得到的可写性位图中该数据块的数值也为“0”;而针对第二取反位图中数值为“1”的数据块,其在与可擦性位图中数值为“1”的数据块进行按位相与操作时,得到的可写性位图中该数据块的数值为“1”。
综上,针对可读性位图中状态为不可读状态的数据块,其对应的数值为“0”,在对其进行取反操作后,该数据块的数值从“0”变为“1”;该数据块再与可擦性位图中状态为已擦除状态的数据块进行按位相与操作时,得到的可写性位图中该数据块的数值为“1”。因此,可读取位图中的不可读状态的数据块,以及可擦性位图中状态为已擦除状态的数据块,按照上述方式计算得到的可写性位图中该数据块的状态为可写状态。
在采用上述方式获取到目标段对应的可写性位图之后,可采用如下方式依据可写性位图确定左连续性位图和右连续性位图。具体的,电子设备将可写性位图向左移动一位,得到左移位图;电子设备对可写性位图与左移位图进行按位取异或操作,得到左连续性位图;电子设备将可写性位图向右移动一位,得到右移位图;电子设备对可写性位图与右移位图进行按位取异或操作,得到右连续性位图。
可写性位图记录了目标段中的每个数据块的状态是否为可写状态,可写性位图中的一个数值用于表示一个数据块的状态是否为可写状态。如图5所示,在可写性位图中,数值“0”表示数据块的状态为不可写状态,数值“1”表示数据块的状态为可写状态。
在将可写性位图向左移动一位之后,移动后的可写性位图最右侧会缺少一位数据,因此,需要在移动后的可写性位图最右侧补上一位数据,可得到如图5所示的左移位图,使得左移位图的最右侧与可写性位图的最右侧对齐。
该左移位图实际上可以表示目标段中的每个数据块右侧相邻的数据块的状态。由于针对目标段中的最后一个数据块,其右侧没有相邻的数据块,因此,在左移后的可写性位图最右侧进行数据补入时,补入的数据可以与可写性位图最右侧的数值相同,使得后续在计算目标段的第一部分分值,其计算结果更准确。
接着,电子设备对可写性位图与左移位图进行按位取异或操作,得到如图5所示的左连续性位图。左连续性位图表示目标段中的每个数据块与其右侧相邻的数据块之间的状态差异信息。
按位取异或操作是指参加运算的两个对象,如果两个相应位的数值不同时,按位取异或操作后的数值为“1”,如果两个相应位的数值相同时,按位取异或操作后的数值为“0”。
因此,针对可写性位图中数值为“0”的数据块,其在与左移位图中数值为“0”的数据块进行按位取异或操作时,得到的左连续性位图中该数据块的数值为“0”;针对可写性位图中数值为“0”的数据块,其在与左移位图中数值为“1”的数据块进行按位取异或操作时,得到的左连续性位图中该数据块的数值为“1”;针对可写性位图中数值为“1”的数据块,其在与左移位图中数值为“0”的数据块进行按位取异或操作时,得到的左连续性位图中该数据块的数值为“1”;针对可写性位图中数值为“1”的数据块,其在与左移位图中数值为“1”的数据块进行按位取异或操作时,得到的左连续性位图中该数据块的数值为“0”。
相应的,在将可写性位图向右移动一位,移动后的可写性位图的最左侧会缺少一位数据,因此,需要在移动后的可写性位图的最左侧补上一位数据,可得到如图5所示的右移位图,使得右移位图的最左侧与可写性位图的最左侧对齐。
该右移位图实际上可以表示目标段中的每个数据块左侧相邻的数据块的状态。由于针对目标段中的第1个数据块,其左侧没有相邻的数据块,因此,在右移后的可写性位图的最左侧进行数据补入时,补入的数据可以与可写性位图最左侧的数值相同,使得后续在计算目标段的第二部分分值,其计算结果更准确。
接着,电子设备对可写性位图与右移位图进行按位取异或操作,得到如图5所示的右连续性位图。右连续性位图表示目标段中的每个数据块与其左侧相邻的数据块之间的状态差异信息。
因此,针对可写性位图中数值为“0”的数据块,其在与右移位图中数值为“0”的数据块进行按位取异或操作时,得到的右连续性位图中该数据块的数值为“0”;针对可写性位图中数值为“0”的数据块,其在与右移位图中数值为“1”的数据块进行按位取异或操作时,得到的右连续性位图中该数据块的数值为“1”;针对可写性位图中数值为“1”的数据块,其在与右移位图中数值为“0”的数据块进行按位取异或操作时,得到的右连续性位图中该数据块的数值为“1”;针对可写性位图中数值为“1”的数据块,其在与右移位图中数值为“1”的数据块进行按位取异或操作时,得到的右连续性位图中该数据块的数值为“0”。
电子设备在计算得到左连续性位图和右连续性位图之后,电子设备可利用汉明距离函数,计算左连续性位图的汉明距离,得到目标段的第一部分分值。汉明距离函数是一种内核原生函数,其在计算左连续性位图的汉明距离时,是计算左连续性位图中数值为“1”的个数。
相应的,电子设备也可利用汉明距离函数,计算右连续性位图的汉明距离,得到目标段的第二部分分值。采用汉明距离函数在计算右连续性位图的汉明距离时,是计算右连续性位图中数值为“1”的个数。
最后,电子设备对第一部分分值与第二部分分值进行求和,可得到目标段的第一碎片化分值。
如图5所示,左连续性位图中数值为“1”的个数为5个,即目标段的第一部分分值为5;右连续性位图中数值为“1”的个数也为5个,即目标段的第二部分分值也为5。因此,目标段的第一碎片化分值等于10。
综上,电子设备可通过灵活使用位运算来计算目标段的第一碎片化分值,以进一步降低文件系统挂载过程中的运算负担,从而进一步降低因本申请引入的计算文件系统的目标段的碎片化程度指标,对文件系统性能带来的影响。
可以理解的是,图5示出的可写性位图仅是一种示例,其主要用于说明本申请实施例如何采用位运算来计算目标段的第一碎片化分值,在实际使用过程中,以F2FS文件系统为例,可写性位图中的位数可以为512个。
步骤302,电子设备根据目标段中的各个数据块的状态,确定目标段的第二碎片化分值。
在进行数据写入操作时,若一个目标段中状态为可写状态的数据块越少,则会在更短时间内触发文件系统为数据写入操作寻找并分配下一个目标段,其也会造成IO性能的下降。因此,文件系统在考虑每个目标段的内部碎片化分值之外,还需要考虑文件系统跨目标段的碎片化对数据读写的影响,即还需要考虑目标段的外部碎片化分值。
本申请实施例可以将目标段中状态为不可写状态的数据块的个数,作为该目标段的外部碎片化分值。这样,当目标段的外部碎片化分值越高时,该目标段中状态为可写状态的数据块的个数越少,则IO性能更趋于下降;而当目标段的外部碎片化分值越低时,该目标段中状态为可写状态的数据块的个数越多。
下面采用两种具体的实现方式,说明电子设备计算目标段的外部碎片化分值的具体过程,外部碎片化分值也可称为第二碎片化分值。
一种具体实现方式中,电子设备依次确定目标段中的每个数据块的状态,数据块的状态为可写状态或不可写状态;电子设备将目标段中状态为不可写状态的数据块的个数,作为目标段的第二碎片化分值。
这样,电子设备可采用逐一判断的方式,确定目标段中的每个数据块的状态是可写状态还是不可写状态,并统计目标段中状态为不可写状态的数据块的个数,将其作为目标段的第二碎片化分值。
另一种具体实现方式,电子设备获取目标段对应的可写性位图;电子设备对可写性位图进行按位取反操作,得到第一取反位图;电子设备计算第一取反位图的汉明距离,得到目标段的第二碎片化分值。
目标段对应的可写性位图的具体计算方式,可参照步骤301中采用可读性位图和可擦性位图进行计算的方式,为避免重复,在此不再赘述。
在获取到目标段对应的可写性位图之后,电子设备对可写性位图进行按位取反操作,得到第一取反位图。针对可写性位图中数值为“0”的数据块,在对可写性位图进行按位取反操作之后,其数值会从“0”变为“1”;而针对可写性位图中数值为“1”的数据块,在对可写性位图进行按位取反操作之后,其数值会从“1”变为“0”。
最后,电子设备可利用汉明距离函数计算第一取反位图的汉明距离,得到目标段的第二碎片化分值。采用汉明距离函数在计算第一取反位图的汉明距离时,是计算第一取反位图中数值为“1”的个数,而第一取反位图中数值为“1”的数据块,其实际上表示该数据块的状态为不可写状态。
这样,电子设备可通过灵活使用位运算来计算目标段的第二碎片化分值,以进一步降低文件系统挂载过程中的运算负担,从而进一步降低因本申请引入的计算文件系统的目标段的碎片化程度指标,对文件系统性能带来的影响。
可以理解的是,步骤301和步骤302的顺序可以变化,即可以先执行步骤301再执行步骤302,也可以先执行步骤302再执行步骤301,具体执行顺序可根据实际情况进行设置,在此不作限定。
步骤303,电子设备根据第一碎片化分值和第二碎片化分值,评估目标段的碎片化程度指标。
电子设备在计算得到目标段的第一碎片化分值以及目标段的第二碎片化分值之后,可以根据第一碎片化分值和第二碎片化分值,来共同评估目标段的碎片化程度指标。
一种可能的实现方式,电子设备对第一碎片化分值和第二碎片化分值进行加权求和,得到目标段的碎片化程度指标。
示例性的,目标段的碎片化程度指标可采用如下公式计算:S0=W1 S1+W2 S2。其中,
S0表示目标段的碎片化程度指标,S1表示目标段的第一碎片化分值,W1表示第一碎片化分值
的权重,S2表示目标段的第二碎片化分值,W2表示第二碎片化分值的权重。
在实际应用中,可根据第一碎片化分值和第二碎片化分值对IO性能下降的相关性,来确定第一碎片化分值的权重以及第二碎片化分值的权重。
在一些实施例中,电子设备在挂载文件系统时,可以在文件系统建立的每个目标段的状态跟踪结构体seg_entry中,加入表征每个目标段的碎片化程度指标的状态变量frag_score。然后,在按照上述的步骤301至步骤303所示的计算步骤,计算得到目标段的碎片化程度指标之后,将计算结果写入状态跟踪结构体seg_entry中对应的状态变量frag_score。
后续在文件系统的使用过程中,可根据对目标段中的目标数据块的状态更新操作,来更新状态跟踪结构体seg_entry中对应的状态变量frag_score。具体更新过程可详见下面的步骤304至步骤307。
步骤304,当获取到对目标段中的目标数据块的状态更新请求时,电子设备确定目标数据块相邻的数据块中,与更新后的目标数据块状态不相同的数据块的第一个数,以及与更新前的目标数据块状态不相同的数据块的第二个数。
步骤305,电子设备将第一个数与第二个数的差值,作为目标段的第一更新值。
在电子设备的系统运行过程中,若需要对目标段中的目标数据块的状态进行更新,在更新过程中,文件系统每更新一个目标数据块,该目标数据块的局部碎片化分值的改变,可以表示该数据块所在的整个目标段的第一碎片化分值的改变。
当电子设备的文件系统接收到对目标段中的目标数据块的状态更新请求时,电子设备可以确定目标数据块相邻的数据块中,与更新后的目标数据块状态不相同的数据块的第一个数,以及确定目标数据块相邻的数据块中,与更新前的目标数据块状态不相同的数据块的第二个数。然后将第一个数与第二个数的差值,作为目标段的第一更新值。目标段的第一更新值可以理解为目标段的内部碎片化分值的更新值。
在实际应用中,该目标数据块的状态更新请求可以是对目标数据块的数据写入请求,也可以是对目标数据块的数据擦除请求等。
假设目标段中的数据块的总个数为N,且目标数据块为目标段中的第i个数据块。针对目标段中的目标数据块(此时的i=23,4…,N-1),其相邻的数据块为第i-1个数据块和第i+1个数据块,因此,电子设备可确定第i-1个数据块和第i+1个数据块中,与更新后的目标数据块状态不相同的数据块的第一个数,以及与更新前的目标数据块状态不相同的数据块的第二个数。
下面以图6所示的四种场景,依次说明不同场景下第一更新值的具体计算过程。在图6中的(a)至图6中的(d)所示的每种场景中,均通过更新前的三个数据块以及更新后的三个数据块来说明第一更新值的计算过程,这三个数据块从左到右分别表示第i-1个数据块、第i个数据块和第i+1个数据块,并且,图6是以目标数据块为目标段中的第i个数据块为例进行说明的。
第一种场景下,如图6中的(a)所示,以左侧的数据块为更新前的数据块,右侧的数据块为更新后的数据块为例。更新前的目标数据块的状态为可写状态,且第i-1个数据块和第i+1个数据块的状态也均为可写状态,使得第i-1个数据块和第i+1个数据块中,与更新前的目标数据块状态不相同的数据块的第二个数为0;而更新后的目标数据块的状态为不可写状态,且第i-1个数据块和第i+1个数据块的状态依旧为可写状态,使得第i-1个数据块和第i+1个数据块中,与更新后的目标数据块状态不相同的数据块的第一个数为2。因此,这种情况下,目标段的第一更新值为2。
相应的,如图6中的(a)所示,以右侧的数据块为更新前的数据块,左侧的数据块为更新后的数据块为例。更新前的目标数据块的状态为不可写状态,且第i-1个数据块和第i+1个数据块的状态均为可写状态,使得第i-1个数据块和第i+1个数据块中,与更新前的目标数据块状态不相同的数据块的第二个数为2;而更新后的目标数据块的状态为可写状态,且第i-1个数据块和第i+1个数据块的状态依旧为可写状态,使得第i-1个数据块和第i+1个数据块中,与更新后的目标数据块状态不相同的数据块的第一个数为0。因此,这种情况下,目标段的第一更新值为-2。
第二种场景下,如图6中的(b)所示,以左侧的数据块为更新前的数据块,右侧的数据块为更新后的数据块为例。更新前的目标数据块的状态为不可写状态,且第i-1个数据块和第i+1个数据块的状态也均为不可写状态,使得第i-1个数据块和第i+1个数据块中,与更新前的目标数据块状态不相同的数据块的第二个数为0;而更新后的目标数据块的状态为可写状态,且第i-1个数据块和第i+1个数据块的状态依旧为不可写状态,使得第i-1个数据块和第i+1个数据块中,与更新后的目标数据块状态不相同的数据块的第一个数为2。因此,这种情况下,目标段的第一更新值为2。
相应的,如图6中的(b)所示,以右侧的数据块为更新前的数据块,左侧的数据块为更新后的数据块为例。更新前的目标数据块的状态为可写状态,且第i-1个数据块和第i+1个数据块的状态均为不可写状态,使得第i-1个数据块和第i+1个数据块中,与更新前的目标数据块状态不相同的数据块的第二个数为2;而更新后的目标数据块的状态为不可写状态,且第i-1个数据块和第i+1个数据块的状态依旧为不可写状态,使得第i-1个数据块和第i+1个数据块中,与更新后的目标数据块状态不相同的数据块的第一个数为0。因此,这种情况下,目标段的第一更新值为-2。
第三种场景下,如图6中的(c)所示,以左侧的数据块为更新前的数据块,右侧的数据块为更新后的数据块为例。更新前的目标数据块的状态为不可写状态,第i-1个数据块的状态为可写状态,第i+1个数据块的状态为不可写状态,使得第i-1个数据块和第i+1个数据块中,与更新前的目标数据块状态不相同的数据块的第二个数为1;而更新后的目标数据块的状态为可写状态,且第i-1个数据块的状态依旧为可写状态,以及第i+1个数据块的状态依旧为不可写状态,使得第i-1个数据块和第i+1个数据块中,与更新后的目标数据块状态不相同的数据块的第一个数为1。因此,这种情况下,目标段的第一更新值为0。
相应的,如图6中的(c)所示,以右侧的数据块为更新前的数据块,左侧的数据块为更新后的数据块为例。更新前的目标数据块的状态为可写状态,第i-1个数据块的状态为可写状态,第i+1个数据块的状态为不可写状态,使得第i-1个数据块和第i+1个数据块中,与更新前的目标数据块状态不相同的数据块的第二个数为1;而更新后的目标数据块的状态为不可写状态,且第i-1个数据块的状态依旧为可写状态,以及第i+1个数据块的状态依旧为不可写状态,使得第i-1个数据块和第i+1个数据块中,与更新后的目标数据块状态不相同的数据块的第一个数为1。因此,这种情况下,目标段的第一更新值为0。
第四种场景下,如图6中的(d)所示,以左侧的数据块为更新前的数据块,右侧的数据块为更新后的数据块为例。更新前的目标数据块的状态为不可写状态,第i-1个数据块的状态为不可写状态,第i+1个数据块的状态为可写状态,使得第i-1个数据块和第i+1个数据块中,与更新前的目标数据块状态不相同的数据块的第二个数为1;而更新后的目标数据块的状态为可写状态,且第i-1个数据块的状态依旧为不可写状态,以及第i+1个数据块的状态依旧为可写状态,使得第i-1个数据块和第i+1个数据块中,与更新后的目标数据块状态不相同的数据块的第一个数为1。因此,这种情况下,目标段的第一更新值为0。
相应的,如图6中的(d)所示,以右侧的数据块为更新前的数据块,左侧的数据块为更新后的数据块为例。更新前的目标数据块的状态为可写状态,第i-1个数据块的状态为不可写状态,第i+1个数据块的状态为可写状态,使得第i-1个数据块和第i+1个数据块中,与更新前的目标数据块状态不相同的数据块的第二个数为1;而更新后的目标数据块的状态为不可写状态,且第i-1个数据块的状态依旧为不可写状态,以及第i+1个数据块的状态依旧为可写状态,使得第i-1个数据块和第i+1个数据块中,与更新后的目标数据块状态不相同的数据块的第一个数为1。因此,这种情况下,目标段的第一更新值为0。
而针对目标数据块为目标段中的第1个数据块,其相邻的数据块为第2个数据块。因此,若第2个数据块的状态与更新前的第1个数据块的状态相同,则第二个数为0,若第2个数据块的状态与更新后的第1个数据块的状态不相同,则第一个数为1,这种情况下,目标段的第一更新值为1;而若第2个数据块的状态与更新前的第1个数据块的状态不相同,则第二个数为1,若第2个数据块的状态与更新后的第1个数据块的状态相同,则第一个数为0,这种情况下,目标段的第一更新值为-1。
针对目标数据块为目标段中的第N个数据块,其相邻的数据块为第N-1个数据块。因此,若第N-1个数据块的状态与更新前的第N个数据块的状态相同,则第二个数为0,若第N-1个数据块的状态与更新后的第N个数据块的状态不相同,则第一个数为1,这种情况下,目标段的第一更新值为1;而若第N-1个数据块的状态与更新前的第N个数据块的状态不相同,则第二个数为1,若第N-1个数据块的状态与更新后的第N个数据块的状态相同,则第一个数为0,这种情况下,目标段的第一更新值为-1。
步骤306,电子设备根据目标数据块更新后的状态以及目标数据块更新前的状态,确定目标段的第二更新值。
在电子设备的系统运行过程中,若需要对目标段中的目标数据块的状态进行更新,在更新过程中,文件系统每更新一个目标数据块,该目标段的第二碎片化分值的改变,可以仅与该目标数据块的状态是否改变有关。
电子设备可确定目标数据块更新后的状态以及目标数据块更新前的状态,根据目标数据块更新过程中其状态是否发生变化,来确定目标段的第二更新值。目标段的第二更新值可以理解为目标段的外部碎片化分值的更新值。
其中,当目标数据块更新前的状态为不可写状态,而目标数据块更新后的状态为可写状态时,使得目标段的第二更新值为-1;当目标数据块更新前的状态为可写状态,而目标数据块更新后的状态为不可写状态时,使得目标段的第二更新值为1。
步骤307,电子设备采用第一更新值与第二更新值之和,更新目标段的碎片化程度指标。
由于在对目标段中的目标数据块的状态进行更新时,更新操作不仅会改变目标段的内部碎片化分值,也会改变目标段的外部碎片化分值,因此,电子设备可采用第一更新值与第二更新值之和,更新目标段的碎片化程度指标。
具体的,是在状态跟踪结构体seg_entry中对应的状态变量frag_score中,在原本的数据基础上,加上第一更新值与第二更新值的和值。
因此,本申请实施例可采用上述的步骤304至步骤307的执行过程,来更新目标段的碎片化程度指标,其利用局部很少的判断逻辑来实现准确更新目标段的碎片化程度指标的目的,减少了目标段的碎片化程度指标更新时的计算负担,使得可以在系统运行过程中实时更新目标段的碎片化程度指标,来准确描述目标段的碎片化程度。
综上,本申请实施例可以将目标段的碎片化程度的计算过程,拆分成“初始化”和“更新”两个动作来执行,其在挂载文件系统时对目标段的碎片化程度指标进行初始化计算,并在系统运行过程中实时更新目标段的碎片化程度指标,从而以较低的运算负载,实时计算得到目标段的碎片化程度指标。并且,采用上述方式对文件系统的碎片化程度进行定量描述,从而使得文件系统后续在依据各个目标段的碎片化程度指标,来执行垃圾回收操作或者将空间分配方式从顺序分配切换为松弛空间分配时,可提高数据的读写性能。
当然,本申请实施例也可以不采用上述的“初始化”和“更新”,来计算目标段的碎片化程度指标,而是在某些应用场下,若需要使用目标段的碎片化程度指标时,再计算即时的目标段的碎片化程度指标,即时计算目标段的碎片化程度指标的具体实现过程可参照下面图7中对应的描述。
示例性的,图7为本申请实施例提供的另一种文件系统碎片化的评估方法的流程示意图,该方法可以由电子设备100中的文件系统执行。参照图7所示,该文件系统碎片化的评估方法具体可以包括如下步骤:
步骤701,当获取到垃圾回收请求,或空间分配方式变更为松弛空间分配时,电子设备根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定目标段的第一碎片化分值。
在一些实施例中,电子设备中的文件系统可以进行垃圾回收操作,基于垃圾回收操作对存储空间的文件碎片进行整理,从而缓解文件系统的碎片化问题。
文件系统在进行垃圾回收操作之前,需要先评估文件系统中的各个目标段的碎片化的严重程度。因此,当文件系统获取到用于执行垃圾回收操作的垃圾回收请求时,可分别计算出目标段的第一碎片化分值和目标段的第二碎片化分值,从而基于第一碎片化分值和第二碎片化分值,共同来评估目标段的碎片化程度指标。
在一些场景中,文件系统可以每间隔预设周期来执行垃圾回收操作,因此,在每间隔预设周期就生成一垃圾回收请求,并基于每次生成的垃圾回收请求来评估目标段的碎片化程度指标。该预设周期可以为12小时、24小时或48小时等,预设周期的具体时长可根据实际情况进行设定,本申请对此不作限定。
在另一些场景中,用户可通过触控电子设备的触控显示屏、按压物理按键、声控、手势控制等方式,向电子设备输入垃圾回收请求。电子设备中的文件系统每次在获取到该垃圾回收请求之后,就执行一次目标段的碎片化程度指标的评估过程。
再一些场景中,文件系统也可以获取当前剩余的可用存储空间,当文件系统确定可用存储空间的大小小于第一预设阈值(如第一预设阈值为7GB)时,生成垃圾回收请求,以基于垃圾回收请求来评估目标段的碎片化程度指标。
在另一些实施例中,电子设备中的文件系统在进行数据写入操作时,需要基于电子设备中当前剩余的可用存储空间来进行空间分配。其中,文件系统在进行空间分配时,主要有两种分配方式,其分别为顺序分配方式和松弛空间分配方式。
当文件系统确定当前剩余的可用存储空间的大小小于第二预设阈值(如第二预设阈值可以为5GB)时,即当前剩余的可用存储空间紧张时,文件系统会将空间分配方式从顺序分配切换为松弛空间分配。为了提高待写入数据的写入性能以及后续读取该数据的读取性能,可以在将空间分配方式从顺序分配切换为松弛空间分配时,先评估文件系统中的各个目标段的碎片化的严重程度,后续在进行数据写入时,可以优先选取碎片化程度较轻的目标段来进行数据写入。
步骤702,电子设备根据目标段中的各个数据块的状态,确定目标段的第二碎片化分值。
步骤703,电子设备根据第一碎片化分值和第二碎片化分值,评估目标段的碎片化程度指标。
步骤702的具体实现过程与上述的步骤302的具体实现过程类似,步骤703的具体实现过程与上述的步骤303的具体实现过程类似,为避免重复,在此不再赘述。
因此,本申请时可以在获取到垃圾回收请求,或空间分配方式变更为松弛空间分配时,对文件系统的碎片化程度进行定量描述,从而使得文件系统后续在依据各个目标段的碎片化程度指标,来执行垃圾回收操作或者将空间分配方式从顺序分配切换为松弛空间分配时,可提高数据的读写性能。
综上,本申请实施例可通过以上两种方式,来评估文件系统中的目标段的碎片化程度指标,为预测未来的IO性能下降情况提供了依据,也为了文件系统的垃圾回收操作以及松弛空间分配下为待写入数据分配写入的目标段提供了参考维度。
在一些场景中,电子设备在计算得到文件系统中的多个目标段的碎片化程度指标之后,电子设备按照碎片化程度指标从高到低的顺序,对文件系统中的多个目标段进行排序;电子设备对排序靠前的M个目标段进行垃圾回收操作;M为正整数。
电子设备可通过上述计算得到文件系统中的多个目标段的碎片化程度指标,该碎片化程度指标用于表示目标段的碎片化程度。当碎片化程度指标越高时,表示其对应的目标段的碎片化程度越严重,即该目标段中连续的状态为可写状态的数据块越少;当碎片化程度指标越低时,表示其对应的目标段的碎片化程度越轻,即该目标段中连续的状态为可写状态的数据块越多。
若在碎片化程度越严重的目标段中写入数据时,其会严重影响IO性能,因此,碎片化程度比较高的目标段,也就是越需要进行垃圾回收操作的目标段,如此才可以更快地整理存储空间中的文件碎片,以尽快恢复电子设备的性能,提高数据读写性能。
因此,电子设备可以按照碎片化程度指标从高到低的顺序,对文件系统中的多个目标段进行排序。其中,排序靠前的目标段的碎片化程度指标越高,排序靠后的目标段的碎片化程度指标越低。
文件系统中的垃圾回收线程在后台进行运行,以对排序靠前的M个目标段进行垃圾回收操作,将排序靠前的M个目标段内的所有有效数据搬移至其他目标段中,并对排序靠前的M个目标段内的数据进行擦除。
例如,M可以为1,则电子设备是对碎片化程度指标最高的目标段进行垃圾回收操作;或者,M也可以为3,则电子设备是对排序靠前的3个目标段进行垃圾回收操作。
这样,文件系统在进行垃圾回收操作之前,先确定各个目标段的碎片化程度指标,对碎片化程度指标较高的一个或多个目标段进行垃圾回收操作。使得在每次评估各个目标段的碎片化程度指标之后,都可以及时对碎片化程度较高的目标段进行垃圾回收操作,从而提高数据读写性能。
在另一些场景中,电子设备在计算得到文件系统中的多个目标段的碎片化程度指标之后,电子设备按照碎片化程度指标从低到高的顺序,对文件系统中的多个目标段进行排序;电子设备将待写入数据写入排序靠前的K个目标段中;K为正整数。
若在碎片化程度越严重的目标段中写入数据时,其会严重影响IO性能,因此,文件系统在采用松弛空间分配来为待写入数据分配数据块时,碎片化程度比较低的目标段,也就是待写入数据优先写入的数据块,如何才可以使得待写入数据在写入之后,文件系统的碎片化程度不会升高太多,从而改善当前数据写入的性能以及后续读取该数据的读取性能。
因此,电子设备可以按照碎片化程度指标从低到高的顺序,对文件系统中的多个目标段进行排序。其中,排序靠前的目标段的碎片化程度指标越低,排序靠后的目标段的碎片化程度指标越高。
文件系统根据待写入数据的数据量大小分配排序靠前的K个目标段,使得文件系统可以将待写入数据写入分配的K个目标段的数据块中。K的具体数值可根据排序靠前的目标段内的状态为可写状态的空闲块的数量,以及待写入数据的数据量大小共同确定。
这样,文件系统在进行数据写入之前,先确定各个目标段的碎片化程度指标,根据待写入数据的数据量大小分配排序靠前的K个目标段中的数据块来进行数据写入,使得最终写入的数据在存储空间中的连续性较好,从而提高了当前数据写入的性能以及后续读取该数据的读取性能。
上面已对本申请实施例的文件系统碎片化的评估方法进行了说明,下面对本申请实施例提供的执行上述文件系统碎片化的评估方法的电子设备进行描述。本领域技术人员可以理解,方法和装置可以相互结合和引用,本申请实施例提供的电子设备可以执行上述文件系统碎片化的评估方法的步骤。
图8为本申请实施例提供的一种电子设备的硬件结构示意图。图8所示的电子设备100包括:存储器101、处理器110和通信接口102,其中,存储器101、处理器110、通信接口102可以通信;示例性的,存储器101、处理器110和通信接口102可以通过通信总线通信。
存储器101可以是只读存储器(read only memory,ROM),静态存储设备,动态存储设备或者随机存取存储器(random access memory,RAM)。存储器101可以存储计算机程序,该计算机程序可以为本申请实施例提供的文件系统碎片化的评估方法的计算机程序,其由处理器110来控制执行,并由通信接口102来执行通信,从而实现本申请上述实施例提供文件系统碎片化的评估方法。
本实施例的电子设备100对应地可用于执行上述方法实施例中执行的步骤,其实现原理和技术效果类似,此处不再赘述。
本申请实施例还提供了一种计算机可读存储介质。上述实施例中描述的方法可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。如果在软件中实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或者在计算机可读介质上传输。计算机可读介质可以包括计算机存储介质和通信介质,还可以包括任何可以将计算机程序从一个地方传送到另一个地方的介质。存储介质可以是可由计算机访问的任何目标介质。
一种可能的实现方式中,计算机可读介质可以包括RAM,ROM,只读光盘(compactdisc read-only memory,CD-ROM)或其它光盘存储器,磁盘存储器或其它磁存储设备,或目标于承载的任何其它介质或以指令或数据结构的形式存储所需的程序代码,并且可由计算机访问。而且,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆,光纤电缆,双绞线,数字用户线(digital subscriber line,DSL)或无线技术(如红外,无线电和微波)从网站,服务器或其它远程源传输软件,则同轴电缆,光纤电缆,双绞线,DSL或诸如红外,无线电和微波之类的无线技术包括在介质的定义中。如本文所使用的磁盘和光盘包括光盘,激光盘,光盘,数字通用光盘(digital versatile disc,DVD),软盘和蓝光盘,其中磁盘通常以磁性方式再现数据,而光盘利用激光光学地再现数据。上述的组合也应包括在计算机可读介质的范围内。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令(或程序)。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
本申请实施例是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理单元以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理单元执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
以上的具体实施方式,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上仅为本申请的具体实施方式而已,并不用于限定本申请的保护范围,凡在本申请的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本申请的保护范围之内。
Claims (16)
1.一种文件系统碎片化的评估方法,其特征在于,应用于电子设备,所述方法包括:
所述电子设备根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定所述目标段的第一碎片化分值;
所述电子设备根据所述目标段中的各个数据块的状态,确定所述目标段的第二碎片化分值;
所述电子设备根据所述第一碎片化分值和所述第二碎片化分值,评估所述目标段的碎片化程度指标。
2.根据权利要求1所述的方法,其特征在于,所述电子设备根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定所述目标段的第一碎片化分值,包括:
所述电子设备根据所述目标段中的每个数据块与其相邻的数据块之间的状态差异信息,依次确定所述目标段中的每个数据块的局部碎片化分值;
所述电子设备对所述目标段中的各个数据块的局部碎片化分值进行求和,得到所述目标段的第一碎片化分值。
3.根据权利要求2所述的方法,其特征在于,所述电子设备根据所述目标段中的每个数据块与其相邻的数据块之间的状态差异信息,依次确定所述目标段中的每个数据块的局部碎片化分值,包括:
所述电子设备依次确定所述目标段中,与第i个数据块相邻的数据块的状态是否与所述第i个数据块的状态相同;所述i为正整数,所述数据块的状态为可写状态或不可写状态;
所述电子设备将与所述第i个数据块的状态不相同的相邻数据块的个数,作为所述第i个数据块的局部碎片化分值。
4.根据权利要求1所述的方法,其特征在于,所述电子设备根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定所述目标段的第一碎片化分值,包括:
所述电子设备获取所述目标段对应的可写性位图;
所述电子设备根据所述可写性位图,确定左连续性位图和右连续性位图;所述左连续性位图表示所述目标段中的每个数据块与其右侧相邻的数据块之间的状态差异信息,所述右连续性位图表示所述目标段中的每个数据块与其左侧相邻的数据块之间的状态差异信息;
所述电子设备计算所述左连续性位图的汉明距离,得到所述目标段的第一部分分值;
所述电子设备计算所述右连续性位图的汉明距离,得到所述目标段的第二部分分值;
所述电子设备对所述第一部分分值与所述第二部分分值进行求和,得到所述目标段的第一碎片化分值。
5.根据权利要求4所述的方法,其特征在于,所述电子设备根据所述可写性位图,确定左连续性位图和右连续性位图,包括:
所述电子设备将所述可写性位图向左移动一位,得到左移位图;
所述电子设备对所述可写性位图与所述左移位图进行按位取异或操作,得到所述左连续性位图;
所述电子设备将所述可写性位图向右移动一位,得到右移位图;
所述电子设备对所述可写性位图与所述右移位图进行按位取异或操作,得到所述右连续性位图。
6.根据权利要求1所述的方法,其特征在于,所述电子设备根据所述目标段中的各个数据块的状态,确定所述目标段的第二碎片化分值,包括:
所述电子设备依次确定所述目标段中的每个数据块的状态;所述数据块的状态为可写状态或不可写状态;
所述电子设备将目标段中状态为所述不可写状态的数据块的个数,作为所述目标段的第二碎片化分值。
7.根据权利要求1所述的方法,其特征在于,所述电子设备根据所述目标段中的各个数据块的状态,确定所述目标段的第二碎片化分值,包括:
所述电子设备获取所述目标段对应的可写性位图;
所述电子设备对所述可写性位图进行按位取反操作,得到第一取反位图;
所述电子设备计算所述第一取反位图的汉明距离,得到所述目标段的第二碎片化分值。
8.根据权利要求4或7所述的方法,其特征在于,所述电子设备获取所述目标段对应的可写性位图,包括:
所述电子设备获取所述目标段对应的可读性位图和可擦性位图;
所述电子设备对所述可读性位图进行按位取反操作,得到第二取反位图;
所述电子设备对所述第二取反位图与所述可擦性位图进行按位相与操作,得到所述目标段对应的可写性位图。
9.根据权利要求1所述的方法,其特征在于,所述电子设备根据所述第一碎片化分值和所述第二碎片化分值,评估所述目标段的碎片化程度指标,包括:
所述电子设备对所述第一碎片化分值和所述第二碎片化分值进行加权求和,得到所述目标段的碎片化程度指标。
10.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当挂载所述文件系统时,所述电子设备执行所述根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定所述目标段的第一碎片化分值及之后的步骤。
11.根据权利要求10所述的方法,其特征在于,在所述电子设备根据所述第一碎片化分值和所述第二碎片化分值,评估所述目标段的碎片化程度指标之后,还包括:
当获取到对所述目标段中的目标数据块的状态更新请求时,所述电子设备确定所述目标数据块相邻的数据块中,与更新后的目标数据块状态不相同的数据块的第一个数,以及与更新前的目标数据块状态不相同的数据块的第二个数;所述数据块的状态为可写状态或不可写状态;
所述电子设备将所述第一个数与所述第二个数的差值,作为所述目标段的第一更新值;
所述电子设备根据所述目标数据块更新后的状态以及所述目标数据块更新前的状态,确定所述目标段的第二更新值;
所述电子设备采用所述第一更新值与所述第二更新值之和,更新所述目标段的碎片化程度指标。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当获取到垃圾回收请求,或空间分配方式变更为松弛空间分配时,所述电子设备执行所述根据文件系统的目标段中的每个数据块与其相邻的数据块之间的状态差异信息,确定所述目标段的第一碎片化分值及之后的步骤。
13.根据权利要求1所述的方法,其特征在于,在所述电子设备根据所述第一碎片化分值和所述第二碎片化分值,评估所述目标段的碎片化程度指标之后,还包括:
所述电子设备按照碎片化程度指标从高到低的顺序,对所述文件系统中的多个目标段进行排序;
所述电子设备对排序靠前的M个目标段进行垃圾回收操作;所述M为正整数。
14.根据权利要求1所述的方法,其特征在于,在所述电子设备根据所述第一碎片化分值和所述第二碎片化分值,评估所述目标段的碎片化程度指标之后,还包括:
所述电子设备按照碎片化程度指标从低到高的顺序,对所述文件系统中的多个目标段进行排序;
所述电子设备将待写入数据写入排序靠前的K个目标段中;所述K为正整数。
15.一种电子设备,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行如权利要求1至14中任一项所述的文件系统碎片化的评估方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或指令被运行时,实现如权利要求1至14中任一项所述的文件系统碎片化的评估方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210643487.XA CN115168298B (zh) | 2022-06-09 | 2022-06-09 | 文件系统碎片化的评估方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210643487.XA CN115168298B (zh) | 2022-06-09 | 2022-06-09 | 文件系统碎片化的评估方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115168298A true CN115168298A (zh) | 2022-10-11 |
CN115168298B CN115168298B (zh) | 2023-01-31 |
Family
ID=83485519
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210643487.XA Active CN115168298B (zh) | 2022-06-09 | 2022-06-09 | 文件系统碎片化的评估方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115168298B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030149683A1 (en) * | 1998-11-19 | 2003-08-07 | Lee Terry Seto | Method and apparatus for obtaining an identifier for a logical unit of data in a database |
US20110099326A1 (en) * | 2009-10-27 | 2011-04-28 | Samsung Electronics Co., Ltd. | Flash memory system and defragmentation method |
CN106469120A (zh) * | 2016-08-30 | 2017-03-01 | 华为技术有限公司 | 碎片整理方法、装置及设备 |
CN111258972A (zh) * | 2020-01-10 | 2020-06-09 | Oppo广东移动通信有限公司 | 闪存文件系统碎片化的评估方法、装置以及电子设备 |
CN111309267A (zh) * | 2020-02-26 | 2020-06-19 | Oppo广东移动通信有限公司 | 存储空间的分配方法、装置、存储设备及存储介质 |
US10776317B1 (en) * | 2015-03-31 | 2020-09-15 | EMC IP Holding Company LLC | Metadata analytics for online fragmentation detection on Unix file systems and common block file systems |
CN112527694A (zh) * | 2020-12-15 | 2021-03-19 | 深圳星火半导体科技有限公司 | 碎片化程度告警方法及装置 |
-
2022
- 2022-06-09 CN CN202210643487.XA patent/CN115168298B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030149683A1 (en) * | 1998-11-19 | 2003-08-07 | Lee Terry Seto | Method and apparatus for obtaining an identifier for a logical unit of data in a database |
US20110099326A1 (en) * | 2009-10-27 | 2011-04-28 | Samsung Electronics Co., Ltd. | Flash memory system and defragmentation method |
US10776317B1 (en) * | 2015-03-31 | 2020-09-15 | EMC IP Holding Company LLC | Metadata analytics for online fragmentation detection on Unix file systems and common block file systems |
CN106469120A (zh) * | 2016-08-30 | 2017-03-01 | 华为技术有限公司 | 碎片整理方法、装置及设备 |
CN111258972A (zh) * | 2020-01-10 | 2020-06-09 | Oppo广东移动通信有限公司 | 闪存文件系统碎片化的评估方法、装置以及电子设备 |
CN111309267A (zh) * | 2020-02-26 | 2020-06-19 | Oppo广东移动通信有限公司 | 存储空间的分配方法、装置、存储设备及存储介质 |
CN112527694A (zh) * | 2020-12-15 | 2021-03-19 | 深圳星火半导体科技有限公司 | 碎片化程度告警方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115168298B (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111506262B (zh) | 一种存储系统、文件存储和读取方法及终端设备 | |
CA2942443C (en) | Method for storing data by storage device and storage device | |
US8200889B2 (en) | Variable space page mapping method and apparatus for flash memory device | |
CN106610790B (zh) | 一种重复数据删除方法及装置 | |
US9239780B2 (en) | Selection of memory blocks for garbage collection based on variable block life threshold | |
US9201787B2 (en) | Storage device file system and block allocation | |
CN106775474B (zh) | 一种Nand Flash磨损均衡方法、装置及存储器 | |
CN110554999B (zh) | 基于日志式文件系统和闪存设备的冷热属性识别和分离方法、装置以及相关产品 | |
US8615624B2 (en) | Methods, apparatuses, and computer program products for enhancing memory erase functionality | |
US20190370009A1 (en) | Intelligent swap for fatigable storage mediums | |
CN113254362A (zh) | 存储设备和存储器控制器的操作方法 | |
CN102859504A (zh) | 有效分区存储缓存 | |
KR20160075703A (ko) | 비휘발성 메모리를 위한 전송 버퍼의 관리 | |
CN115168298B (zh) | 文件系统碎片化的评估方法及电子设备 | |
CN115934002B (zh) | 固态硬盘的访问方法、固态硬盘、存储系统及云服务器 | |
KR20150142250A (ko) | 컨트롤러의 작동 방법과 상기 컨트롤러를 포함하는 장치의 작동 방법 | |
CN116701298A (zh) | 一种文件系统管理方法及电子设备 | |
US20130318302A1 (en) | Cache controller based on quality of service and method of operating the same | |
US9804968B2 (en) | Storage system and data writing method | |
US9990278B2 (en) | Overlaid erase block mapping | |
CN109032965B (zh) | 一种数据读取方法、主机及存储设备 | |
KR102218737B1 (ko) | 다중-스트림 스킴에서 희생 스트림 선택 알고리즘들 | |
CN116049021B (zh) | 存储空间管理方法、电子设备及计算机可读存储介质 | |
CN111796757A (zh) | 一种固态硬盘缓存区管理方法和装置 | |
US20190034342A1 (en) | Cache design technique based on access distance |
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 |