【KVM虚拟化实践与编程】云平台管理系统 |
您所在的位置:网站首页 › 虚拟云服务实验报告册答案 › 【KVM虚拟化实践与编程】云平台管理系统 |
文章目录
【KVM虚拟化实践与编程】云平台管理系统一、KVM/QEMU虚拟化环境的搭建1. 安装QEMU2.构建KVM环境3.安装虚拟化管理工具4.配置JDK环境
二、需求分析三、系统设计四、系统实现
【KVM虚拟化实践与编程】云平台管理系统
一、KVM/QEMU虚拟化环境的搭建
1. 安装QEMU
使用命令“apt-get install qemu”安装QEMU。 (1)打开VMware对CPU的虚拟化支持。 (1)安装libvirt,使用命令“apt-get install libvirt-bin”和“apt-get install libvirt-dev”安装libvirt-bin和libvirt-dev两个包。 (1)由于使用java程序设计语言做开发,因此需要配置JDK环境。IDE工具可以使用eclipse。可以使用“apt-get install eclipse”命令安装eclipse,会自动配置JDK环境。 云平台管理系统的功能包括: 通过镜像管理虚拟机,包括虚拟机创建、启动、暂停、恢复、删除等镜像的添加与删除功能虚拟机网络模式设置,网络的断开和连接对虚拟机做快照功能(选做)虚拟机挂载存储磁盘(选做) 三、系统设计云平台管理系统是对虚拟机进行管理和操作,该系统采用Libvirt Java API 进行分析和设计,使用编程语言java作为开发语言,使用ecplise作为开发平台,通过jfinal框架展示给用户,能够很好的实现系统的开发及测试。使用java的GUI实现了按钮对虚拟机的启动,重启,正常关机,强制关机,挂起,唤醒挂起的虚拟机,保存当前虚拟机状态,读取已保存的虚拟机,也可以实现对当前运行的虚拟机状态的打印输出,还可以实现对网络的启动和关闭。 连接 public static Domain init() throws LibvirtException, DocumentException { conn = new Connect("qemu:///system", false); SAXReader reader = new SAXReader(); Document docu = reader.read(new File("/etc/libvirt/qemu/demo.xml")); String xmlDesc = docu.asXML(); Domain domain = conn.domainDefineXML(xmlDesc); return domain; } 启动 if (e.getActionCommand().equals("启动")) { try { domain = JavaLibvirt.init(); domain.create(); System.out.println(domain.getName() + "虚拟机已启动!"); } catch (LibvirtException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 挂起 if (e.getActionCommand().equals("挂起")) { try { domain = JavaLibvirt.init(); domain.suspend(); System.out.println(domain.getName() + "虚拟机已挂起!"); } catch (LibvirtException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 唤醒 if (e.getActionCommand().equals("唤醒")) { try { domain = JavaLibvirt.init(); domain.resume(); System.out.println(domain.getName() + "虚拟机已唤醒!"); } catch (LibvirtException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 保存 if (e.getActionCommand().equals("保存")) { try { domain = JavaLibvirt.init(); JFileChooser jf = new JFileChooser(); jf.setFileSelectionMode(JFileChooser.SAVE_DIALOG | JFileChooser.DIRECTORIES_ONLY); jf.showDialog(null, null); File fi = jf.getSelectedFile(); String f = fi.getAbsolutePath() + "/save.img"; System.out.println("save: " + f); domain.save(f); System.out.println(domain.getName() + "虚拟机状态已保存!"); System.out.println(); } catch (LibvirtException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 恢复 if (e.getActionCommand().equals("恢复")) { try { domain = JavaLibvirt.init(); JFileChooser chooser = new JFileChooser(); chooser.showOpenDialog(null); File f = chooser.getSelectedFile(); if (f != null) { String path = chooser.getSelectedFile().getPath(); System.out.println(path); domain.getConnect().restore(path); System.out.println(domain.getName() + "虚拟机状态已恢复!"); System.out.println(); } } catch (LibvirtException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 重启 if (e.getActionCommand().equals("重启")) { try { domain = JavaLibvirt.init(); domain.reboot(0); System.out.println(domain.getName() + "虚拟机已重启!"); } catch (LibvirtException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 正常关机 if (e.getActionCommand().equals("正常关机")) { try { domain = JavaLibvirt.init(); domain.shutdown(); System.out.println(domain.getName() + "虚拟机已正常关机!"); } catch (LibvirtException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 强制关机 if (e.getActionCommand().equals("强制关机")) { try { domain = JavaLibvirt.init(); domain.destroy(); System.out.println(domain.getName() + "虚拟机已强制关机!"); } catch (LibvirtException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 打印运行信息 if (e.getActionCommand().equals("打印运行信息")) { try { domain = JavaLibvirt.init(); for (int id : JavaLibvirt.conn.listDomains()) { domain = JavaLibvirt.conn.domainLookupByID(id); System.out.println("id is " + domain.getID() + " name is " + domain.getName() + " state is " + domain.getInfo().state); System.out.println(); } } catch (LibvirtException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 启动网络 if (e.getActionCommand().equals("启动网络")) { try { domain = JavaLibvirt.init(); domain.getConnect().networkLookupByName("default").create(); String netname = domain.getConnect().networkLookupByName("default").getName(); if (domain.getConnect().networkLookupByName("default").isActive() == 0) { System.out.println("网络" + netname + "已经被关闭!"); } else { System.out.println("网络" + netname + "正在使用中!"); } } catch (LibvirtException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 关闭网络 if (e.getActionCommand().equals("关闭网络")) { try { domain = JavaLibvirt.init(); domain.getConnect().networkLookupByName("default").destroy(); String netname = domain.getConnect().networkLookupByName("default").getName(); if (domain.getConnect().networkLookupByName("default").isActive() == 0) { System.out.println("网络" + netname + "已经被关闭!"); } else { System.out.println("网络" + netname + "正在使用中!"); } } catch (LibvirtException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (DocumentException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } 四、系统实现在eclipse中配置工作目录 创建java项目 创建类 在eclipse中配置需要的jar包 编写java代码 运行之前,打开virsh使用命令“virsh list --all”或virt-manager查看虚拟机状态。 运行代码,打开virsh使用命令“virsh list --all”或virt-manager查看虚拟机状态。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |