《KVM虚拟化实践与编程》课程设计任务书
2023/2024学年第2学期
班级:2022级计算机与软件学院本科云计算专业
考核题目:云平台管理系统
题目描述:
基于开源libvirt API设计实现一个云平台管理系统,可以实现虚拟机的调度和管理。开发语言不限。
题目要求:
1. 使学生进一步理解和掌握使学生深入掌握虚拟化的基础知识,能够在程序开发中正确使用libvirt API;可以使用libvirt API进行虚拟机的调度和管理,提高综合运用课程知识的能力。
2. 了解虚拟机调度的工作原理和基本结构,可以进行Linux平台应用程序的开发;
题目内容:
云平台管理系统的功能包括:
1. 获取宿主机的基本情况
2. 管理虚拟机,包括虚拟机创建、启动、暂停、恢复、删除等
3. 管理镜像,包括镜像的添加、删除等
4. 设置虚拟机网络模式,包括网络的断开和连接
5. 虚拟机的快照功能,包括拍摄虚拟机快照,恢复快照,删除快照等(选做)
6. 存储池、存储卷的管理(选做)
7. 虚拟机冷、热迁移(选做)
课程设计报告:
课程设计报告要求,包括如下几个部分:
1. 虚拟化环境的搭建
2. 需求分析,画出用例图
本系统只有一种用户角色:系统管理员。系统管理员用例图如图3–1所示。
图3–1 系统管理员用例图
(1)系统管理员管理虚拟机用例图如图3–2所示。
图3–2 系统管理员管理虚拟机用例图
3. 系统设计,画出系统的功能模块图和主要功能模块的主要流程。
图4–1主要功能模块图
4. 系统实现,代码内的关键数据结构和各个功能子函数;程序的运行步骤、方式,截图等。
宿主机信息获取功能实现
在本系统中宿主机的信息至关重要,因为本系统所管理的对象如虚拟机、容器皆是依赖于宿主机存在的一但宿主机宕掉,在该宿主机上的所有对象都将无法启动,因此对宿主机的监控是非常有必要的。在本系统中获取宿主机的信息使用的是Hyperic-Sigar工具集,但由于该工具集只能获取本地宿主机信息,因此需要使用远程调用方法来获取其他宿主机的信息。通过在本地调用Hyperic-Sigar的接口方法可以获取本地宿主机的所有硬件信息。为了使CPU的数据可视化,本系统采用EChars来实现数据可视化。宿主机信息展示如图5–1所示。
图5–1 宿主机信息展示
远程调用
在本系统中,因系统功能要求需要宿主机的硬件运行信息而Hyperic-Sigar工具集又只能对本地宿主机的信息进行收集,因此需要使用Java的远程调用方法实现远程获取宿主机的硬件运行信息。远程调用代码如下:
try {
ServerInfo serverInfo = new ServerInfoImpl();
LocateRegistry.createRegistry(8888);
Naming.bind("rmi://192.168.10.102:8888/ServerInfo",serverInfo);
System.out.println(">>>>>INFO:远程IHello对象绑定成功!");//代码注释
} catch (RemoteException e) {
System.out.println("创建远程对象发生异常!");
e.printStackTrace();
} catch (AlreadyBoundException e) {
System.out.println("发生重复绑定对象异常!");
e.printStackTrace();
5. 附录:源程序清单
1.c
2.c
其他要求:
1. 分组完成(二人或者三人一组),抄袭者总成绩记为零分。
2. 课程设计报告不交,总成绩记为零分(一组交一份即可)。
3. 程序不能运行,总成绩记为零分。
上交内容:
1. 电子版:课程设计报告+源代码(可附加程序使用说明)
南 阳 理 工 学 院
《KVM虚拟化实践与编程课程设计》报告
云平台管理系统
专业: 软件工程
班级: 22云计算1班
指导教师: 单平平
南阳理工学院计算机与软件学院
2024年06月
1虚拟化环境的搭建(黑体小三号)
1.1 课题研究的背景(黑体四号)
容器与虚拟机是两种虚拟化方式,在实际应用中各有优劣。本课题目标在于设计一个管理系统,以提高虚拟化技术的使用效率。Docker是目前流行的轻量级虚拟化容器平台,与传统的虚拟机相比,Docker容器具有诸多优势,如启停速度快、占用资源少、方便的镜像构造和轻简的部署和管理等[1]。虚拟化技术会结合硬件和软件的聚合,并将计算资源切分,得到多个操作环境。虚拟化技术通常会产生虚拟系统,与真实系统不同且不会互相接触[2]。虚拟化并非是完美无缺的,该种技术也有着缺陷与不足之处[3]。但是两者技术都有使用较为繁琐的缺点,对用户不太友好。因此,如何提供更加灵活和可扩展的部署方案,成为当前云计算领域的一个重要研究课题。基于Linux系统的容器和KVM双引擎管理系统的设计与开发,正是针对以上问题而提出的解决方案。该系统提供了简易的虚拟机及容器的创建方式,实现了更加高效、可靠的部署和管理,具有非常重要的理论和实践价值。
正文:宋体小四号,首行缩进两字符
段落:多倍行距1.25,
图:图格式要标准,居中,图的下方有图号和图名
图1 私有云管理平台界面
代码:程序代码符合要求,如下所示:
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
demo.shutdown();//关闭虚拟机
} catch (LibvirtException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}