CN111158602A - 数据分层存储方法、读取方法、存储主机及存储*** - Google Patents
数据分层存储方法、读取方法、存储主机及存储*** Download PDFInfo
- Publication number
- CN111158602A CN111158602A CN201911402707.4A CN201911402707A CN111158602A CN 111158602 A CN111158602 A CN 111158602A CN 201911402707 A CN201911402707 A CN 201911402707A CN 111158602 A CN111158602 A CN 111158602A
- Authority
- CN
- China
- Prior art keywords
- data
- sparse file
- storage
- stored
- hard 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
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/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/0643—Management of files
-
- 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/0662—Virtualisation aspects
- G06F3/0665—Virtualisation aspects at area level, e.g. provisioning of virtual or logical volumes
-
- 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/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
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
本申请提供一种数据分层存储方法、读取方法、存储主机及存储***,其中,方法包括:获取待存储的数据;将所述待存储的数据写入到存储组件中的第一稀疏文件,其中,所述存储组件通过大小相同的第一稀疏文件和第二稀疏文件叠加形成,所述第一稀疏文件所存储的第一硬盘的读写性能优于第二稀疏文件所存储的第二硬盘的读写性能。本申请使分别落在第一硬盘和第二硬盘的两个稀疏文件叠加,形成存储组件,使得写数据时可以直接将数据写到第一硬盘的稀疏文件中,不需要写额外的元数据,大大提高了写性能。
Description
技术领域
本申请涉及数据存储技术领域,具体而言,涉及一种数据分层存储方法、读取方法、存储主机及存储***。
背景技术
随着信息化时代的来临,全球数据量正处于***式增长的趋势。随着数据的急剧增长,传统的数据存储的管理难度增加,性价比下降。并且随着固态存储技术不断进步和普及,存储介质的种类更加多样,采用不同存储介质和接口的存储设备的性能出现了很大差异。固态硬盘(Solid State Disk,SSD)相较于传统的机械硬盘(Hard Disk Drive,HDD),由于没有磁盘的机械转动,寻址速度大大提高,尤其在随机读写较多的应用环境下,性能会大大提升,但这些高性能存储设备的单位存储价格相对于传统的磁带和机械硬盘也高出很多,所以需要高效平衡地利用这些存储设备。分层存储技术是根据数据访问频率的高低和重要性,将数据划分为冷、热数据,并动态地把不同数据存储于不同性能的存储设备中,以此降低成本和简化存储管理,提高***性能。
在现有技术中,Linux的逻辑卷管理(Logical Volume Manager,LVM)提供了存储虚拟化,可以将多个物理卷(Physical Volume,PV)建成一个卷组(Volume Group,VG),然后再在VG里创建虚拟卷。而且LVM提供了在不同物理卷之间迁移数据的应用程序接口(Application Programming Interface,API)。但基于LVM的分层存储方案只能在***内核实现,开发难度大,并且只能实现基于块设备的分层,不能实现基于文件的分层,同时,每次写都需要修改元数据,导致存储性能不佳。
发明内容
本申请实施例的目的在于提供一种数据分层存储方法、读取方法、存储主机及存储***,在写数据时可以直接将数据写到第一硬盘的稀疏文件中,不需要写额外的元数据,大大提高写性能。
第一方面,本申请实施例提供一种数据分层存储方法,所述方法包括:获取待存储的数据;将所述待存储的数据写入到存储组件中的第一稀疏文件,其中,所述存储组件通过大小相同的第一稀疏文件和第二稀疏文件叠加形成,所述第一稀疏文件所存储的第一硬盘的读写性能优于第二稀疏文件所存储的第二硬盘的读写性能。
在上述方案中,把一个存储组件用分别落在读写性能高的第一硬盘和读写性能低的第二硬盘上的两个稀疏文件重叠组成,这样使得所有的写可以直接写到第一硬盘,不需要写额外的元数据,大大提高了写性能。同时,该方案是基于稀疏文件的数据存储,不需要在***内核实现,开发难度更小。
可选的,在将所述待存储的数据写入到存储组件中的第一稀疏文件之后,所述方法还包括:将所述存储组件中第二稀疏文件的对应位置的数据置为零。
第一稀疏文件与第二稀疏文件间会有大量的文件空洞,并且两个稀疏文件相对应的位置不会同时存在数据,以保证数据不冗余。因此,在第一稀疏文件上写入数据后,对第二稀疏文件的对应位置打洞,以释放存储空间。
可选的,在将所述待存储的数据写入到存储组件中的第一稀疏文件之前,所述方法还包括:分别创建两个空文件,并分配每个空文件需要的连续存储空间,获得第一稀疏文件和第二稀疏文件。
可选的,所述方法还包括:在第一硬盘的空间占用量超过第一预设阈值时,对存储主机内的多个存储组件的数据访问次数进行排序,根据排序结果确定目标存储组件,将所述目标存储组件中第一稀疏文件中写入的数据迁移到第二稀疏文件相对应的位置。
在上述方案中,数据迁移的粒度和访问次数的统计均是以组件为单位,且优先迁移数据访问次数较少的存储组件中的数据。由于是以组件为单位进行统计,相较于现有的技术而言,统计更加集中,所需的工作量大大减少,极大减少了统计难度。
可选的,所述方法还包括:当接收到数据读取请求后,判断在第一稀疏文件中,所述数据读取请求所指定的区域内是否存在数据;若不存在数据,则从第二稀疏文件中相对应的位置读取数据,并将读取到的数据发回请求方。
由于存储主机内所存储的数据分布在第一稀疏文件和第二稀疏文件上,在前端执行读操作时,首先从性能高的第一硬盘上的第一稀疏文件中读取数据,在第一稀疏文件的相应位置未存在数据的情况下,再从性能低的第二硬盘上的第二稀疏文件中读取数据。
可选的,在判断在第一稀疏文件中,所述数据读取请求所指定的区域内是否存在数据之后,所述方法还包括:若存在数据,则从第一稀疏文件中相对应的位置读取数据,并将读取到的数据发回请求方。
可选的,所述判断在第一稀疏文件中,所述数据读取请求所指定的区域内是否存在数据,包括:从存储的位图中获取所述数据读取请求所指定的区域所对应的状态值,根据所述状态值确定在所述第一稀疏文件中相对应的位置是否存在数据。
通过使用位图来记录第一稀疏文件中数据的存储状态,避免了使用***调用来进行数据查找,可以有效加快读取速度。
可选的,在将所述待存储的数据写入到存储组件中的第一稀疏文件之后,所述方法还包括:将所述位图中对应位置的状态值进行更新,所述位置与第一稀疏文件中写入所述待存储的数据的区域对应。
通过及时地对位图进行更新,保证最新的状态信息不会由于断电等异常情况而丢失。
可选的,所述方法还包括:确定第二稀疏文件中访问次数高于第三预设阈值的数据,并将所述数据缓存在内存中。
当第二稀疏文件上的某些数据读取比较频繁时,将这些数据缓存在内存中,既避免了将数据重新迁移到第一硬盘的开销,而且,从内存中直接读取数据相较于从第二硬盘上进行读取,读取速度将得到显著的提高。
第二方面,本申请实施例提供一种数据分层读取方法,所述方法包括:接收数据读取请求;判断在存储组件的第一稀疏文件中,所述数据读取请求所指定的区域内是否存在数据;若不存在数据,则从存储组件的第二稀疏文件中相对应的位置读取数据,并将读取到的数据发回请求方;其中,所述存储组件通过大小相同的第一稀疏文件和第二稀疏文件叠加形成,所述第一稀疏文件所存储的第一硬盘的读写性能优于第二稀疏文件所存储的第二硬盘的读写性能。
第三方面,本申请实施例提供一种数据分层存储装置,所述装置包括:获取模块,用于获取待存储的数据;存储模块,用于将所述待存储的数据写入到存储组件中的第一稀疏文件,其中,所述存储组件通过大小相同的第一稀疏文件和第二稀疏文件叠加形成,所述第一稀疏文件所存储的第一硬盘的读写性能优于第二稀疏文件所存储的第二硬盘的读写性能。
第四方面,本申请实施例提供一种存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如第一方面所述的方法。
第五方面,本申请实施例提供一种存储主机,包括:处理器、存储器、第一硬盘和第二硬盘,所述第一硬盘的读写性能优于第二硬盘的读写性能,所述第一硬盘中存储有第一稀疏文件,所述第二硬盘中存储有第二稀疏文件,所述第一稀疏文件和所述第二稀疏文件大小相同且用于叠加形成存储组件,所述处理器用于读取并执行所述存储器中的机器可读指令,以实现如第一方面所述的方法。
第六方面,本申请实施例提供一种分布式存储***,包括:控制主机和多个存储主机,所述存储主机包括第一硬盘和第二硬盘;所述存储主机内设有多个存储组件,每个存储组件通过大小相同的第一稀疏文件和第二稀疏文件叠加形成,且所述第一稀疏文件所存储的第一硬盘的读写性能优于第二稀疏文件所存储的第二硬盘的读写性能;所述控制主机用于向所述存储主机发送待存储的数据;所述存储主机用于将所述待存储的数据写入到存储组件中的第一稀疏文件。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的分布式存储***的架构图;
图2为本申请实施例提供的数据分层存储方法中写入数据时的流程图;
图3为本申请实施例提供的存储组件的示意图;
图4为本申请实施例提供的数据分层存储方法中读取数据时的流程图;
图5为本申请实施例提供的数据分层存储装置的示意图;
图6为本申请实施例提供的存储主机的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
本申请实施例提供一种基于分布式的数据分层存储方法,针对现有技术存在的缺陷,本实施例原理简单,不需要消耗大量的CPU资源和内存资源,并且容易工程实现和应用。同时,能够实现分布式块存储或文件存储分层,在提高存储***整体性能的情况下,可大大降低存储***的成本,而且对于数据写性能也得到了提高。
图1为本实施例中分布式存储***的架构图。如图1所示,分布式存储***包括:控制主机110和多个存储主机120,存储主机120中包括有至少两个硬盘,例如包括第一硬盘和第二硬盘,当然,还可以再包括第三硬盘甚至第四硬盘,硬盘的数量可以根据需要进行设置。在第一硬盘和第二硬盘中,第一硬盘的读写性能优于第二硬盘的读写性能,比如,第一硬盘可以是固态硬盘SSD,第二硬盘可以是机械硬盘HDD,当然,也不排除第一硬盘还可以是更加高性能的硬盘,第二硬盘也可以是其他成本较低的硬盘。在本实施例中,主要以第一硬盘为SSD,第二硬盘为HDD为例进行介绍。
控制主机用于生成虚拟磁盘,作为数据存储路径的前端主机,完成数据接收和转发等功能。存储主机作为数据最终的存放地点,将存储资源(如第一硬盘和第二硬盘中的存储资源)抽象成多个存储组件,每个存储组件均通过两个大小相同的稀疏文件叠加形成,如第一稀疏文件和第二稀疏文件,第一稀疏文件存储在读写性能更优的第一硬盘中,第二稀疏文件存储在成本更低的第二硬盘中。需要说明的是,此处所述的两个稀疏文件叠加是指两个稀疏文件具有相同的物理地址。
在用户使用虚拟磁盘进行数据写操作时,用户将文件上传到虚拟磁盘的对应位置,控制主机对上传的文件进行拆分,并将拆分后的文件分别转发到对应的存储主机上,以对拆分后的文件进行存储。对于其中任一个存储主机而言,在接收到控制主机发来的拆分后的文件后,执行图2所示的数据分层存储方法。
在图2中,数据分层存储方法包括如下步骤:
步骤210:获取待存储的数据。
步骤220:将该待存储的数据写入到存储组件中的第一稀疏文件。
在写数据时,控制主机向存储主机发送待存储的数据、数据存储的起始位置地址以及数据长度。存储主机根据起始位置地址和长度将待存储的数据写入到存储组件中。由于第一稀疏文件和第二稀疏文件具有相同的物理地址,控制主机给定的起始位置地址指向第一稀疏文件和第二稀疏文件上的相同位置,存储主机根据该起始位置地址将待存储的数据写入到第一稀疏文件上。
具体的,图3示出了本实施例中存储组件的示意图。存储组件由第一稀疏文件和第二稀疏文件叠加形成,第一稀疏文件存储在SSD上,第二稀疏文件存储在HDD上。每个稀疏文件可以分为连续的多个数据段,每一数据段的大小可以为4K,即在两个稀疏文件中,数据存储的最小单位是4K。当前端的控制主机进行数据转发时,需要保证所有数据读写的长度都是4K对齐,比如可以是4K或者8K等(只要是4K的倍数均可,但最小长度应当为4K)。如果数据本身是4K大小,那么可以刚好占用稀疏文件上的一个4K区域,而如果数据本身是一个较大的文件,如1MB,那么需要占用稀疏文件上连续的多个4K区域。在图3中,黑色填充区域表示的是写入有数据,白色区域表示的是未写入有数据。
在具体实施过程中,图3所示仅是一种示例,在稀疏文件中,每一个数据区域的长度也可以不限于4K,也可以是其他长度,只要保证控制主机所拆分的数据的长度与稀疏文件中的数据存储的最小单位对齐即可。
第一稀疏文件与第二稀疏文件间会有大量的文件空洞,并且两个稀疏文件相对应的位置不会同时存在数据,以保证数据不冗余。当前端执行数据写操作时,存储主机将数据直接写到第一稀疏文件上的对应位置,此时,如果第二稀疏文件上相应的位置已有数据,那么在第一稀疏文件上写入数据后,需对第二稀疏文件的对应位置打洞,释放存储空间,也即将该存储组件中第二稀疏文件的对应位置的数据置为0;而如果第二稀疏文件上相应的位置未写入有数据,则可以无需对第二稀疏文件进行其他操作。
进一步的,在步骤220之前,该方法还包括:预先创建第一稀疏文件和第二稀疏文件。
在创建第一稀疏文件和第二稀疏文件的过程中,首先,分别创建两个空文件,并分配好每个空文件需要的连续存储空间,两个空文件所分配的存储空间的大小相同,然后可获得第一稀疏文件和第二稀疏文件。此时,两个稀疏文件中不包含任何用户数据,其空间内部还未被数据填充,在稀疏文件中留有较多的空余空间,以用于之后写入数据时使用。本实施例中稀疏文件至少以4K(也可以是其他值)的增量增长,所分配的连续的存储空间至少为4K的倍数,如分配1G大小。在两个稀疏文件的使用过程中,文件中的部分空间被实际写入的数据填充,另一部分空间中没有实际写入的数据,未写有数据的位置由重复的0表示。
待存储的数据在写入第一稀疏文件以后,数据主要在写入后的一段时间(如几天)内被访问,在此之后,随着时间的推移访问量会逐渐减少,访问次数越来越低,在更长的一段时间(如一个月)以后数据只会被偶尔访问,这时,原本的“热数据”将变成“冷数据”,这时,应当将“冷数据”迁移到成本较低的第二硬盘中,例如将数据从第一稀疏文件迁移到第二稀疏文件上。
具体的,在第一硬盘(SSD)的空间占用量超过第一预设阈值时,对存储主机内的多个存储组件的数据访问次数进行排序,根据排序结果确定目标存储组件,目标存储组件为数据访问次数较低的组件,然后将目标存储组件中第一稀疏文件中写入的数据迁移到第二稀疏文件相对应的位置。数据迁移流程的停止条件可以是:第一硬盘(SSD)的空间占用量低于第二预设阈值。其中,第一预设阈值可以设置为50%,第二预设阈值可以设置为30%。
例如,在SSD的空间占用量已超过50%后,对存储主机内的所有存储组件的数据访问次数进行排序,可以对其中访问次数较低的多个组件,开始进行数据迁移,直至SSD的空间占用量小于30%时停止数据迁移。在此过程中,对于目标存储组件的选择原则可以是:将排序位于最后的预设数量的存储组件作为目标存储组件,在迁移时,可以按照排序结果,从排序最后的存储组件依次进行数据迁移,在满足停止条件时停止对目标存储组件的数据迁移。
数据访问次数表示该存储组件中所存储数据的热度,数据迁移的粒度和热度统计均是以组件为单位,即统计存储组件中第一稀疏文件和第二稀疏文件中所有数据的总热度,并优先迁移数据访问次数较少的存储组件中的数据。由于是以组件为单位进行热度统计,相较于现有的技术而言,统计的单位更大、更集中,统计所需的工作量大大减少,极大减少了热度统计的难度。
而且,在将第一稀疏文件上原先写有的数据迁移到第二稀疏文件后,第一稀疏文件上所有位置的数据均由0表示,所以,当存储主机再次执行步骤220时,第一稀疏文件上存储的是新写入的数据,于是,在下一次进行数据迁移时,第一稀疏文件迁移的仅仅是新写入的数据,在新写入的数据较少的情况下,能够加快数据的迁移速度、减少迁移的数据量。
通过存储组件中的两个稀疏文件以及上述数据迁移流程,能够实现个别数据存储在性能高的SSD上,其他数据存储在价格低的HDD上。由于存储主机内所存储的数据分布在SSD和HDD上,在前端执行读操作时,首先从性能高的SSD上的第一稀疏文件中读取数据,在第一稀疏文件的相应位置未存在数据的情况下,再从价格低的HDD上的第二稀疏文件中读取数据。具体的读取步骤如图4所示,包括:
步骤310:接收数据读取请求。
在前端执行读操作时,控制主机向存储主机发送数据读取请求,并在数据读取请求中指定数据读取的起始位置地址和长度。存储主机在接收到数据读取请求后,执行步骤320。
步骤320:判断在存储组件的第一稀疏文件中,数据读取请求所指定的区域内是否存在数据;若不存在数据,跳转至步骤330,若存在数据,跳转至步骤340。
步骤330:从存储组件的第二稀疏文件中相对应的位置读取数据,并将读取到的数据发回请求方。
步骤340:从第一稀疏文件中相对应的位置读取数据,并将读取到的数据发回请求方。
在读取数据时,存储主机可以通过***调用来判断第一稀疏文件的指定区域内是否存在数据,但这样的处理方式存在一个问题,那就是每次读取时都需要有一个***调用,会比较耗时,因此,可以在内存中使用位图来记录第一稀疏文件上每一个4K区域内是否存在数据。在位图中,用1个比特的二进制数字来表示第一稀疏文件上对应4K区域内数据存在的状态,每一个4K区域用位图中的一位数字表示,如状态值为0表示该区域内不存在数据,状态值为1表示该区域内存在数据。在步骤320的具体实施过程中,可以从存储的位图中获取数据读取请求所指定的区域所对应的状态值,根据状态值可确定在第一稀疏文件中相对应的位置是否存在数据。这样一来,避免了使用***调用来进行数据查找,可以有效加快读取速度,虽然这样会增加一些额外的内存开销,但是经测试,所消耗的内存空间仅占文件大小的0.003%左右,所以对存储主机而言并不会造成额外的负担。
位图中每一位的状态值需要根据数据的写入进行更新。在将待存储的数据写入到存储组件中的第一稀疏文件之后,需要在位图中将所存储的区域所对应的状态值进行更新。如果该区域内原本存在数据,状态值为1,那么在写入新的数据后,原有的数据被覆盖,状态值仍更新为1;如果该区域内原本不存在数据,状态值为0,那么在写入新的数据后,状态值更新为1。在将第一稀疏文件上该区域内的数据迁移到第二稀疏文件上以后,状态值由1更新为0。通过及时地对位图进行更新,保证最新的状态信息不会由于断电等异常情况而丢失。
可选的,存储组件中还可以包括第三稀疏文件,第三稀疏文件存储于第三硬盘上,第一硬盘、第二硬盘和第三硬盘的读写性能和成本依次递减。当第一硬盘的空间占用量超过第一预设阈值时,将第一稀疏文件上所写有的数据迁移到第二稀疏文件上,当第二硬盘的空间占用量超过第一预设阈值(或者其他阈值)时,将第二稀疏文件上所写有的数据迁移到第三稀疏文件上。在进行数据读取时,数据读取请求中指定的起始位置地址指向第一稀疏文件、第二稀疏文件和第三稀疏文件上的相同位置,存储主机首先判断第一稀疏文件上的对应位置处是否存在数据,若不存在,则判断第二稀疏文件上的对应位置处是否存在数据,若不存在,则从第三稀疏文件上的对应位置读取数据,并将读取的数据返回请求方。依次类推,存储组件还可以包括第四稀疏文件,第四稀疏文件存储于第四硬盘上,在此方案中,数据的分层存储及读取流程可以参考前述描述,在此不做赘述。
进一步的,由于存储主机在写数据时,都是先写入到存储于SSD的第一稀疏文件中,所以写数据的性能可以达到最优,但在读数据时,由于需要先判断第一稀疏文件的对应位置是否存在数据,在第一稀疏文件未命中的情况下,再到存储于HDD的第二稀疏文件上进行读取,这将会对读取性能造成影响。对于上述问题,可以通过增加内存读缓存的方式进行解决。例如,在内存中分配一块区域,作为HDD的读取缓存,把第二稀疏文件上的热数据缓存在内存中,以加快读取速度。
在具体的实施过程中,确定第二稀疏文件中访问次数高于第三预设阈值的数据,并将数据缓存在内存中。
当第二稀疏文件上的某些数据读取比较频繁时,这些原本的“冷数据”又将变为“热数据”,但如果一直频繁在HDD上进行读取的话,数据读取的速度将会明显变慢,可是如果将这些“热数据”又重新迁移回第一稀疏文件,又将会额外增加数据迁移的开销。而增加内存读缓存后,既避免了数据重新迁移的开销,而且,从内存中直接读取数据相较于从HDD上进行读取,读取速度将得到显著的提高。因此,当存储主机在第一稀疏文件上未命中数据时,直接从内存中读取数据即可。
在SSD的空间较充足的情况下,存储主机可以开启所有存储组件的自动分层存储。在SSD的空间较少的情况下,对于性能要求比较高的组件可以开启自动分层存储,对于性能要求不高的组件可以关闭存储分层,以避免SSD空间被快速写满。对于空间较少的SSD,其空间占用量的增长较快,导致数据迁移的次数将会更加频繁,在关闭存储分层后,能够减少这些不必要的数据迁移开销。
在实际应用中,用户通过控制主机创建存储卷后,每个存储卷的底层由多个存储组件组成,如果用户认为某一个或多个存储卷的性能不是十分重要,可以选择将存储卷的属性设置为不需要分层存储,在确定这个存储卷不需要分层后,这个存储卷所对应的所有组件都将关闭自动分层,存储主机将不对这些组件进行数据的热度统计。在关闭自动分层后,写入数据时,存储主机将获取的待存储的数据直接写入到第二稀疏文件中,读取数据时,存储主机直接到第二稀疏文件上的指定区域读取数据,省去了到第一稀疏文件中进行数据查找的过程。
综上所述,本申请提供的数据分层存储方法,能够实现数据的高效存储,同时,把一个存储组件用分别落在SSD和HDD的两个稀疏文件重叠组成,这样所有的写就可以直接写到SSD,不需要写额外的元数据(这些元数据例如是记录一张映射表,以记录数据存放在磁盘的哪些位置,而本申请基于稀疏文件,映射方式是直接映射,所以不需要维护映射表),大大提高了写性能。并且,有效利用了高性能存储设备和低成本存储设备,实现了热数据存储于读写性能高的SSD上的第一稀疏文件,冷数据存储于成本低的HDD上的第二稀疏文件,在提高存储***整体性能的情况下,又大大降低了存储***的成本。进一步的,在读取数据时通过位图判断数据是否存在于第一稀疏文件,有效减少了查找的时间。
本实施例提供的技术方案原理简单,开发难度低,不需要消耗大量的CPU资源和内存资源,并且容易工程实现和应用,可以在实际中广泛推广应用,具有较高的商业应用价值。
基于同一发明构思,本申请实施例中还提供一种数据分层存储装置,请参阅图5,该装置包括:
获取模块410,用于获取待存储的数据;
存储模块420,用于将所述待存储的数据写入到存储组件中的第一稀疏文件,其中,所述存储组件通过大小相同的第一稀疏文件和第二稀疏文件叠加形成,所述第一稀疏文件所存储的第一硬盘的读写性能优于第二稀疏文件所存储的第二硬盘的读写性能。
上述提供的数据分层存储装置能够实现前一方法实施例中的所有步骤,其与前一方法实施例的基本原理及产生的技术效果相同,为简要描述,本实施例部分未提及之处,可参考上述的方法实施例中的相应内容,在此不做赘述。
图6示出了本申请实施例提供的存储主机500的一种可能的结构。请参照图6,存储主机500包括:处理器510、存储器520、第一硬盘530和第二硬盘540,这些组件通过总线和/或其他形式的连接机构互连并相互通讯,存储主机500通过通信接口与控制主机通信。在存储主机500中,第一硬盘530的读写性能优于第二硬盘540的读写性能,第一硬盘530中存储有第一稀疏文件,第二硬盘540中存储有第二稀疏文件,存储主机将第一硬盘530和第二硬盘540中的存储资源抽象成多个存储组件,以一个存储组件为例,该存储组件通过大小相同的第一稀疏文件和第二稀疏文件叠加形成。
其中,存储器520包括一个或多个(图中仅示出一个),其可以是,但不限于,随机存取存储器(Random Access Memory,简称RAM),只读存储器(Read Only Memory,简称ROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,简称EEPROM)等。处理器510以及其他可能的组件可对存储器520进行访问,读和/或写其中的数据。
处理器510包括一个或多个(图中仅示出一个),其可以是一种集成电路芯片,具有信号的处理能力。上述的处理器510可以是通用处理器,包括中央处理器(CentralProcessing Unit,简称CPU)、微控制单元(Micro Controller Unit,简称MCU)、网络处理器(Network Processor,简称NP)或者其他常规处理器;还可以是专用处理器,包括数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuits,简称ASIC)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在存储器520中可以存储一个或多个机器可读指令,处理器510可以读取并运行这些机器可读指令,以实现本申请实施例提供的数据分层存储方法的步骤以及其他期望的功能。
本申请实施例还提供一种存储介质,该存储介质上存储有计算机程序,该计算机程序被计算机的处理器读取并运行时,执行本申请实施例提供的数据分层存储方法的步骤。例如,存储介质可以实现为图6中存储主机500中的存储器520。
在本申请所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
另外,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
再者,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
需要说明的是,功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。
以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (14)
1.一种数据分层存储方法,其特征在于,所述方法包括:
获取待存储的数据;
将所述待存储的数据写入到存储组件中的第一稀疏文件,其中,所述存储组件通过大小相同的第一稀疏文件和第二稀疏文件叠加形成,所述第一稀疏文件所存储的第一硬盘的读写性能优于第二稀疏文件所存储的第二硬盘的读写性能。
2.根据权利要求1所述的方法,其特征在于,在将所述待存储的数据写入到存储组件中的第一稀疏文件之后,所述方法还包括:
将所述存储组件中第二稀疏文件的对应位置的数据置为零。
3.根据权利要求1所述的方法,其特征在于,在将所述待存储的数据写入到存储组件中的第一稀疏文件之前,所述方法还包括:
分别创建两个空文件,并分配每个空文件需要的连续存储空间,获得第一稀疏文件和第二稀疏文件。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在第一硬盘的空间占用量超过第一预设阈值时,对存储主机内的多个存储组件的数据访问次数进行排序,根据排序结果确定目标存储组件,将所述目标存储组件中第一稀疏文件中写入的数据迁移到第二稀疏文件相对应的位置。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当接收到数据读取请求后,判断在第一稀疏文件中,所述数据读取请求所指定的区域内是否存在数据;若不存在数据,则从第二稀疏文件中相对应的位置读取数据,并将读取到的数据发回请求方。
6.根据权利要求5所述的方法,其特征在于,在判断在第一稀疏文件中,所述数据读取请求所指定的区域内是否存在数据之后,所述方法还包括:
若存在数据,则从第一稀疏文件中相对应的位置读取数据,并将读取到的数据发回请求方。
7.根据权利要求5所述的方法,其特征在于,所述判断在第一稀疏文件中,所述数据读取请求所指定的区域内是否存在数据,包括:
从存储的位图中获取所述数据读取请求所指定的区域所对应的状态值,根据所述状态值确定在所述第一稀疏文件中相对应的位置是否存在数据。
8.根据权利要求7所述的方法,其特征在于,在将所述待存储的数据写入到存储组件中的第一稀疏文件之后,所述方法还包括:
将所述位图中对应位置的状态值进行更新,所述位置与第一稀疏文件中写入所述待存储的数据的区域对应。
9.根据权利要求5-8任一项所述的方法,其特征在于,所述方法还包括:
确定第二稀疏文件中访问次数高于第三预设阈值的数据,并将所述数据缓存在内存中。
10.一种数据分层读取方法,其特征在于,所述方法包括:
接收数据读取请求;
判断在存储组件的第一稀疏文件中,所述数据读取请求所指定的区域内是否存在数据;若不存在数据,则从存储组件的第二稀疏文件中相对应的位置读取数据,并将读取到的数据发回请求方;其中,所述存储组件通过大小相同的第一稀疏文件和第二稀疏文件叠加形成,所述第一稀疏文件所存储的第一硬盘的读写性能优于第二稀疏文件所存储的第二硬盘的读写性能。
11.一种数据分层存储装置,其特征在于,所述装置包括:
获取模块,用于获取待存储的数据;
存储模块,用于将所述待存储的数据写入到存储组件中的第一稀疏文件,其中,所述存储组件通过大小相同的第一稀疏文件和第二稀疏文件叠加形成,所述第一稀疏文件所存储的第一硬盘的读写性能优于第二稀疏文件所存储的第二硬盘的读写性能。
12.一种存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1-10任一项所述的方法。
13.一种存储主机,其特征在于,包括:处理器、存储器、第一硬盘和第二硬盘,所述第一硬盘的读写性能优于第二硬盘的读写性能,所述第一硬盘中存储有第一稀疏文件,所述第二硬盘中存储有第二稀疏文件,所述第一稀疏文件和所述第二稀疏文件大小相同且用于叠加形成存储组件,所述处理器用于读取并执行所述存储器中的机器可读指令,以实现如权利要求1-10任一项所述的方法。
14.一种分布式存储***,其特征在于,包括:控制主机和多个存储主机,所述存储主机包括第一硬盘和第二硬盘;所述存储主机内设有多个存储组件,每个存储组件通过大小相同的第一稀疏文件和第二稀疏文件叠加形成,且所述第一稀疏文件所存储的第一硬盘的读写性能优于第二稀疏文件所存储的第二硬盘的读写性能;
所述控制主机用于向所述存储主机发送待存储的数据;
所述存储主机用于将所述待存储的数据写入到存储组件中的第一稀疏文件。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911402707.4A CN111158602A (zh) | 2019-12-30 | 2019-12-30 | 数据分层存储方法、读取方法、存储主机及存储*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911402707.4A CN111158602A (zh) | 2019-12-30 | 2019-12-30 | 数据分层存储方法、读取方法、存储主机及存储*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111158602A true CN111158602A (zh) | 2020-05-15 |
Family
ID=70559440
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911402707.4A Pending CN111158602A (zh) | 2019-12-30 | 2019-12-30 | 数据分层存储方法、读取方法、存储主机及存储*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111158602A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111427519A (zh) * | 2020-06-10 | 2020-07-17 | 广东睿江云计算股份有限公司 | 一种分布式存储数据迁移方法及装置 |
CN111596865A (zh) * | 2020-05-22 | 2020-08-28 | 浙江大华技术股份有限公司 | 一种存储处理方法及装置 |
CN112527762A (zh) * | 2020-12-16 | 2021-03-19 | 航天壹进制(南京)数据科技有限公司 | 一种基于稀疏文件的虚拟块设备存储***与方法 |
CN113220233A (zh) * | 2021-05-14 | 2021-08-06 | 北京百度网讯科技有限公司 | 数据读取方法、装置及*** |
WO2021257994A1 (en) * | 2020-06-20 | 2021-12-23 | Scality, S.A. | Sparse file system implemented with multiple cloud services |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7870356B1 (en) * | 2007-02-22 | 2011-01-11 | Emc Corporation | Creation of snapshot copies using a sparse file for keeping a record of changed blocks |
CN104025054A (zh) * | 2011-12-15 | 2014-09-03 | 赛门铁克公司 | 虚拟环境中的动态存储分层 |
CN107203345A (zh) * | 2017-06-01 | 2017-09-26 | 深圳市云舒网络技术有限公司 | 一种多副本存储快速校验一致性方法及其装置 |
-
2019
- 2019-12-30 CN CN201911402707.4A patent/CN111158602A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7870356B1 (en) * | 2007-02-22 | 2011-01-11 | Emc Corporation | Creation of snapshot copies using a sparse file for keeping a record of changed blocks |
CN104025054A (zh) * | 2011-12-15 | 2014-09-03 | 赛门铁克公司 | 虚拟环境中的动态存储分层 |
CN107203345A (zh) * | 2017-06-01 | 2017-09-26 | 深圳市云舒网络技术有限公司 | 一种多副本存储快速校验一致性方法及其装置 |
Non-Patent Citations (1)
Title |
---|
王旭阳,李睿: "《网络操作***》", 高等教育出版社, pages: 207 - 210 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111596865A (zh) * | 2020-05-22 | 2020-08-28 | 浙江大华技术股份有限公司 | 一种存储处理方法及装置 |
CN111596865B (zh) * | 2020-05-22 | 2023-07-14 | 浙江大华技术股份有限公司 | 一种存储处理方法及装置 |
CN111427519A (zh) * | 2020-06-10 | 2020-07-17 | 广东睿江云计算股份有限公司 | 一种分布式存储数据迁移方法及装置 |
CN111427519B (zh) * | 2020-06-10 | 2020-10-16 | 广东睿江云计算股份有限公司 | 一种分布式存储数据迁移方法及装置 |
WO2021257994A1 (en) * | 2020-06-20 | 2021-12-23 | Scality, S.A. | Sparse file system implemented with multiple cloud services |
CN112527762A (zh) * | 2020-12-16 | 2021-03-19 | 航天壹进制(南京)数据科技有限公司 | 一种基于稀疏文件的虚拟块设备存储***与方法 |
CN112527762B (zh) * | 2020-12-16 | 2024-06-14 | 航天壹进制(江苏)信息科技有限公司 | 一种基于稀疏文件的虚拟块设备存储***与方法 |
CN113220233A (zh) * | 2021-05-14 | 2021-08-06 | 北京百度网讯科技有限公司 | 数据读取方法、装置及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11989160B2 (en) | Heuristic interface for enabling a computer device to utilize data property-based data placement inside a nonvolatile memory device | |
CN110471861B (zh) | 一种闪存设备中的数据存储方法及闪存设备 | |
CN111158602A (zh) | 数据分层存储方法、读取方法、存储主机及存储*** | |
CN103186350B (zh) | 混合存储***及热点数据块的迁移方法 | |
US11861204B2 (en) | Storage system, memory management method, and management node | |
US9311252B2 (en) | Hierarchical storage for LSM-based NoSQL stores | |
US20070005904A1 (en) | Read ahead method for data retrieval and computer system | |
US8694563B1 (en) | Space recovery for thin-provisioned storage volumes | |
US9183127B2 (en) | Sequential block allocation in a memory | |
KR20200123850A (ko) | 하이브리드 메모리 시스템 | |
CN109710587A (zh) | 基于Ceph的数据分层方法、***、设备和介质 | |
CN115794669A (zh) | 一种扩展内存的方法、装置及相关设备 | |
KR20200117032A (ko) | 하이브리드 메모리 시스템 | |
CN115793957A (zh) | 写数据的方法、装置及计算机存储介质 | |
US11010091B2 (en) | Multi-tier storage | |
US11803469B2 (en) | Storing data in a log-structured format in a two-tier storage system | |
US11086798B2 (en) | Method and computer program product and apparatus for controlling data access of a flash memory device | |
CN109508140A (zh) | 存储资源管理方法、装置、电子设备及电子设备、*** | |
US10628317B1 (en) | System and method for caching data in a virtual storage environment based on the clustering of related data blocks | |
CN111796757A (zh) | 一种固态硬盘缓存区管理方法和装置 | |
WO2024061212A1 (zh) | 一种数据存储方法及装置 | |
US11875051B2 (en) | Contiguous data storage using group identifiers | |
WO2023029417A1 (zh) | 一种数据存储方法及装置 | |
CN116991321A (zh) | 基于主机端的ssd缓存管理方法、装置和计算机设备 | |
CN117492637A (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 |