网络靶场云平台数据盘管理系统与方法与流程

文档序号:22344016发布日期:2020-09-25 18:16阅读:199来源:国知局
网络靶场云平台数据盘管理系统与方法与流程

本发明涉及一种网络靶场云平台数据盘管理系统与方法,属于网络技术领域。



背景技术:

网络靶场是对真实网络的仿真。在网络靶场中,运行着若干虚拟机,与真实计算机类似的,虚拟机也包含cpu、内存和磁盘。为了与真实计算机的磁盘区分,虚拟机的磁盘称为虚拟磁盘。虚拟磁盘按照用途可分为系统盘、数据盘,通常用c盘代表系统盘,d盘代表数据盘。

系统盘上承载着虚拟机操作系统,系统盘与虚拟机是一一绑定的。数据盘一般用于存储用户数据,它独立于虚拟机,在虚拟机销毁之后数据盘会保留下来。在使用上,数据盘是支持插拔,可以在不同的虚拟机中使用。这一点跟u盘是十分类似,可以用数据盘来复制和转移数据。

在网络靶场中,与数据盘相关的系统有两个:存储系统和计算系统。存储系统通常由管理模块和后端模块(如nfs)组成,负责数据盘的管理,包括创建、删除、查询等;计算系统通常由调度模块和虚拟化管理器(如kvm)组成,负责虚拟机的管理,包括创建、删除、启动、停止等,还有数据盘的挂载也是由计算系统负责的。

用户创建和使用一个数据盘,需要在计算系统和存储系统中切换,流程如图1所示。首先申请创建一个新的数据盘时,除了需要指定数据盘大小之外,为了与其它数据盘进行区分,这时存储系统还需要用户输入一个名字。存储系统不限制也不关心数据盘的用途,所以由它创建的数据盘是一块空白盘。

在一个新的数据盘挂载到虚拟机之后,在虚拟机中出现了新的磁盘设备,但它是未经初始化的。某些现代操作系统(比如win10)会提示用户进行初始化操作;而旧的操作系统(比如win7)没有任何提示,全靠用户手工调用磁盘工具来处理。而在磁盘工具中,需要对数据盘进行初始化分区表、创建分区、格式化、指定卷标、指定挂载点等一系列繁琐且耗时的操作,每一步都有一些参数需要用户去选择甚至计算,比如怎样确定分区类型和分区起始位置;完成这些操作之后才能开始用它存取文件。

因而,现有的数据盘创建和使用方式存在如下问题:1、创建和挂载数据盘的操作需要在多个系统之间切换,较为繁琐;2、很多时候数据盘的名称对用户并不重要,而存储系统强制要求提供数据盘名称;3、在虚拟机里初始化一块空白数据盘,需要用户掌握虚拟机文件系统的相关知识,且操作复杂,容易出错,对用户不友好,还容易造成空间资源的浪费。4、在虚拟机中数据盘名称与存储系统中数据盘名称毫无关联,特别是在一个虚拟机同时挂载多块数据盘时,用户在虚拟机中无法区分它们,给使用带来困难。



技术实现要素:

发明目的:针对上述现有技术存在的问题,本发明的目的在于提供一种网络靶场云平台数据盘管理系统与方法,以实现优化用户操作流程、提高用户体验、降低数据盘空间的浪费。

技术方案:为实现上述发明目的,本发明采用如下技术方案:

网络靶场云平台数据盘管理系统,包括:配置接口模块,用于获取添加数据盘的指令,以及所添加数据盘的名称、大小和需要添加数据盘的虚拟机;所述数据盘的名称根据默认列表中未使用过的名称生成,或由用户指定的未使用过的名称;系统设置模块,用于预置系统参数,包括数据盘分区表类型、文件系统类型和空间浪费比率;数据盘统计模块,用于通过事件订阅从计算系统采集网络靶场所有虚拟机的数据盘的文件系统的使用情况,并根据收集到的文件大小和给定的空间浪费比率计算出最大的文件系统分配单元大小;数据盘创建模块,用于调用存储系统创建所添加的指定名称和大小的数据盘,并记录数据盘的名称、编号和所属存储系统;数据盘挂载模块,用于在数据盘创建后,直接根据数据盘编号和需要挂载的虚拟机调用计算系统将新创建的数据盘挂到执行添加数据盘操作的虚拟机;以及,数据盘初始化模块,用于对新创建的数据盘进行初始化操作,使其变成一个可立即存取文件的文件系统;所述初始化操作包括根据配置的分区表类型创建分区表,创建分区,根据虚拟机的操作系统类型或配置的文件系统类型选择文件系统,使用数据盘统计模块计算的最大的文件系统分配单元大小执行数据盘的快速格式化操作、以及设置数据盘的卷标为创建时指定的数据盘的名称。

进一步地,所述数据盘统计模块,包括:采集事件订阅单元,用于通过计算系统订阅接口订阅并接收计算系统的数据盘文件系统使用情况采集事件;采集数据存储单元,用于将采集事件解析过滤后,将文件路径和大小保存到数据库;以及,统计单元,用于根据采集到的文件信息和给定的空间浪费比率计算出最大的文件系统分配单元大小。

进一步地,最大的文件系统分配单元大小的计算方法为:设s为文件分配单元大小,初始值为64k,总文件数为n,第i个文件的长度为li,那么总大小为sum(li),占用空间为sum(ceil(li/s)*s),空间利用率为sum(li)/sum(ceil(li/s)*s),空间浪费比率为w=1-sum(li)/sum(ceil(li/s)*s);其中ceil表示向上取整函数,sum表示求和函数;当w大于给定的空间浪费比率a时,s减半,重复计算,直到w小于或等于a,此时的s作为最大的文件系统分配单元大小。

进一步地,所述数据盘初始化模块,包括:远程调用单元,用于数据盘初始化模块与数据盘统计模块、计算系统以及存储系统通信;分区表创建单元,用于获取分区表类型,创建分区表;分区创建单元,用于将整个数据盘分成一个区;文件系统选择单元,用于根据配置的文件系统类型或和虚拟机操作系统类型选择文件系统类型;其中系统设置模块根据网络靶场建设要求预置文件系统类型,若配置为“自动”,则虚拟机操作系统类型自动选择对应的文件系统类型;格式化单元,用于使用数据盘统计模块计算得出的最大的文件系统分配单元大小执行数据盘的快速格式化操作;以及,卷标设置单元,用于将数据盘的卷标设置为创建时指定的数据盘的名称。

进一步地,在存在至少两种存储系统的环境中,所述数据盘初始化模块部署在计算系统上;在只有一种存储系统的环境中,所述数据盘初始化模块部署在计算系统上或存储系统上。

网络靶场云平台数据盘管理方法,包括如下步骤:

步骤1:通过事件订阅从计算系统采集网络靶场所有虚拟机的数据盘的文件系统的使用情况,收集数据盘中存储的所有文件大小;

步骤2:在用户需要创建新的数据盘时,生成一组预定义的名称,根据用户选择的未使用过的名称或输入的名称生成所添加数据盘的名称,并获取所添加数据盘的大小和需要添加数据盘的虚拟机;

步骤3:调用存储系统创建所添加的指定名称和大小的数据盘,并记录数据盘的名称、编号和所属存储系统;

步骤4:在数据盘创建后,直接根据数据盘编号和需要挂在的虚拟机调用计算系统将新创建的数据盘挂到执行添加数据盘操作的虚拟机;

步骤5:对新创建的数据盘进行初始化操作,使其变成一个可立即存取文件的文件系统,初始化操作包括:根据配置的分区表类型创建分区表,创建分区,根据虚拟机的操作系统类型或配置的文件系统类型选择文件系统,执行数据盘的快速格式化操作、以及设置数据盘的卷标为创建时指定的数据盘的名称;

其中执行数据盘的快速格式化操作之前根据收集到的文件大小和给定的空间浪费比率计算出最大的文件系统分配单元大小,并使用最大的文件系统分配单元大小执行数据盘的快速格式化操作。

进一步地,在只有一种存储系统的环境中,数据盘初始化由存储系统执行或由计算系统执行,执行时机可以是创建后或者挂载时;在存在多种存储系统的环境中,数据盘初始化由计算系统执行。

进一步地,在用户需要创建新的数据盘时,为用户提供预定义名称列表,并且从中随机选中一个未被使用的名称,作为默认名称;若用户采用被使用过的名称,则根据一定的规则添加一个后缀,以避免重复,后缀为数据盘大小、当前日期、顺序编号或随机数字。

有益效果:本发明的数据盘管理系统能够从计算系统接收数据盘文件系统采集数据,根据文件系统使用情况,统计出合适的文件系统参数;并且简化了数据盘创建所需的参数和流程,实现数据盘的自动初始化。与现有技术相比,本发明具有如下优点:1、自动命名能够帮助用户避免中断思路去考虑命名问题,能够提高整个操作过程的流畅度,进而提高用户体验。2、创建和使用数据盘的全流程从原来的十次以上交互操作,压缩到三次以内,精简70%以上。3、通过收集历史使用情况统计出最佳参数,以最佳参数对数据盘进行初始化,缩短了初始化时间,减少了操作失误。不再需要用户掌握磁盘分区和文件系统相关知识,降低了用户使用网络靶场的学习成本。4、通过设置卷标,使卷标与数据盘名称相同,让用户在存取文件的时候能够清楚地辨认数据盘。

附图说明

图1为创建数据盘的原始执行时序图。

图2为创建数据盘的优化后执行时序图。

图3为数据盘初始化模块的执行流程图。

图4为单存储网络靶场环境中数据盘初始化的执行时序图。

图5为多存储网络靶场环境中数据盘初始化的执行时序图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅只是本发明的一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的其他所有实施例,都属于本发明保护的范围。

本发明实施例公开的网络靶场云平台数据盘管理系统,主要包括配置接口、系统设置、数据盘统计、数据盘创建、数据盘挂载、数据盘初始化等模块。各模块的功能具体如下:

配置接口模块,用于获取添加数据盘的指令,以及所添加数据盘的名称、大小和需要添加数据盘的虚拟机。其中数据盘的名称根据默认列表中未使用过的名称生成,或由用户指定的未使用过的名称。自动生成的前提条件是,假定大多数用户不会创建大量数据盘,正如现实世界中的大众用户持有的u盘数量不会太多。本实施例中具体生成方式如下。

系统预先定义一组名称,这组名称需要满足这些特征:

1、常见。常见的词浅显易懂,用户不需要花过多时间去思考词的含义。

2、中性。同样是为了避免分散用户的注意力。

3、同一类别。比如都是人名,或者都是地名,或者都是颜色。同类别的词,更适合以列表的形式展示,方便用户选择。

用户在创建数据盘时,系统首先展示预定义名称列表,并且从中随机选中一个未被使用的名称(可以根据数据库中为用户保存的数据盘记录查找),作为默认名称;用户可以立即确认使用这个名称。

后缀规则:

当查询得知所有预定义名称列表都已被使用时,系统依然随机选中一个预定义名称,但根据一定的规则添加一个后缀,以避免重复。后缀可以是数据盘大小、当前日期、顺序编号、甚至可以是随机数字。

降级处理:

当预定义名称和后缀规则都未能产生唯一的名称,放弃自动生成,降级为需要原有人工命名的方式。现实中这种情况极为少见。

系统设置模块,用于预置系统参数,如数据盘分区表类型、文件系统类型和空间浪费比率等。

数据盘统计模块,用于通过事件订阅从计算系统采集网络靶场所有虚拟机的数据盘的文件系统的使用情况,并根据收集到的文件大小和给定的空间浪费比率计算出最大的文件系统分配单元大小。数据统计模块包括采集事件订阅单元、采集数据存储单元和统计单元。采集事件订阅单元调用计算系统订阅接口订阅所有虚拟机的数据盘文件系统使用情况采集事件;计算系统持续将采集事件推送给采集事件订阅单元;采集数据存储单元将采集事件解析过滤之后,将文件路径和大小保存到数据库中;统计单元在被数据盘初始化模块调用时,收到指定的空间浪费比率作为参数(记为a),求解最大的文件系统分配单元。

具体计算过程如下:设s为文件分配单元大小(初始值为64k),总文件数为n,第i个文件的长度为li,那么总大小为sum(li),占用空间为sum(ceil(li/s)*s),空间利用率为sum(li)/sum(ceil(li/s)*s),空间浪费比率为w=1-sum(li)/sum(ceil(li/s)*s)。当w大于a时,s减半,重复计算,直到w小于或等于a,将s作为结果返回给数据盘初始化模块。

数据盘创建模块,用于调用存储系统创建所添加的指定名称和大小的数据盘,并记录数据盘的名称、编号和所属存储系统。数据盘创建模块包括远程调用单元,用于数据盘创建模块与存储系统通信;信息记录单元,用于记录用户创建的数据盘名称、唯一编号和所属存储系统等;调度单元,用于在部署多个存储系统时,根据存储系统情况进行数据盘创建请求的调度。

数据盘挂载模块,用于在数据盘创建后,直接根据数据盘编号和需要挂在的虚拟机调用计算系统将新创建的数据盘挂到执行添加数据盘操作的虚拟机。本发明中整合了创建和挂载操作,用户创建一个数据盘的目标往往是需要马上挂载到虚拟机以便存取文件。所以由用户执行的创建、查询和挂载这几个操作可以合并,由数据盘管理系统代为执行;并且查询操作可以省略(图1)。具体步骤是,配置接口模块接收数据盘名称、大小和需要挂载到的虚拟机这三个参数;由创建模块将数据盘名称和大小传递给存储系统,并调用其创建指令,获取其返回的数据盘唯一编号并保存;将数据盘唯一编号和需要挂载到的虚拟机传递给计算系统,并调用其挂载指令(图2)。

数据盘初始化模块,用于对新创建的数据盘进行初始化操作,使其变成一个可立即存取文件的文件系统。数据盘初始化模块包括:远程调用单元,用于数据盘初始化模块与数据盘统计模块、计算系统以及存储系统通信;分区表创建单元,用于获取分区表类型,创建分区表;分区创建单元,用于将整个数据盘分成一个区;文件系统选择单元,用于根据配置的文件系统类型或和虚拟机操作系统类型选择文件系统类型;格式化单元,用于使用数据盘统计模块计算得出的最大的文件系统分配单元大小执行数据盘的快速格式化操作;卷标设置单元,用于将数据盘的卷标设置为创建时指定的数据盘的名称。具体操作步骤如图3所示,包括:

1、创建分区表:常见的分区表包括mbr和gpt,使用何种分区表根据项目实际需要确定,从系统设置模块读取此项设置。对于经典的网络靶场场景,应当使用mbr;对于现代的网络靶场场景,如大数据场景,应当使用gpt。

2、创建分区:跟u盘一样,数据盘只需要一个分区,因此将整个数据盘分成一个区即可。分区的起始位置,根据实际需要选择合适的对齐位置;分区的结束位置选择最后一个可用位置。

3、选择文件系统:在系统设置模块中读取文件系统类型设置。此文件系统类型可以为fat32,适用于存在多种操作系统的网络靶场,满足兼容性需求。文件系统类型也可以是ntfs,适用于需要存储大文件的网络靶场。也可以是“自动”,即自动选择虚拟机操作系统默认的文件系统,例如对于操作系统是centos5的虚拟机,自动选择ext3文件系统;适用于小规模、简单的网络靶场。设置成“自动”后,初始化过程依赖虚拟机信息,只能在挂载时执行,因此数据盘初始化模块应当部署在计算系统中,这样就能在计算系统的执行上下文中获得虚拟机信息,包括其操作系统类型。

4、格式化:调用系统设置模块获取预设的空间浪费比率;将此比率传递给数据盘统计模块,由统计模块根据采集的文件大小数据,计算出空间浪费比率不超地指定比率的最大文件系统分配单元大小;以此分配单元大小执行数据盘的快速格式化操作。

5、设置卷标:新分区如果没有指定卷标,那么在虚拟机中使用该分区时,会显示成“新加卷(d:)”这类无意义的名字。由于在数据盘管理系统中已经为数据盘生成一个名称,所以这时可以通过查询获得这个名称,并设置为卷标。这样在创建和使用数据盘的两个场景中,名称得以统一,也帮助用户省略了设置卷标的操作。

数据盘初始化的执行时机,需要考虑网络靶场存储系统的种类。

如图4所示,在只有一种存储系统的环境中,数据盘初始化可以由存储系统执行,也可以由计算系统执行。执行时机可以是创建后或者挂载时。创建后初始化需要由存储系统执行,同步执行或者异步执行皆可。挂载时初始化可以由存储系统或计算系统完成,由于用户发起挂载操作后处于等待状态,应当尽快处理完毕,所以只能同步执行。

如图5所示,在存在多种存储系统(如nas、nfs、块存储等)的环境中,数据盘初始化应当由计算系统执行。如果由存储系统来执行,那么每个存储系统都需要开发,工作量大,且不易于维护。而从计算系统来看,不论何种存储,都可以看成抽象的虚拟磁盘,处理方式是一样的,只需要开发一套代码就可以处理所有类型的存储系统。

基于相同的发明构思,本发明公开的网络靶场云平台数据盘管理方法,包括如下步骤:

步骤1:通过事件订阅从计算系统采集网络靶场所有虚拟机的数据盘的文件系统的使用情况,收集数据盘中存储的所有文件大小;

步骤2:在用户需要创建新的数据盘时,生成一组预定义的名称,根据用户选择的未使用过的名称或输入的名称生成所添加数据盘的名称,并获取所添加数据盘的大小和需要添加数据盘的虚拟机;

步骤3:调用存储系统创建所添加的指定名称和大小的数据盘,并记录数据盘的名称、编号和所属存储系统;

步骤4:在数据盘创建后,直接根据数据盘编号和需要挂在的虚拟机调用计算系统将新创建的数据盘挂到执行添加数据盘操作的虚拟机;

步骤5:对新创建的数据盘进行初始化操作,使其变成一个可立即存取文件的文件系统,初始化操作包括:根据配置的分区表类型创建分区表,创建分区,根据虚拟机的操作系统类型或配置的文件系统类型选择文件系统,执行数据盘的快速格式化操作、以及设置数据盘的卷标为创建时指定的数据盘的名称;其中执行数据盘的快速格式化操作之前根据收集到的文件大小和给定的空间浪费比率计算出最大的文件系统分配单元大小,并使用最大的文件系统分配单元大小执行数据盘的快速格式化操作。

上述各步骤的具体实现参照前述系统的各个功能模块,此处不再赘述。下面结合应用场景对本发明的应用做示例性说明。本示例中,使用一组颜色作为预定义名称:红色、橙色、黄色、蓝色、紫色;使用磁盘大小作为名称后缀,用伪码表示为:${预定义名称}_${磁盘大小};当用户创建第1个数据盘时,从上述五个颜色中随机选择一个颜色作为名称;当用户创建更多数据盘时,从剩余未被使用的颜色中随机选择一个颜色作为名称;当所有颜色都被使用时,从上述五个颜色中随机选择一个颜色作为名称的前缀,并将磁盘大小作为名称的后缀,如“红色_50g”;当用户手动选择一个已经被使用的颜色时,也将磁盘大小作为名称的后缀,以尝试避免重免。

在计算系统对每一个虚拟机增加一个“添加数据盘”操作。当用户执行此操作时,调用数据盘管理系统。

1、首先进入创建数据盘页面,自动为用户生成数据盘名称,显示默认的数据盘大小,允许用户修改名称和大小。经用户确认后,开始创建数据盘。随后调用计算系统,将新创建的数据盘挂到刚刚执行“添加数据盘”操作的虚拟机。

2、在计算系统连接上数据盘之后,由初始化模块创建mbr分区表,创建1个主分区,分区起始位置定为2048扇区、结束位置为最后一个扇区。

3、初始化模块向计算系统查询虚拟机信息,获知虚拟机运行的系统类型。对于windows系统的虚拟机,将数据盘的分区格式化为ntfs格式的文件系统;对于linux系统的虚拟机,将数据盘的分区格式化为ext3格式的文件系统;对于其它系统的虚拟机,则格式化为fat格式。

4、初始化模块向存储系统查询当前操作的数据盘的名称,将数据盘名称(如“红色”)设置为新文件系统的卷标。

由上可见,本发明提供的网络靶场云平台数据盘管理系统与方法,有效降低了用户管理网络靶场云平台数据盘的难度,以非常友好的方式通过最少的交互,创建出最优的数据盘,使得用户能够快速进入并使用网络靶场的环境中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1