CN111459405A - 磁盘性能优化方法、装置、设备及计算机可读存储介质 - Google Patents
磁盘性能优化方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111459405A CN111459405A CN202010146235.7A CN202010146235A CN111459405A CN 111459405 A CN111459405 A CN 111459405A CN 202010146235 A CN202010146235 A CN 202010146235A CN 111459405 A CN111459405 A CN 111459405A
- Authority
- CN
- China
- Prior art keywords
- cluster
- dirty
- data
- dirty bit
- size
- 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
Images
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/061—Improving I/O performance
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- 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/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0674—Disk device
- G06F3/0676—Magnetic disk device
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)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及云技术领域,公开了一种磁盘性能优化方法,包括以下步骤:获取簇偏移,基于所述簇偏移分配缓存项,所述簇偏移为簇的初始大小与簇的实际大小之间的差值;在所述缓存项内设置刷写参数,所述刷写参数包括脏位粒度和脏位位图大小;根据所述脏位位图大小和预置公式确定目标脏位位图并初始化所述目标脏位位图;判断磁盘是否接收到刷写数据的请求;若所述磁盘接收到所述刷写数据的请求,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写。本发明还公开了一种磁盘性能优化装置、设备及计算机可读存储介质。本发明提供的磁盘性能优化方法提高了磁盘的性能。
Description
技术领域
本发明涉及缓存数据分配技术领域,尤其涉及一种磁盘性能优化方法、装置、设备及计算机可读存储介质。
背景技术
现有技术中,由于主机端写入数据序列的差异,会产生冷热数据。冷数据被更新的频率很低,其所占用的块block被擦写的次数很少,而热数据所占用的块被擦写的次数很多。如果不做特殊的磨损均衡处理,热数据占用的块被频繁使用,将提前到达其寿命。因此,需要不断地把冷数据搬移到擦写次数较多的块上,而将热数据写入到擦除次数较少的块上,达到磨损均衡的效果,这样做的结果势必会增加搬移数据的次数,从而产生写入放大现象,从而导致虚拟磁盘的性能下降。
只要缓存项中存在项的更新,那么在缓存时就会整块地写入文件,以簇大小为4M为例,假设用户随机写4K,当随机写4K的区域要分配新的簇时,这些写操作会引起4M大小的二级索引表缓存项的刷写和4M大小的引用计数表缓存项的刷写,额外带来8M的元数据写入放大。从而导致虚拟磁盘的实际使用空间变少,性能下降。
发明内容
本发明的主要目的在于提供一种磁盘性能优化方法、装置、设备及计算机可读存储介质,旨在解决磁盘性能低的技术问题。
为实现上述目的,本发明提供一种磁盘性能优化方法,所述磁盘性能优化方法包括以下步骤:
获取簇偏移,基于所述簇偏移分配缓存项,所述簇偏移为簇的初始大小与簇的实际大小之间的差值;
在所述缓存项内设置刷写参数,所述刷写参数包括脏位粒度和脏位位图大小,其中,所述脏位位图大小等于簇的实际大小与脏位粒度的比值,所述脏位位图大小用于指示存储脏数据的脏位位图的总位数,所述脏位粒度用于指示每一个位表示的数据量;
根据所述脏位位图大小和预置公式确定目标脏位位图并初始化所述目标脏位位图;
判断磁盘是否接收到刷写数据的请求;
若所述磁盘接收到所述刷写数据的请求,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写。
可选地,所述若所述磁盘接收到所述刷写数据的请求,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写,包括:
若所述磁盘接收到刷写数据的请求,则判断引用计数块中的任一引用计数项是否发生更新,其中,所述引用计数块为磁盘中用于记录引用计数项的模块,所述引用计数项用于记录缓存有数据的位图;
若引用计数块中的任一引用计数项发生更新,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写。
可选地,所述若所述磁盘接收到所述刷写数据的请求,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写,包括:
若所述磁盘接收到刷写数据的请求,则判断引用计数块中的任一引用计数项是否发生更新,其中,所述引用计数块为磁盘中用于记录引用计数项的模块,所述引用计数项用于记录缓存有数据的位图;
若引用计数块中的任一引用计数项发生更新,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写。
可选地,在所述获取簇偏移,并基于所述簇偏移分配缓存项之后,在所述缓存项内设置刷写参数,所述刷写参数包括脏位粒度和脏位位图大小之前还包括:
判断一级索引项是否索引到历史二级索引表,所述一级索引项与所述历史二级索引表存在预置映射关系,所述一级索引项用于索引历史二级索引表;
若所述一级索引项索引到所述历史二级索引表,则将所述历史二级索引表加载至缓存项中。
可选地,在所述获取簇偏移,基于所述簇偏移分配缓存项,所述簇偏移为簇的初始大小与簇的实际大小之间的差值之前,还包括:
通过一级索引项索引目标二级索引表;
为所述目标二级索引表分配簇。
可选地,在所述为所述目标二级索引表分配簇之后,在所述获取簇偏移,基于所述簇偏移分配缓存项,所述簇偏移为簇的初始大小与簇的实际大小之间的差值之前,还包括:
判断簇是否直接可用;
若簇直接可用,则计算直接可用的簇的数量。
可选地,所述判断簇是否直接可用包括:
根据目标二级索引表获取起始二级索引项,其中,所述目标二级索引表与起始二级索引项存在预置映射关系;
根据所述起始二级索引项判断所述簇的最高位是否为预设值;
若所述起始二级索引项的最高位为预设值,则判定所述簇直接可用。
可选地,所述若簇直接可用,则计算直接可用的簇的数量,包括:
进一步地,为实现上述目的,本发明还提供一种磁盘性能优化装置,所述磁盘性能优化装置包括以下模块:
获取模块,用于获取簇偏移,基于所述簇偏移分配缓存项,所述簇偏移为簇的初始大小与簇的实际大小之间的差值;
设置模块,用于在所述缓存项内设置刷写参数,所述刷写参数包括脏位粒度和脏位位图大小,其中,所述脏位位图大小等于簇的实际大小与脏位粒度的比值,所述脏位位图大小用于指示存储脏数据的脏位位图的总位数,所述脏位粒度用于指示每一个位表示的数据量;
脏位位图分配模块,用于根据所述脏位位图大小和预置公式确定目标脏位位图并初始化所述目标脏位位图;
刷写数据判断模块,用于判断磁盘是否接收到刷写数据的请求;
脏数据识别模块,用于若所述磁盘接收到所述刷写数据的请求,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写。
可选地,所述脏脏数据识别模块包括:
引用计数项判断单元,用于若所述磁盘接收到刷写数据的请求,则判断引用计数块中的任一引用计数项是否发生更新,其中,所述引用计数块为磁盘中用于记录引用计数项的模块,所述引用计数项用于记录缓存有数据的位图;
目标脏位位图识别单元,用于若引用计数块中的任一引用计数项发生更新,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写。
可选地,所述磁盘性能优化装置还包括:
历史二级索引表索引判断模块,用于判断一级索引项是否索引到历史二级索引表,所述一级索引项与所述历史二级索引表存在预置映射关系,所述一级索引项用于索引历史二级索引表;
加载模块,用于若所述一级索引项索引到所述历史二级索引表,则将所述历史二级索引表加载至缓存项中。
可选地,所述磁盘性能优化装置还包括:
目标二级索引表索引模块,用于通过一级索引项索引目标二级索引表;
二级索引表分配簇模块,用于为所述目标二级索引表分配簇。
可选地,所述磁盘性能优化装置还包括:
簇直接可用判断模块,用于判断簇是否直接可用;
计算模块,用于若簇直接可用,则计算直接可用的簇的数量。
可选地,所述簇直接可用判断模块包括:
起始二级索引项获取单元,用于根据目标二级索引表获取起始二级索引项,其中,所述目标二级索引表与起始二级索引项存在预置映射关系;
簇的最高位判断单元,用于根据所述起始二级索引项判断所述簇的最高位是否为预设值;
簇直接可用判定单元,用于若所述起始二级索引项的最高位为预设值,则判定所述簇直接可用。
可选地,所述计算模块包括以下单元:
进一步地,为实现上述目的,本发明还提供一种磁盘性能优化设备,所述磁盘性能优化设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的磁盘性能优化程序,所述磁盘性能优化程序被所述处理器执行时实现如上述任一项所述的磁盘性能优化方法的步骤。
进一步地,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有磁盘性能优化程序,所述磁盘性能优化程序被处理器执行时实现如上述任一项所述的磁盘性能优化方法的步骤。
本发明通过预置标记程序标记所述缓存项中脏位位图的所有位,以及将所述缓存项中脏位位图中的脏数据刷写入文件中,避免重复刷写数据,读写数据的最小单位是页page,1page一般为4KB,而擦除的数据的最小单位是块block,1block为64页,即256KB,理想状态下,写入主存多少数据,也要写入闪存多少数据,但是在实际场景中,还要在计算上写出脏数据的量,即数据在写入的时候要消耗磁盘性能,写出时候还要消耗磁盘性能,因此造成了写放大,写放大指的是实际写入的数据量与应当写入的数据量的比值,例如,应当写入的4KB,实际写入是8KB(写入的时候是4KB,若是脏数据,还要将4KB的脏数据擦除,因此是8KB,但是擦除的最小单位是256KB)。本发明对脏数据进行识别,仅刷写脏数据,避免将所有的数据都进行刷写,减小了写放大,提高了磁盘性能。
附图说明
图1为本发明实施例方案涉及的磁盘性能优化设备运行环境的结构示意图;
图2为本发明磁盘性能优化方法的第一实施例的流程示意图;
图3为图2中步骤S50的一个实施例的细化流程示意图;
图4为本发明磁盘性能优化方法的第二实施例的流程示意图;
图5为本发明磁盘性能优化装置的一个实施例的功能模块示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
本发明实施例涉及的磁盘性能优化方法主要应用于磁盘性能优化设备,该磁盘性能优化设备可以是PC、便携计算机、移动终端等具有显示和处理功能的设备。
参照图1,图1为本发明实施例方案中涉及的磁盘性能优化设备的硬件结构示意图。本发明实施例中,磁盘性能优化设备可以包括处理器1001(例如CPU),通信总线1002,用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信;用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard);网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口);存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器,存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的硬件结构并不构成对磁盘性能优化设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
继续参照图1,图1中作为一种计算机可读存储介质的存储器1005可以包括操作系统、网络通信模块以及磁盘性能优化程序。
在图1中,网络通信模块主要用于连接服务器,与服务器进行数据通信;而处理器1001可以调用存储器1005中存储的磁盘性能优化程序,并执行本发明实施例提供的磁盘性能优化方法。
本发明实施例提供了一种磁盘性能优化方法。
参照图2,图2为本发明磁盘性能优化方法的第一实施例的流程示意图。本实施例中,磁盘性能优化方法包括:
步骤S10,获取簇偏移,基于簇偏移分配缓存项,簇偏移为初始簇大小和簇的实际大小的差值;
本实施例中,簇偏移为初始簇大小和簇的实际大小的差值,在获取到簇偏移后,会根据簇偏移的大小分配缓存项。
步骤S20,在缓存项内设置刷写参数,刷写参数包括脏位粒度和脏位位图大小,其中,脏位位图大小等于簇的实际大小与脏位粒度的比值,脏位位图大小用于指示存储脏数据的脏位位图的总位数,脏位粒度用于指示每一个位表示的数据量;
本实施例中,脏位位图大小为簇大小与脏位粒度的比值,在根据脏位位图大小和预置公式确定目标脏位位图并初始化目标脏位位图时,预置公式为:目标脏位位图=脏位位图大小/8。可以通过监控写入块内的数据的数量来作为是否需要刷写数据的依据,例如,数据量占块空间的50%时,则说明存在刷写数据的请求。
在Qcow2虚拟磁盘缓存项中预先设置脏位位图、脏位位图大小、脏位粒度,其中,脏位位图表示缓存项的脏数据区域位图,脏位位图大小表示脏位位图的总位数,脏位粒度代表每一位脏位位图表示的缓存项中数据量。其中,脏位位图表示缓存项的脏数据区域位图,脏位位图大小表示脏位位图的总位数,脏位粒度代表每一位脏位位图表示的缓存项中数据量,脏位粒度参数默认为4KB。
为qcow2虚拟磁盘设置新增缓存项脏位粒度参数,其中,参数默认为4KB。
步骤S30,根据脏位位图大小和预置公式确定目标脏位位图并初始化目标脏位位图;
本实施例中,预置公式为数据存储磁盘时是以簇为单位的,在分配簇及释放簇时,需要更新簇的引用计数,根据相应簇索引,簇索引与簇相对应,可以通过映射建立对应关系,簇索引预先部署于缓存项中,当缓存项中的簇引用次数为零时,则将簇释放,否则,更新引用计数项,根据缓存项中的簇索引更新脏位位图中的相应的位为1,具体第几个脏位的计算方法为:缓存项中索引*引用计数总位数/8/脏位粒度。
步骤S40,判断磁盘是否接收到刷写数据的请求;
步骤S50,若磁盘接收到刷写数据的请求,则通过目标脏位位图识别对应的脏数据,并对脏数据进行刷写。
本实施例中,对于簇写后更新二级索引表缓存项表项,通过二级索引计算相应dirty_bit,具体第几个脏位的计算方法为二级索引*8/脏位粒度,当调用qcow2虚拟磁盘数据刷写流程时,对于被更新缓存项,根据该缓存项的起始文件簇偏移,脏位位图,脏位粒度求需要刷写的脏数据区域,刷写到后端文件中。
通过位图标记缓存项中脏位位图的所有位,以及将缓存项中脏位位图中的脏数据刷写入文件中,避免重复刷写数据,读写数据的最小单位是页page,1page一般为4KB,而擦除的数据的最小单位是块block,1block为64页,即256KB,理想状态下,写入主存多少数据,也要写入闪存多少数据,但是在实际场景中,还要在计算上写出脏数据的量,即数据在写入的时候要消耗磁盘性能,写出时候还要消耗磁盘性能,因此造成了写放大,写放大指的是实际写入的数据量与应当写入的数据量的比值,例如,应当写入的4KB,实际写入是8KB(写入的时候是4KB,若是脏数据,还要将4KB的脏数据擦除,因此是8KB,但是擦除的最小单位是256KB)。本发明对脏数据进行识别,仅刷写脏数据,避免对所有的数据都进行刷写,减小了写放大,提高了磁盘性能。
参照图3,图3为图2中步骤S50的一个实施例的细化流程示意图。本实施例中,步骤S50包括:
步骤S501,若磁盘接收到刷写数据的请求,则判断引用计数块中的任一引用计数项是否发生更新,其中,引用计数块为磁盘中用于记录引用计数项的模块,引用计数项用于记录缓存有数据的位图;
本实施例中,若虚拟磁盘当前存在刷写数据的请求,则判断初始缓存项索引个数是否小于缓存表中缓存项个数。
步骤S502,若引用计数块中的任一引用计数项发生更新,则通过目标脏位位图识别对应的脏数据,并对脏数据进行刷写。
本实施例中,若引用计数块中的任一引用计数项发生更新,则说明有处于脏数据状态的数据,若存在处于脏数据状态的数据,则可通过缓存项中的脏位位图判断缓存项中哪些区域为脏,将脏的区域刷写到文件中。
通过预置标记程序标记缓存项中脏位位图的所有位,以及将缓存项中脏位位图中的脏数据刷写入文件中,避免重复刷写数据,减小了写放大,提高了磁盘性能。
参照图4,图4为本发明磁盘性能优化方法的第二实施例的流程示意图。本实施例中,在步骤S10之前,还包括:
步骤S60,判断一级索引项是否索引到历史二级索引表,一级索引项与历史二级索引表存在预置映射关系,一级索引项用于索引历史二级索引表;
本实施例中,判断一级索引项是否直接可用目的是,判断是否可以通过一级索引项中所表示的二级索引表的簇偏移,直接从文件中加载二级索引表,因为对于二级索引表有以下几种情况需要考虑:(1)活动一级索引表项(即实时读写所用一级索引表),其中,二级索引表直接可用,即该二级索引表已分配且不被其他快照一级索引表项索引到;(2)已分配但也被其他快照中一级索引表中表项索引;(3)未分配,此时一级索引项为0。
步骤S70,若一级索引项索引到历史二级索引表,则将历史二级索引表加载至缓存项中。
本实施例中,每个一级索引项为8字节,即64位,最高位表示该索引项是否直接可用,第0到55位即低的56位表示二级索引表簇偏移,若最高位表示该索引项直接可用,则从文件中将二级索引表加载到缓存中。
将缓存项全部写0代表的是由二级索引表索引的簇尚未分配。因为qcow2是支持写时分配的,即写到具体位置才会分配簇。到这一步骤为止,要写的簇还未分配,只是到达分配二级索引表簇阶段,因此要先把二级索引表全部写0。预先设置通过预置标记程序标记缓存项中脏位位图的所有位,以及将缓存项中脏位位图中的脏数据刷写入文件中的规则,将缓存项中相应的脏位位图,标记为1是通过程序自动标识而实现的,因为这一方案已经将缓存项刷写流程更改为根据缓存项脏位位图进行刷写。通过预置标记程序标记缓存项中脏位位图的所有位,以及将缓存项中脏位位图中的脏数据刷写入文件中,避免重复刷写数据,减小了写放大,提高了磁盘性能。
以下为本发明磁盘性能优化方法的第三个实施例。本实施例中,在步骤S10,之前,还包括:
步骤S90,通过一级索引项索引目标二级索引表;
步骤S100,为所述目标二级索引表分配簇。
本实施例中,采用二级索引机制,因此需要根据预先设置好的一级索引项与目标二级索引表之间的映射关系,索引到目标二级索引表,为所述目标二级索引表分配簇,每一个二级索引项为64位,最高位为1表示直接可用,此时无须分配新的簇,否则,表示需要分配新的簇。簇需要分配新的簇也有两种情况,一种是簇未分配,此时二级索引项为全0,一种是簇被其他快照索引,这两种情况都要做写拷贝,簇未分配时在该qcow2虚拟磁盘存在母卷时需要从母卷中读取数据,簇被其他快照索引时需要从原簇中拷贝数据。
本实施例中,若一级索引项表示的二级索引表簇偏移全0,则表示二级索引表未分配过,即不存在历史二级索引表,若非全0,则表示存在历史二级索引表;当一级索引表项表示二级索引表簇偏移非全0时,则需要拷贝旧的二级索引表。
以下为本发明磁盘性能优化方法的第四个实施例。本实施例中,在步骤S20之后,还包括:
步骤S110,判断簇是否直接可用;
步骤S120,若簇直接可用,则计算可用簇的数量,
本实施例中,计算方法为:
(1)所求二级索引为起始二级索引;
(2)求终点二级索引,若(簇偏移+长度)/(簇大小*簇内二级索引项个数)等于(簇偏移/(簇大小*簇内二级索引项个数)),表示此次要写整个区域的簇都能通过相同的二级索引表索引,终点二级索引=((簇偏移+长度)/簇大小)%(二级索引项),否则终点二级索引项为簇内二级索引项数量减1;
(3)令索引为起始二级索引加1,连续簇数量为1,至索引最大值为所求终点索引,若所求二级索引项置了直接可用标志且所表簇偏移为前一索引项所表簇偏移加簇大小,则连续簇加1,否则,可写长度为MIN((连续簇数量*簇大小–簇偏移簇内簇偏移),长度),其中,簇偏移簇内簇偏移=簇偏移%簇大小,文件中簇偏移为起始二级索引项所表簇文件簇偏移加簇偏移簇内簇偏移。
以下为本发明磁盘性能优化方法的第五个实施例。本实施例中,步骤S110包括:
步骤S1101,根据目标二级索引表获取起始二级索引项,其中,所述目标二级索引表与起始二级索引项存在预置映射关系;
步骤S1102,根据所述起始二级索引项判断所述簇的最高位是否为预设值;
步骤S1103,若所述起始二级索引项的最高位为预设值,则判定所述簇直接可用。
本实施例中,每一个二级索引项为64位,若是最高位为1,则表示直接可用,此时无须分配新的簇,若最高位为0,则表示需要分配新的簇。需要分配新的簇也有两种情况,一种是簇未分配,此时二级索引项为全0,一种是簇被其他快照索引,这两种情况都要做写拷贝,簇未分配时在该qcow2虚拟磁盘存在母卷时需要从母卷中读取数据,簇被其他快照索引时需要从原簇中拷贝数据。
以下为步骤S120的细化流程。本实施例中,步骤S120包括:
簇的预设长度是预先设置好的,例如,可将簇的预设长度预先设置为64KB,若簇的实际大小为64KB,则64KB长度的簇的数量为1,根据二级索引表簇偏移、所分配簇起始簇偏移和连续分配簇个数,更新二级索引缓存项中二级索引项并记录历史二级索引项,并根据被更新二级索引缓存项更新缓存项中的脏位,释放历史二级索引项所表示的簇(即解引用),即将所表簇的引用计数减1。
Qemu-kvm写qcow2虚拟磁盘时,主要有两种情形下刷写缓存:1.该qcow2虚拟磁盘禁用cache,那么每次写操作后都会有刷写二级索引表缓存(只刷被更新过的二级索引缓存项,即有新的簇被分配)和引用计数块缓存(只刷被更新过的引用计数块缓存项,即有新的簇被分配);2,客户操作系统调用FLUSH(刷缓存)操作时,会将二级索引表缓存和引用计数块缓存刷入文件。
对于原来的实现,只要每次缓存项中存在项的更新,那么在缓存时就会整块地写入文件,我们以簇大小为4M为例,假设用户写模型为随机写4K,当随机写4K的区域要分配新的簇时,这些写操作会引起4M大小的二级索引表缓存项的刷写和4M大小的引用计数表缓存项的刷写,额外带来8M元数据写放大。
在缓存项中加上脏位位图时,假设每个脏位表示4KB大小的区域,那么这种元数据写放大可以减少的4KB+4KB=8KB,极大地减少需分配新的簇进行写操作时带来的元数据的写放大。
通过预置标记程序标记缓存项中脏位位图的所有位,以及将缓存项中脏位位图中的脏数据刷写入文件中,避免重复刷写数据,减小了写放大,提高了磁盘性能。
参照图5,图5为本发明磁盘性能优化装置的一个实施例的功能模块示意图。本实施例中,磁盘性能优化装置包括:
获取模块10,用于获取簇偏移,基于所述簇偏移分配缓存项,所述簇偏移为簇的初始大小与簇的实际大小之间的差值;
设置模块20,用于在所述缓存项内设置刷写参数,所述刷写参数包括脏位粒度和脏位位图大小,其中,所述脏位位图大小等于簇的实际大小与脏位粒度的比值,所述脏位位图大小用于指示存储脏数据的脏位位图的总位数,所述脏位粒度用于指示每一个位表示的数据量;
脏位位图分配模块30,用于根据所述脏位位图大小和预置公式确定目标脏位位图并初始化所述目标脏位位图;
刷写数据判断模块40,用于判断磁盘是否接收到刷写数据的请求;
脏数据识别模块50,用于若所述磁盘接收到所述刷写数据的请求,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写。
本发明还提供一种计算机可读存储介质。
本实施例中,所述计算机可读存储介质上存储有磁盘性能优化程序,所述磁盘性能优化程序被处理器执行时实现如上述任一项实施例中所述的磁盘性能优化方法的步骤。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器或者网络设备等)执行本发明各个实施例所述的方法。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,这些均属于本发明的保护之内。
Claims (10)
1.一种磁盘性能优化方法,其特征在于,所述磁盘性能优化方法包括:
获取簇偏移,基于所述簇偏移分配缓存项,所述簇偏移为簇的初始大小与簇的实际大小之间的差值;
在所述缓存项内设置刷写参数,所述刷写参数包括脏位粒度和脏位位图大小,其中,所述脏位位图大小等于簇的实际大小与脏位粒度的比值,所述脏位位图大小用于指示存储脏数据的脏位位图的总位数,所述脏位粒度用于指示每一个位表示的数据量;
根据所述脏位位图大小和预置公式确定目标脏位位图并初始化所述目标脏位位图;
判断磁盘是否接收到刷写数据的请求;
若所述磁盘接收到所述刷写数据的请求,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写。
2.如权利要求1所述的磁盘性能优化方法,其特征在于,所述若所述磁盘接收到所述刷写数据的请求,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写,包括:
若所述磁盘接收到刷写数据的请求,则判断引用计数块中的任一引用计数项是否发生更新,其中,所述引用计数块为磁盘中用于记录引用计数项的模块,所述引用计数项用于记录缓存有数据的位图;
若引用计数块中的任一引用计数项发生更新,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写。
3.如权利要求1所述的磁盘性能优化方法,其特征在于,在所述获取簇偏移,并基于所述簇偏移分配缓存项之后,在所述缓存项内设置刷写参数,所述刷写参数包括脏位粒度和脏位位图大小之前还包括:
判断一级索引项是否索引到历史二级索引表,所述一级索引项与所述历史二级索引表存在预置映射关系,所述一级索引项用于索引历史二级索引表;
若所述一级索引项索引到所述历史二级索引表,则将所述历史二级索引表加载至缓存项中。
4.如权利要求3所述的磁盘性能优化方法,其特征在于,在所述获取簇偏移,基于所述簇偏移分配缓存项,所述簇偏移为簇的初始大小与簇的实际大小之间的差值之前,还包括:
通过一级索引项索引目标二级索引表;
为所述目标二级索引表分配簇。
5.如权利要求4所述的磁盘性能优化方法,其特征在于,在所述为所述目标二级索引表分配簇之后,在所述获取簇偏移,基于所述簇偏移分配缓存项,所述簇偏移为簇的初始大小与簇的实际大小之间的差值之前,还包括:
判断簇是否直接可用;
若簇直接可用,则计算直接可用的簇的数量。
6.如权利要求5所述的磁盘性能优化方法,其特征在于,所述判断簇是否直接可用包括:
根据目标二级索引表获取起始二级索引项,其中,所述目标二级索引表与起始二级索引项存在预置映射关系;
根据所述起始二级索引项判断所述簇的最高位是否为预设值;
若所述起始二级索引项的最高位为预设值,则判定所述簇直接可用。
8.一种磁盘性能优化装置,其特征在于,所述磁盘性能优化装置包括以下模块:
获取模块,用于获取簇偏移,基于所述簇偏移分配缓存项,所述簇偏移为簇的初始大小与簇的实际大小之间的差值;
设置模块,用于在所述缓存项内设置刷写参数,所述刷写参数包括脏位粒度和脏位位图大小,其中,所述脏位位图大小等于簇的实际大小与脏位粒度的比值,所述脏位位图大小用于指示存储脏数据的脏位位图的总位数,所述脏位粒度用于指示每一个位表示的数据量;
脏位位图分配模块,用于根据所述脏位位图大小和预置公式确定目标脏位位图并初始化所述目标脏位位图;
刷写数据判断模块,用于判断磁盘是否接收到刷写数据的请求;
脏数据识别模块,用于若所述磁盘接收到所述刷写数据的请求,则通过所述目标脏位位图识别对应的脏数据,并对所述脏数据进行刷写。
9.一种磁盘性能优化设备,其特征在于,所述磁盘性能优化设备包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的磁盘性能优化程序,所述磁盘性能优化程序被所述处理器执行时实现如权利要求1-7中任一项所述的磁盘性能优化方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有磁盘性能优化程序,所述磁盘性能优化程序被处理器执行时实现如权利要求1-7中任一项所述的磁盘性能优化方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010146235.7A CN111459405A (zh) | 2020-03-05 | 2020-03-05 | 磁盘性能优化方法、装置、设备及计算机可读存储介质 |
PCT/CN2020/099512 WO2021174731A1 (zh) | 2020-03-05 | 2020-06-30 | 磁盘性能优化方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010146235.7A CN111459405A (zh) | 2020-03-05 | 2020-03-05 | 磁盘性能优化方法、装置、设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111459405A true CN111459405A (zh) | 2020-07-28 |
Family
ID=71683214
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010146235.7A Pending CN111459405A (zh) | 2020-03-05 | 2020-03-05 | 磁盘性能优化方法、装置、设备及计算机可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111459405A (zh) |
WO (1) | WO2021174731A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112380004A (zh) * | 2020-11-04 | 2021-02-19 | 成都佰维存储科技有限公司 | 内存管理方法、装置、计算机可读存储介质及电子设备 |
CN112835528A (zh) * | 2021-02-22 | 2021-05-25 | 北京金山云网络技术有限公司 | 脏页刷新方法和装置、电子设备和存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113961153B (zh) * | 2021-12-21 | 2022-11-04 | 杭州趣链科技有限公司 | 一种索引数据写入磁盘的方法、装置及终端设备 |
CN115268798B (zh) * | 2022-09-27 | 2023-01-10 | 天津卓朗昆仑云软件技术有限公司 | 缓存数据的刷脏方法和系统 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049397B (zh) * | 2012-12-20 | 2015-09-16 | 中国科学院上海微系统与信息技术研究所 | 一种基于相变存储器的固态硬盘内部缓存管理方法及系统 |
US9223713B2 (en) * | 2013-05-30 | 2015-12-29 | Hewlett Packard Enterprise Development Lp | Allocation of cache to storage volumes |
US20180067854A1 (en) * | 2016-09-07 | 2018-03-08 | Intel Corporation | Aggressive write-back cache cleaning policy optimized for non-volatile memory |
US20190188156A1 (en) * | 2017-12-19 | 2019-06-20 | Seagate Technology Llc | Stripe aligned cache flush |
CN109783023A (zh) * | 2019-01-04 | 2019-05-21 | 平安科技(深圳)有限公司 | 一种数据下刷的方法和相关装置 |
-
2020
- 2020-03-05 CN CN202010146235.7A patent/CN111459405A/zh active Pending
- 2020-06-30 WO PCT/CN2020/099512 patent/WO2021174731A1/zh active Application Filing
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112380004A (zh) * | 2020-11-04 | 2021-02-19 | 成都佰维存储科技有限公司 | 内存管理方法、装置、计算机可读存储介质及电子设备 |
CN112380004B (zh) * | 2020-11-04 | 2023-06-13 | 成都佰维存储科技有限公司 | 内存管理方法、装置、计算机可读存储介质及电子设备 |
CN112835528A (zh) * | 2021-02-22 | 2021-05-25 | 北京金山云网络技术有限公司 | 脏页刷新方法和装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2021174731A1 (zh) | 2021-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110678836B (zh) | 用于键值存储的持久性存储器 | |
CN111459405A (zh) | 磁盘性能优化方法、装置、设备及计算机可读存储介质 | |
US11960393B2 (en) | Data processing method and apparatus, and flash device | |
US10739996B1 (en) | Enhanced garbage collection | |
US8572309B2 (en) | Apparatus and method to protect metadata against unexpected power down | |
US11429284B2 (en) | Data categorization based on invalidation velocities | |
US20120317337A1 (en) | Managing data placement on flash-based storage by use | |
US8966160B2 (en) | Storage device trimming | |
CN109976671A (zh) | 一种读干扰处理方法、装置、设备及可读存储介质 | |
CN105917303B (zh) | 一种控制器、识别数据块稳定性的方法和存储系统 | |
CN110309077B (zh) | 主机与设备协同工作的闪存转换层构建方法及装置 | |
CN108073359B (zh) | 数据储存装置的操作方法 | |
US9524236B1 (en) | Systems and methods for performing memory management based on data access properties | |
CN110347338B (zh) | 混合内存数据交换处理方法、系统及可读存储介质 | |
KR20120045421A (ko) | 메모리 시스템 및 데이터 저장 장치 그리고 그것의 데이터 관리 방법 | |
CN113434470B (zh) | 数据分布方法、装置及电子设备 | |
CN106326132B (zh) | 存储系统、存储管理装置、存储器、混合存储装置及存储管理方法 | |
CN111190835B (zh) | 一种数据写入方法、装置、设备及介质 | |
KR101026634B1 (ko) | 하이브리드 플래시 메모리의 데이터 저장 방법 | |
CN115168259B (zh) | 一种数据存取方法、装置、设备和计算机可读存储介质 | |
CN110658999B (zh) | 一种信息更新方法、装置、设备及计算机可读存储介质 | |
CN112379831A (zh) | 数据管理方法、装置、计算机设备和存储介质 | |
JP6430039B2 (ja) | 記憶装置および記憶装置の制御方法 | |
KR101101038B1 (ko) | 플래시메모리 기반 데이터베이스 관리 시스템 및 이를 위한 페이지 합병 방법 | |
US20210271389A1 (en) | Method and apparatus for deleting index in internal memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40030821 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |