本发明实施例涉及计算机技术领域,尤其涉及一种基于ZFS文件系统的数据存储方法及装置。
背景技术:
HDFS(Hadoop Distributed File System)是一种大数据分布式存储系统,由雅虎开源。它将任意大小的文件按照指定块大小(如256MB)分割成若干块,并且为了数据冗余备份,每个块有3(默认)个副本,hdfs将该文件的所有副本块随机分布到大量数据节点(称为datanode)上,并在主节点(称为namenode)上记录该文件的每个副本块存在哪个datanode上。查询数据时从namenode获取该文件的所有副本块位置(即哪些datnode),再按照一定规则从datanode上获取数据。
存放在hdfs中的数据使用频率不一样,对存储的要求也不一样,比如某些数据经常使用(热数据),希望访问速度快。某些数据很少使用(冷数据),希望存储的成本低。业内提供多种类型存储介质,如固态硬盘(SSD)速度高,价格贵。磁带速度慢,价格低。普通磁盘价格和速度适中。
但目前集群均使用linux的ext4作为底层文件系统,并使用三副本策略(一份数据需要存储到三个节点上),极大的耗费存储空间。
技术实现要素:
针对现有技术存在的问题,本发明实施例提供一种基于ZFS文件系统的数据存储方法及装置。
第一方面,本发明实施例提供一种基于ZFS文件系统的数据存储方法,包括:
接收待存储数据以及对应的存储策略名称;
根据所述存储策略名称获取匹配的目标存储策略,所述目标存储策略包括指定存储的文件系统和存储介质;
若判断获知所述目标存储策略中指定存储的文件系统为ZFS文件系统,则根据所述ZFS文件系统预先配置的压缩算法对所述待存储数据进行压缩,并将压缩后的待存储数据存储ZFS文件系统对应的存储介质中。
进一步地,所述方法,还包括:
若判断获知所述目标存储策略中指定存储的文件系统为第四代扩展文件系统Ext4,则直接将所述待存储数据存储到所述Ext4文件系统对应的存储介质中。
进一步地,所述方法,还包括:
预先配置存储策略,并将所述存储策略存储到数据库中。
进一步地,在接收待存储数据以及对应的存储策略名称后,所述方法,还包括:
将所述待存储数据进行分块,获得对应的多个待存储子数据块,并根据每一待存储子数据块获得预设个数的待存储子数据块副本,相应的,
所述目标存储策略包括每一待存储数据子数据块副本对应的文件系统和存储介质。
第二方面,本发明实施例提供一种基于ZFS文件系统的数据存储装置,包括:
接收模块,用于接收待存储数据以及对应的存储策略名称;
匹配模块,用于根据所述存储策略名称获取匹配的目标存储策略,所述目标存储策略包括指定存储的文件系统和存储介质;
第一存储模块,用于若判断获知所述目标存储策略中指定存储的文件系统为ZFS文件系统,则根据所述ZFS文件系统预先配置的压缩算法对所述待存储数据进行压缩,并将压缩后的待存储数据存储ZFS文件系统对应的存储介质中。
进一步地,所述装置,还包括:
第二存储模块,用于若判断获知所述目标存储策略中指定存储的文件系统为Ext4文件系统,则直接将所述待存储数据存储到Ext4文件系统对应的存储介质中。
进一步地,所述装置,还包括:
配置模块,用于预先配置存储策略,并将所述存储策略存储到数据库中。
进一步地,所述装置,还包括:
分块模块,用于将所述待存储数据进行分块,获得对应的多个待存储子数据块,并根据每一待存储子数据块获得预设个数的待存储子数据块副本,相应的,
所述目标存储策略包括每一待存储数据子数据块副本对应的文件系统和存储介质。
第三方面,本发明实施例提供一种电子设备,包括:处理器、存储器和总线,其中,
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行第一方面的方法步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,包括:
所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行第一方面的方法步骤。
本发明实施例提供的一种基于ZFS文件系统的数据存储方法及装置,通过根据用户指定的存储策略名称获取匹配的目标存储策略,若目标存储策略指定存储的文件系统为ZFS文件系统,则先对待存储数据进行压缩在存储,从而节省了存储空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于ZFS文件系统的数据存储方法流程示意图;
图2为本发明另一实施例提供的一种基于ZFS文件系统的数据存储方法流程示意图;
图3为本发明实施例提供的一种基于ZFS文件系统的数据存储装置结构示意图;
图4为本发明实施例提供的电子设备实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种基于ZFS文件系统的数据存储方法流程示意图,如图1所示,所述方法,包括:
步骤101:接收待存储数据以及对应的存储策略名称;
具体的,接收用户发送的待存储数据,并且,用户在发送待存储数据时可以指定该待存储数据对应的存储策略名称,不同的存储策略名称对应不同的存储策略,因此,用户可以根据实际需求为待存储数据指定存储策略。
步骤102:根据所述存储策略名称获取匹配的目标存储策略,所述目标存储策略包括指定存储的文件系统和存储介质;
具体的,存储策略可以有多种,每种存储策略都对应唯一一个存储策略名称,因此可以根据用户指定的存储策略名称,与预先存储的存储策略名称进行匹配,获取匹配成功的存储策略名称对应的存储策略作为目标存储策略,应当说明的是,目标存储策略中包括指定存储的文件系统和存储介质,即目标存储策略指定了将待存储数据存储在哪个文件系统中的哪个存储介质中。
步骤103:若判断获知所述目标存储策略中指定存储的文件系统为动态文件系统ZFS,则根据所述ZFS文件系统预先配置的压缩算法对所述待存储数据进行压缩,并将压缩后的待存储数据存储到所述ZFS文件系统对应的存储介质中。
具体的,如果目标存储策略中指定存储的文件系统为ZFS文件系统,则先利用ZFS文件系统中的压缩算法对待存储数据进行压缩,可以理解的是,预先在ZFS文件系统中配置压缩算法,可以是gzip压缩算法,也可以是其他压缩算法,本发明实施例对此不做具体限定。经过压缩后的待存储数据节省了存储空间,将压缩后的待存储数据存储到ZFS文件系统对应的存储介质中,可以理解的是,ZFS文件系统中的存储介质可以为固态硬盘SSD、文档服务器Archive和磁盘DISK中的任意一种或其组合。
本发明实施例通过根据用户指定的存储策略名称获取匹配的目标存储策略,若目标存储策略指定存储的文件系统为ZFS文件系统,则先对待存储数据进行压缩在存储,从而节省了存储空间。
在上述实施例的基础上,所述方法,还包括:
若判断获知所述目标存储策略中指定存储的文件系统为第四代扩展文件系统Ext4,则直接将所述待存储数据存储到所述Ext4文件系统对应的存储介质中。
具体的,如果用户指定的目标存储策略中对应的文件系统是Ext4文件系统,则直接将待存储数据存储到Ext4文件系统对应的存储介质中,应当说明的是,Ext4文件系统中的存储介质可以为固态硬盘SSD、文档服务器Archive和磁盘DISK中的任意一种或其组合。
应当说明的是,一条存储策略中也可以指定多个文件系统,可以将一部分待存储数据存到Ext4文件系统中,另一部分待存储数据存到ZFS文件系统中。
本发明实施例通过在数据存储装置中同时配置ZFS文件系统和Ext4文件系统,根据指定的存储策略名称对待存储数据进行存储,合理分配了存储空间。
在上述实施例的基础上,所述方法,还包括:
预先配置存储策略,并将所述存储策略存储到数据库中。
具体的,预先在数据存储装置中配置存储策略,并将存储策略存储在数据库中,下表为本发明实施例提供的部分存储策略:
本发明实施例通过在数据存储装置中同时配置ZFS文件系统和Ext4文件系统,根据指定的存储策略名称对待存储数据进行存储,合理分配了存储空间。
在上述实施例的基础上,在接收待存储数据以及对应的存储策略名称后,所述方法,还包括:
将所述待存储数据进行分块,获得对应的多个待存储子数据块,并根据每一待存储子数据块获得预设个数的待存储子数据块副本,相应的,
所述目标存储策略包括每一待存储数据子数据块副本对应的文件系统和存储介质。
具体的,在接收到用户发送的待存储数据和存储策略名称后,可以根据预设字节数对待存储数据进行分块,从而得到多个待存储子数据块,每个待存储子数据块通常情况下有三个待存储子数据块副本,因此,存储策略中应当包括每个待存储子数据块副本对应的文件系统和存储介质,不一定要将所有的待存储子数据块副本存储在同一个文件系统的同一个存储介质中,如上表中的存储策略。如果有部分或全部待存储子数据块副本存储在了ZFS文件系统的某个存储介质中,则需要对该待存储子数据块副本进行压缩,然后在进行存储。
本发明实施例通过根据用户指定的存储策略名称获取匹配的目标存储策略,若目标存储策略指定存储的文件系统为ZFS文件系统,则先对待存储数据进行压缩在存储,从而节省了存储空间。
图2为本发明另一实施例提供的一种基于ZFS文件系统的数据存储方法流程示意图,如图2所示,所述方法,包括:
步骤201:写入数据或读取数据;接收待存储数据,其中待存储数据可以是用户写入的数据,也可以是读取的数据,本发明实施例对此不做具体限定,另外,还需要接收用户指定的存储策略名称;
步骤202:配置存储策略;在数据存储装置中配置多个存储策略,应当说明的是,配置存储策略的步骤可以预先进行,不一定是在步骤201之后;
步骤203:选择目标存储策略;根据用户指定的存储策略名称从预先配置的存储策略中选择对应的存储策略作为目标存储策略;
步骤204:确定文件系统;根据目标存储策略确定待存储数据要存储到哪个文件系统中,如果是ZFS文件系统则执行步骤205,如果是Ext文件系统则执行步骤206;
步骤205:选择ZFS文件系统;若目标存储策略中是将部分或全部待存储数据存入ZFS文件系统,则执行步骤206;
步骤206:压缩;在存储到ZFS文件系统对应的存储介质中之前,需要对存储在ZFS文件系统的上述部分或全部待存储数据利用预先配置的压缩算法进行压缩;
步骤207:选择Ext文件系统;如果目标存储策略中是将部分或全部待存储数据存入Ext文件系统,则直接执行步骤208:
步骤208:存储;将压缩后的待存储数据存储到目标存储策略中ZFS文件系统中对应的存储介质中,或将未压缩的待存储数据直接存储到Ext文件系统中对应的存储介质中。
本发明实施例通过在写入数据的时候能够根据实际需求制定不同的存储策略,选择性使用ZFS文件系统,在对用户没有感知的情况下对数据进行了压缩,极大的节省了存储空间。
图3为本发明实施例提供的一种基于ZFS文件系统的数据存储装置结构示意图,如图3所示,所述装置,包括:接收模块301、匹配模块302和第一存储模块303,其中:
接收模块301用于接收待存储数据以及对应的存储策略名称;匹配模块302用于根据所述存储策略名称获取匹配的目标存储策略,所述目标存储策略包括指定存储的文件系统和存储介质;第一存储模块303用于若判断获知所述目标存储策略中指定存储的文件系统为ZFS文件系统,则根据所述ZFS文件系统预先配置的压缩算法对所述待存储数据进行压缩,并将压缩后的待存储数据存储ZFS文件系统对应的存储介质中。
具体的,接收模块301接收用户发送的待存储数据,并且,用户在发送待存储数据时可以指定该待存储数据对应的存储策略名称,不同的存储策略名称对应不同的存储策略,因此,用户可以根据实际需求为待存储数据指定存储策略。存储策略可以有多种,每种存储策略都对应唯一一个存储策略名称,因此匹配模块302可以根据用户指定的存储策略名称,与预先存储的存储策略名称进行匹配,获取匹配成功的存储策略名称对应的存储策略作为目标存储策略,应当说明的是,目标存储策略中包括指定存储的文件系统和存储介质,即目标存储策略指定了将待存储数据存储在哪个文件系统中的哪个存储介质中。第一存储模块303如果目标存储策略中指定存储的文件系统为ZFS文件系统,则先利用ZFS文件系统中的压缩算法对待存储数据进行压缩,经过压缩后的待存储数据节省了存储空间,将压缩后的待存储数据存储到ZFS文件系统对应的存储介质中。
应当说明的是,数据存储装置可以为HDFS存储系统。
本发明提供的装置的实施例具体可以用于执行上述各方法实施例的处理流程,其功能在此不再赘述,可以参照上述方法实施例的详细描述。
本发明实施例通过根据用户指定的存储策略名称获取匹配的目标存储策略,若目标存储策略指定存储的文件系统为ZFS文件系统,则先对待存储数据进行压缩在存储,从而节省了存储空间。
在上述实施例的基础上,所述装置,还包括:
第二存储模块,用于若判断获知所述目标存储策略中指定存储的文件系统为Ext4文件系统,则直接将所述待存储数据存储到Ext4文件系统对应的存储介质中。
具体的,如果用户指定的目标存储策略中对应的文件系统是Ext4文件系统,则直接第二存储模块将待存储数据存储到Ext4文件系统对应的存储介质中,应当说明的是,Ext4文件系统中的存储介质可以为固态硬盘SSD、文档服务器Archive和磁盘DISK中的任意一种或其组合。
本发明实施例通过在数据存储装置中同时配置ZFS文件系统和Ext4文件系统,根据指定的存储策略名称对待存储数据进行存储,合理分配了存储空间。
在上述实施例的基础上,所述装置,还包括:
配置模块,用于预先配置存储策略,并将所述存储策略存储到数据库中。
在上述实施例的基础上,所述装置,还包括:
分块模块,用于将所述待存储数据进行分块,获得对应的多个待存储子数据块,并根据每一待存储子数据块获得预设个数的待存储子数据块副本,相应的,
所述目标存储策略包括每一待存储数据子数据块副本对应的文件系统和存储介质。
具体的,在接收到用户发送的待存储数据和存储策略名称后,分块模块可以根据预设字节数对待存储数据进行分块,从而得到多个待存储子数据块,每个待存储子数据块通常情况下有三个待存储子数据块副本,因此,存储策略中应当包括每个待存储子数据块副本对应的文件系统和存储介质,不一定要将所有的待存储子数据块副本存储在同一个文件系统的同一个存储介质中,如上表中的存储策略。如果有部分或全部待存储子数据块副本存储在了ZFS文件系统的某个存储介质中,则需要对该待存储子数据块副本进行压缩,然后在进行存储。
本发明实施例通过根据用户指定的存储策略名称获取匹配的目标存储策略,若目标存储策略指定存储的文件系统为ZFS文件系统,则先对待存储数据进行压缩在存储,从而节省了存储空间。
图4为本发明实施例提供的电子设备实体结构示意图,如图4所示,所述电子设备,包括:处理器(processor)401、存储器(memory)402和总线403;其中,
所述处理器401和存储器402通过所述总线403完成相互间的通信;
所述处理器401用于调用所述存储器402中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:接收待存储数据以及对应的存储策略名称;根据所述存储策略名称获取匹配的目标存储策略,所述目标存储策略包括指定存储的文件系统和存储介质;若判断获知所述目标存储策略中指定存储的文件系统为动态文件系统ZFS,则根据所述ZFS文件系统预先配置的压缩算法对所述待存储数据进行压缩,并将压缩后的待存储数据存储到所述ZFS文件系统对应的存储介质中。
本实施例公开一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法实施例所提供的方法,例如包括:接收待存储数据以及对应的存储策略名称;根据所述存储策略名称获取匹配的目标存储策略,所述目标存储策略包括指定存储的文件系统和存储介质;若判断获知所述目标存储策略中指定存储的文件系统为动态文件系统ZFS,则根据所述ZFS文件系统预先配置的压缩算法对所述待存储数据进行压缩,并将压缩后的待存储数据存储到所述ZFS文件系统对应的存储介质中。
本实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:接收待存储数据以及对应的存储策略名称;根据所述存储策略名称获取匹配的目标存储策略,所述目标存储策略包括指定存储的文件系统和存储介质;若判断获知所述目标存储策略中指定存储的文件系统为动态文件系统ZFS,则根据所述ZFS文件系统预先配置的压缩算法对所述待存储数据进行压缩,并将压缩后的待存储数据存储到所述ZFS文件系统对应的存储介质中。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置等实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。