数据处理方法、装置和电子设备与流程

文档序号:30582810发布日期:2022-06-29 13:22阅读:81来源:国知局
数据处理方法、装置和电子设备与流程

1.本技术涉及信息处理技术领域,具体而言,涉及数据处理方法、镜像文件处理方法、装置和电子设备。


背景技术:

2.在openstack软件栈中,虚拟机需要镜像才能正常运行,其中,raw格式的镜像文件通常能够与ceph存储系统搭配,从而快速创建出虚拟机。但由于raw格式的镜像文件通常是稀疏的,在数据中存在大量无意义的空洞数据,导致镜像文件的文件大小往往较大,在存储过程中需要占用较多的资源。


技术实现要素:

3.本技术实施例的目的在于提供数据处理方法、装置和电子设备,用于解决现有技术中,镜像文件存储时占用较多资源的问题。
4.本技术实施例第一方面提供了一种数据处理方法,所述方法包括:
5.获取待处理数据块;
6.判断所述待处理数据块是否包括空洞数据块;
7.在所述待处理数据块包括空洞数据块的情况下,删除所述待处理数据块。
8.于一实施例中,所述方法还包括:将raw格式的镜像文件进行分割,以生成所述待处理数据块。
9.于一实施例中,所述待处理数据块的数据类型为字符数组;以及,
10.获取待处理数据块,具体包括:
11.利用c语言扩展模块中的字符指针获取所述待处理数据块。
12.于一实施例中,所述方法还包括:在所述python代码程序中,通过调用import函数导入所述c语言扩展模块。
13.于一实施例中,所述c语言扩展模块通过cython代码程序编译生成。
14.于一实施例中,判断所述待处理数据块是否包括空洞数据块,具体包括:
15.通过遍历所述待处理数据块,判断所述待处理数据块中非空字节的占比或数量是否小于或等于第一预设阈值;
16.若是,则包括空洞数据块;或,
17.若否,则不包括空洞数据块。
18.于一实施例中,判断所述待处理数据块是否包括空洞数据块,具体包括:
19.通过遍历所述待处理数据块,判断所述待处理数据块中连续空字节的数量或字节长度占比是否大于或等于第二预设阈值;
20.若是,则包括空洞数据块;或,
21.若否,则不包括空洞数据块。
22.于一实施例中,所述方法还包括:
23.在所述待处理数据块不包括空洞数据块的情况下,存储所述待处理数据块。
24.本技术实施例第二方面提供了一种数据处理装置,包括:
25.获取单元,用于获取待处理数据块;
26.判断单元,用于判断所述待处理数据块是否包括空洞数据块;
27.删除单元,用于在所述待处理数据块包括空洞数据块的情况下,删除所述待处理数据块。
28.本技术实施例第三方面提供了一种电子设备,其特征在于,包括:
29.存储器,用以存储计算机程序;
30.处理器,用以执行本技术方法实施例中任一项所述的方法。
31.采用本技术实施例所提供的数据处理方法,该方法包括获取待处理数据块,然后判断该待处理数据块是否包括空洞数据块,然后在该待处理数据块包括空洞数据块的情况下,删除该待处理数据块。这样能够通过对待处理数据块是否包括空洞数据块进行判断,进而删除包括空洞数据块的待处理数据块,从而降低镜像文件的文件大小,在存储过程中节省资源。
附图说明
32.为了更清楚地说明本技术实施例的技术方案,下面将对本技术实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
33.图1为本技术一实施例提供的电子设备的结构示意图;
34.图2为本技术一实施例提供的,电子设备与终端交互示意图;
35.图3为本技术一实施例提供的,多个电子设备组成的服务器集群的结构示意图;
36.图4为本技术一实施例提供的,数据处理方法的具体流程示意图;
37.图5为本技术一实施例提供的,具体应用场景下数据处理方法的具体流程示意图;
38.图6为本技术一实施例提供的,数据处理装置的具体结构示意图;
39.图7为本技术一实施例提供的,镜像文件处理装置的具体结构示意图。
具体实施方式
40.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行描述。在本技术的描述中,诸如“第一”、“第二”、“第三”等术语仅用于区分描述,而不能理解为指示或暗示相对重要性或先后顺序。
41.如前所述,raw格式的镜像文件通常能够与ceph存储系统搭配,从而快速创建出虚拟机。但由于raw格式的镜像文件通常是稀疏的,在数据中存在大量无意义的空洞数据,导致镜像文件的文件大小往往较大,在存储过程中需要占用较多的资源。
42.比如,在将该镜像文件存储至ceph存储系统时,由于镜像文件的文件大小往往较大,需要占用较多的存储空间;当然,若将该raw格式的镜像文件在上传至openstack服务器,或在不同openstack服务器集群之间进行同步时,由于镜像文件的文件大小往往较大,此时也需要占用较多的带宽。
43.如图1所示,本实施例提供一种电子设备1,包括:至少一个处理器11和存储器12,图1中以一个处理器为例。处理器11和存储器12可以通过总线10连接,存储器12存储有可被处理器11执行的指令,指令被处理器11执行,以使电子设备1可执行下述的实施例中方法的全部或部分流程。
44.该电子设备1可以是笔记本电脑、台式电脑、其组成的服务器或服务器集群等,比如该电子设备1可以是openstack虚拟化平台中,用于实现虚拟资源管理的openstack服务器,或多个openstack服务器组成的openstack服务器集群。
45.如图2所示,在实际应用中,电子设备1还可以对接一个或多个终端2,电子设备1可以分别和每个终端2进行数据通信。该终端可以是用户的手机、笔记本电脑、台式电脑等。于一实施例中,当用户需要上传镜像文件至作为服务器的电子设备1时,可以通过终端2将镜像文件上传至电子设备1。
46.如图3所示,于一实施例中,多个电子设备1分别作为不同的服务器集群,不同服务器集群之间通常需要进行镜像文件的同步,可以通过定时任务等,将镜像文件从一个服务器集群发送至另一个服务器集群,从而实现不同服务器集群之间镜像文件的同步。
47.如图4所示为本技术一实施例的数据处理方法的流程示意图,该方法部分或全部步骤可由图1所示的电子设备1作为openstack服务器来执行,该方法部分或全部步骤也可由图2所示的终端2来执行,这里可以以电子设备1作为openstack服务器来执行该方法作为示例,对该方法进行说明,该方法包括如下的步骤s21~步骤s24。
48.需要说明的是,在该openstack服务器中设置有python代码程序,并且该python代码程序可以包括c语言扩展模块,从而通过该c语言扩展模块来执行本技术实施例所提供的数据处理方法。
49.在实际应用中,通常可以先利用cython语言编辑得到cython代码程序,然后将该cython代码程序编译生成该c语言扩展模块,然后在该python代码程序中,通过调用import函数导入该c语言扩展模块。其中,cython语言与python语言的语法类似,因此可以将cython语言编辑生成cython代码程序编译为python代码程序中的c语言扩展模块,以此提升python代码程序的运行效率。当然,也可以直接使用c语言编辑得到该c语言扩展模块,然后在该python代码程序中,通过调用import函数导入该c语言扩展模块。
50.步骤s21:获取待处理数据块。
51.比如,可以通过字符指针获取待处理数据块,其中,该待处理数据块的数据类型为字符数组。特别是,在该c语言扩展模块中,可以先声明字符指针,比如声明char*p,从而得到字符指针p,然后可以利用c语言扩展模块中的该字符指针p,获取数据类型为字符数组的待处理数据块。
52.步骤s22:判断该待处理数据块是否包括空洞数据块,若是,则执行步骤s23,若否,则执行步骤s24。
53.其中,该空洞数据块可以具体为非空字节的占比小于或等于第一预设阈值的数据块,或者,空洞数据块也可以为非空字节的数量小于或等于第一预设阈值的数据块。
54.在该待处理数据块中可能存在空字节和非空字节,因此能够计算出该待处理数据块中非空字节的占比或数量。以非空字节占比为例,当非空字节的占比小于或等于第一预设阈值(此处的第一预设阈值可以为比例数值)时,说明该待处理数据块中的非空字节过
少,而空字节过多,则该待处理数据块包括空洞数据块;反之,如果非空字节的占比大于第一预设阈值,则说明该待处理数据块中的空字节相对较少,该待处理数据块不包括空洞数据块。
55.需要说明的是,当通过非空字节的数量,确定是否包含空洞数据块时,类似于上述非空字节占比的相关过程,其中,所设定的第一预设阈值可以为数量值。
56.因此,对于判断该待处理数据块是否包括空洞数据块的具体方式,可以通过遍历该待处理数据块,从而分别确定该待处理数据块中非空字节的占比或数量,进而判断出待处理数据块中非空字节的占比或数量是否小于或等于第一预设阈值,若是,则待处理数据块包括空洞数据块,若否,则待处理数据块不包括空洞数据块。
57.在实际应用中,该第一预设阈值通常可以根据实际需要来设定,比如以占比来看,该第一预设阈值可以设置为20%、10%、5%甚至0;或以数量来看,该第一预设阈值可以设置为0、1、2、5等。
58.比如,当该第一预设阈值为0时,该空洞数据块具体可以为非空字节的占比或数量等于0的数据块。此时,在c语言扩展模块中,可以通过如下的代码来判断待处理数据块是否包括空洞数据块。
[0059][0060][0061]
在该代码中,通过所声明字符指针chunk获取待处理数据块,通过遍历待处理数据块,以判断该待处理数据块中是否有非空字节'\0',若存在,则说明该待处理数据块不包括空洞数据块,相应的返回值为true;若不存在,则说明该待处理数据块包括空洞数据块,相应的返回值为false。
[0062]
另外,由于判断结果为布尔值,即为false或者true,因此在该代码中还声明返回值为bint,并使用cpdef来修饰函数,以确保符合python的相关规则,能够通过调用import函数导入该c语言扩展模块。
[0063]
在实际应用中,待处理数据块中还可能存在连续空字节(即多个连续的空字节构成该连续空字节),因此还可以根据该连续空字节来判断该待处理数据块是否包括空洞数据块。比如,可以预先设定连续空字节的数量(或称字节长度)达到第二预设阈值时,认为存在空洞数据块,因此,在实际中可以通过判断该待处理数据块中连续空字节的数量(或称字节长度)是否大于或等于第二预设阈值,若是,则包括空洞数据块,若否,则不包括空洞数据
块。
[0064]
需要说明的是,判断该待处理数据块中连续空字节的占比是否大于或等于第二预设阈值的方案类似于上述通过连续空字节的数量的相关内容,当采用占比统计时,第二预设阈值为比例数值。
[0065]
比如,对于判断该待处理数据块是否包括空洞数据块的具体方式,可以通过遍历该待处理数据块,从而确定该待处理数据块中连续空字节的数量(或字节长度),进而判断该数量(或字节长度)在待处理数据块中的占比(即,字节长度占比)是否大于或等于第二预设阈值,若是,则说明待处理数据块包括空洞数据块,若否,则说明待处理数据块不包括空洞数据块。其中,该第二预设阈值通常可以根据实际需要来设定。
[0066]
当然,在实际应用中还可以通过其他方式来确定判断待处理数据块是否包括空洞数据块。比如,通过遍历该待处理数据块,从而确定该待处理数据块中各个连续空字节的字节长度,然后判断这些连续空字节的字节长度是否均小于或等于预设长度,若是,则说明待处理数据块不包括空洞数据块,若否,则说明待处理数据块包括空洞数据块。其中,该预设长度通常可以根据实际需要来设定,比如该预设长度100、150或200等。
[0067]
步骤s23:在待处理数据块包括空洞数据块的情况下,删除待处理数据块。
[0068]
步骤s24:在待处理数据块不包括空洞数据块的情况下,存储待处理数据块。
[0069]
这里可以对步骤s23和步骤s24进行统一说明。
[0070]
在上述的步骤s22判断出该待处理数据块是否包括空洞数据块之后,可以进一步根据判断结果的是或否,来进行不同的处理。即,在处理数据块包括空洞数据块的情况下,可以删除待处理数据块;或,在处理数据块不包括空洞数据块的情况下,可以存储待处理数据块。
[0071]
采用本技术实施例所提供的数据处理方法,该方法包括获取待处理数据块,然后判断该待处理数据块是否包括空洞数据块,然后在该待处理数据块包括空洞数据块的情况下,删除该待处理数据块。这样能够通过对待处理数据块是否包括空洞数据块进行判断,进而删除包括空洞数据块的待处理数据块,从而降低镜像文件的文件大小,在存储过程中节省资源。
[0072]
在实际应用中,基于本技术实施例所提供的数据处理方法,本技术实施例还可以提供一种镜像文件处理,包括可以将raw格式的镜像文件进行分割为多个数据块,并分别将这些数据块作为待处理数据块,从而应用本技术实施例所提供的数据处理方法对该待处理数据块进行处理,进而删除该raw格式的镜像文件中的空洞数据块,从而降低raw格式镜像文件的文件大小,使得在存储过程中节省资源。
[0073]
需要说明的是,本技术实施例所提供的方法的执行主体可以为openstack服务器,也可以为终端,只需要openstack服务器或终端上设置有python代码程序,并且该python代码程序可以包括c语言扩展模块,从而能够通过该c语言扩展模块来实现该数据处理方法。
[0074]
在实际应用中,还可以提供另一种技术方案来实现该数据处理方法,比如利用python语言编辑得到相应的数据处理模块(称之为python数据处理模块),并将该python数据处理模块导入至python代码程序中。比如,如下的python代码也能够用于判断待处理数据块是否包括空洞数据块:
[0075][0076]
因此,python代码程序中的python数据处理模块可以获取待处理数据块,然后根据与上述步骤s22相同的方式,判断该待处理数据块是否包括空洞数据块,并且在该待处理数据块包括空洞数据块的情况下,删除该待处理数据块。
[0077]
但是,由于python语言为动态解释型语言,在判断数据类型为字符数组的待处理数据,是否包括空洞数据块的过程中,根据语法规则需要先进行一系列的编译处理,因此相对于上述的c语言扩展模块来说,效率通常较低。并且,在待处理数据块的数据类型为字符数组的情况下,c语言扩展模块能够利用字符指针来高效率地获取待处理数据块,相对来说,python语言环境下,获取待处理数据块的效率也相对较低。
[0078]
上述是对本技术实施例所提供的方法的具体说明,为了便于理解,这里可以结合具体的应用场景,比如,终端将镜像文件上传至openstack服务器的应用场景,对该方法进行更详细的说明。在该应用场景下,用户在终端将raw格式的镜像文件在上传至作为openstack服务器的电子设备,在该openstack服务器中设置有python代码程序,并且该python代码程序可以包括c语言扩展模块。如图5所示,此时该方法包括如下步骤:
[0079]
步骤s31:终端向openstack服务器发送raw格式的镜像文件。
[0080]
步骤s32:openstack服务器接收该镜像文件。
[0081]
在该过程中,终端需要根据http协议,以数据流的方式向openstack服务器发送该镜像文件。openstack服务器在接收到数据流之后,可以将数据流组装得到该镜像文件
[0082]
步骤s33:openstack服务器将该镜像文件分割为多个数据块,并分别作为待处理数据块。
[0083]
由于raw格式的镜像文件的数据中存在大量无意义的空洞数据,导致镜像文件的文件大小往往较大,可以将该raw格式的镜像文件分割为多个数据块,其中,该数据块是一组按顺序连续排列的数据,具体来说是一组按顺序连续排列的字符,因此本质上是字符数组。
[0084]
需要说明的是,分割后的待处理数据块的字节长度需要大于或者等于空洞数据块的字节长度。
[0085]
步骤s34:c语言扩展模块通过字符指针获取该待处理数据块。
[0086]
步骤s35:c语言扩展模块判断该待处理数据块是否包括空洞数据块,若是,则执行步骤s36,若否,则执行步骤s37。
[0087]
步骤s36:删除待处理数据块。
[0088]
步骤s37:存储待处理数据块。
[0089]
当然,openstack服务器在将raw格式的镜像文件分割得到的多个数据块,分别作为待处理数据块,从而进行删除或存储之后,openstack服务器还可以向终端发送反馈信息,从而通知镜像文件已完成上传。
[0090]
显然,采用图5所示的方法,openstack服务器在存储镜像文件时,由于删除了其中的空洞数据块,因此能够降低镜像文件的文件大小,节省存储资源。
[0091]
在上述的步骤s31~s36的方法中,终端直接向openstack服务器发送镜像文件。在实际应用中,用户还可以在终端主动将镜像文件分割为多个数据块,然后将这些数据块分别作为待处理数据块上传至openstack服务器,openstack服务器在接收到该待处理数据块之后,基于c语言扩展模块通过字符指针获取该待处理数据块,然后判断该待处理数据块是否包括空洞数据块,若是,则删除该待处理数据块,若否,则存储该待处理数据块。此时,通过终端对镜像文件进行分割,对于所分割的数据块的文件大小,通常可以根据实际需要进行设定,比如可以为20m、50m等。
[0092]
需要进一步说明的是,还可以在终端上设置python代码程序,并且该python代码程序可以包括c语言扩展模块。然后,由终端将raw格式的镜像文件分割得到的多个数据块,并由终端将这些数据块分别作为待处理数据块,进而利用终端的c语言扩展模块通过字符指针获取待处理数据块,然后判断该待处理数据块是否包括空洞数据块,在待处理数据块包括空洞数据块的情况下,删除待处理数据块;或,在待处理数据块不包括空洞数据块的情况下,存储待处理数据块。这样,通过该终端能够实现对raw格式的镜像文件中,空洞数据块的删除,从而降低镜像文件的文件大小,终端在存储该数据块时,也能够节省存储资源,并且终端在向openstack服务器上传镜像文件时,由于文件大小相对较小,还能够节省带宽。
[0093]
在另一应用场景中,比如通常需要在不同openstack服务器集群之间进行raw格式的镜像文件的同步。其中,这些服务器集群中的各个openstack服务器均设置python代码程序,并且该python代码程序可以包括c语言扩展模块。
[0094]
此时,一个openstack服务器集群(后续称之为第一openstack服务器集群),将该镜像文件发送至另一个openstack服务器集群(后续称之为第二openstack服务器集群)。
[0095]
一种方式可以是,第一openstack服务器集群将raw格式的镜像文件分割得到的多个数据块,分别作为待处理数据块,向第二openstack服务器集群进行发送,第二openstack服务器集群在接收到待处理数据块之后,c语言扩展模块通过字符指针获取待处理数据块,然后判断该待处理数据块是否包括空洞数据块,在待处理数据块包括空洞数据块的情况下,删除待处理数据块;或,在待处理数据块不包括空洞数据块的情况下,存储待处理数据块,这样第二openstack服务器集群由于删除了镜像文件中的空洞数据块,因此能够节省存储资源。
[0096]
另一种方式还可以是,第一openstack服务器集群可以先将raw格式的镜像文件分割得到的多个数据块,分别作为待处理数据块,然后利用自身的c语言扩展模块通过字符指针获取待处理数据块,然后判断该待处理数据块是否包括空洞数据块,在待处理数据块包括空洞数据块的情况下,删除待处理数据块;或,在待处理数据块不包括空洞数据块的情况下,存储待处理数据块。这样,第一openstack服务器集群删除了镜像文件中的空洞数据块,在将镜像文件发送至第二openstack服务器集群的过程中,还能够节省带宽。当然,第一openstack服务器集群和第二openstack服务器集群在存储镜像文件时,也能够节省存储资
源。
[0097]
另一种方式还可以是,第一openstack服务器集群直接将raw格式的镜像文件向第二openstack服务器集群进行发送,第二openstack服务器集群在接收到该镜像文件之后,先将该镜像文件分割为多个数据块,并分别作为待处理数据块,然后c语言扩展模块通过字符指针获取待处理数据块,然后判断该待处理数据块是否包括空洞数据块,在待处理数据块包括空洞数据块的情况下,删除待处理数据块;或,在待处理数据块不包括空洞数据块的情况下,存储待处理数据块,这样第二openstack服务器集群由于删除了镜像文件中的空洞数据块,因此也能够节省存储资源。
[0098]
基于与本技术实施例所提供的,数据处理方法相同的发明构思,本技术实施例还提供了一种数据处理装置,对于该装置实施例,如有不清楚之处,可以参考方法实施例的相应内容。如图6所示为该装置40的具体结构示意图,该装置40包括:
[0099]
获取单元401,用于获取待处理数据块;
[0100]
判断单元402,用于判断所述待处理数据块是否包括空洞数据块;
[0101]
删除单元403,用于在所述待处理数据块包括空洞数据块的情况下,删除所述待处理数据块。
[0102]
采用本技术实施例所提供的装置40,由于该装置40采用与本技术实施例所提供的,数据处理方法相同的发明构思,在该数据处理方法能够解决技术问题的前提下,该装置40也能够解决技术问题,这里对此不再赘述。
[0103]
另外,在实际应用中,通过将该装置40与具体硬件设备相结合所取得的技术效果,也在本技术的保护范围之内,比如采用分布式集群的方式将该装置40中的不同单元布设于分布式集群中的不同节点中,从而提高效率等。
[0104]
在实际应用中,该装置40还可以包括分割单元,用于将raw格式的镜像文件进行分割,以生成所述待处理数据块。
[0105]
该装置40可以应用于python代码程序中的c语言扩展模块。该c语言扩展模块可以通过cython代码程序编译生成。在所述python代码程序中,可以通过调用import函数导入所述c语言扩展模块。因此,在待处理数据块的数据类型为字符数组的情况下,获取单元401,可以利用c语言扩展模块中的字符指针获取所述待处理数据块。
[0106]
判断单元402可以包括第一判断子单元,用于通过遍历所述待处理数据块,判断所述待处理数据块中非空字节的占比或数量是否小于或等于第一预设阈值;若是,则包括空洞数据块;或,若否,则不包括空洞数据块。
[0107]
判断单元402还可以包括第二判断子单元,用于通过遍历所述待处理数据块,判断所述待处理数据块中连续空字节的数量或字节长度占比是否大于或等于第二预设阈值;若是,则包括空洞数据块;或,若否,则不包括空洞数据块。
[0108]
该装置40还可以包括存储单元,用于在所述待处理数据块不包括空洞数据块的情况下,存储所述待处理数据块。
[0109]
基于与本技术实施例所提供的,镜像文件处理方法相同的发明构思,本技术实施例还提供了一种镜像文件处理装置,对于该装置实施例,如有不清楚之处,可以参考方法实施例的相应内容。如图7所示为该装置50的具体结构示意图,该装置50包括:
[0110]
第二分割单元501,用于将raw格式的镜像文件分割为多个数据块;
[0111]
第二删除单元502,用于分别将分割得到的各个数据块作为待处理数据块,并利用本技术实施例所提供的数据处理方法,对该待处理数据块进行处理,以删除所述镜像文件中的空洞数据块。
[0112]
采用本技术实施例所提供的装置50,由于该装置50采用与本技术实施例所提供的,数据处理方法相同的发明构思,在该数据处理方法能够解决技术问题的前提下,该装置50也能够解决技术问题,这里对此不再赘述。
[0113]
本发明实施例还提供了一种存储介质,包括:程序,当其在电子设备上运行时,使得电子设备可执行上述实施例中方法的全部或部分流程。其中,存储介质可为磁盘、光盘、只读存储记忆体(read-only memory,rom)、随机存储记忆体(random access memory,ram)、快闪存储器(flash memory)、硬盘(hard disk drive,缩写:hdd)或固态硬盘(solid-state drive,ssd)等。存储介质还可以包括上述种类的存储器的组合。
[0114]
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1