设为首页 收藏本站
查看: 1432|回复: 0

[经验分享] [zz]kvm-libvirt的使用:创建虚拟机与快照

[复制链接]

尚未签到

发表于 2015-4-10 16:25:45 | 显示全部楼层 |阅读模式
  http://blog.iyunv.com/whuqin/article/details/6732898
  1.创建域(虚拟机):包括Volume和描述硬件配置的xml



[java] view plaincopyprint?

  • //前端与节点建立连接   
  • Connect conn=new Connect("qemu+ssh://root@192.168.69/system",false);  
  • //根据xml描述创建新虚拟机并启动   
  • SAXReader reader = new SAXReader();  
  • Document docu = reader.read(new File("/domain.xml"));  
  • String xmlDesc=docu.asXML();  
  • Domain domain=conn.domainCreateXML(xmlDesc, 0);  
  • domain.resume();  
  //前端与节点建立连接Connect conn=new Connect("qemu+ssh://root@192.168.69/system",false);//根据xml描述创建新虚拟机并启动SAXReader reader = new SAXReader();Document docu =reader.read(new File("/domain.xml"));String xmlDesc=docu.asXML();Domain domain=conn.domainCreateXML(xmlDesc, 0);domain.resume();补:新建域可以直接加载镜像(.img),但这样镜像只能被一个用户使用。为可以让镜像能被多个用户使用,可使用StorageVol来关联镜像,虚拟机加载该备份即可。
  



[java] view plaincopyprint?

  • Connect con=new Connect("");  
  • //根据存储池的名字获得StoragePool   
  • StoragePool pool=con.storagePoolLookupByName("default");  
  • SAXReader reader=new SAXReader();  
  • Document docu=reader.read(new File("/volume.xml"));  
  • StorageVol vol=pool.storageVolCreateXML(docu.asXML(), 0);  
  Connect con=new Connect("");//根据存储池的名字获得StoragePoolStoragePool pool=con.storagePoolLookupByName("default");SAXReader reader=new SAXReader();Document docu=reader.read(new File("/volume.xml"));StorageVol vol=pool.storageVolCreateXML(docu.asXML(), 0);记录下vol的存储地址,赋值到域的配置文件中即可。
  
  删除vol



[java] view plaincopyprint?

  • StorageVol vol=pool.storageVolLookupByName(volName);  
  • vol.delete(0);  
  StorageVol vol=pool.storageVolLookupByName(volName);vol.delete(0);补:StorageVol可以作为镜像的快照,大小很小,只记录了对镜像的修改。
2.迁移/销毁域
  



[java] view plaincopyprint?

  • //前端与节点建立连接   
  • Connect conn1=new Connect("qemu+ssh://root@192.168.82.70/system",false);  
  • //根据域的uuid-unique id(在生成域时,libvirt自动分配唯一的uuid),返回域。   
  • String uuid="";  
  • Domain domain=conn1.domainLookupByUUIDString(uuid);  
  • Connect conn2=new Connect("qemu+ssh://root@192.168.82.71/system",false);  
  • /*
  • * 把域从当前主机迁移到目的主机
  • * Domain migrate(Connect dconn, long flags, String dname, String uri, long bandwidth)
  • * dconn:目的主机
  • * dname:可选,重命名域在目的机的名字
  • * uri:可选,目的机ip
  • * bandwidth:迁移带宽,Mbps
  • */  
  • domain.migrate(conn2, 1, null, null, 5);  
  • //销毁域   
  • domain.destroy();  
  //前端与节点建立连接Connect conn1=new Connect("qemu+ssh://root@192.168.82.70/system",false);//根据域的uuid-unique id(在生成域时,libvirt自动分配唯一的uuid),返回域。String uuid="";Domain domain=conn1.domainLookupByUUIDString(uuid);Connect conn2=new Connect("qemu+ssh://root@192.168.82.71/system",false);/** 把域从当前主机迁移到目的主机* Domain migrate(Connect dconn, long flags, String dname, String uri, long bandwidth)* dconn:目的主机* dname:可选,重命名域在目的机的名字* uri:可选,目的机ip* bandwidth:迁移带宽,Mbps*/domain.migrate(conn2, 1, null, null, 5);//销毁域domain.destroy();补:域的名字、id等信息都在xml配置描述里定义。对于xml文件的操作使用dom4j。
  
  标准domain.xml



[html] view plaincopyprint?

  •   
  •   
  •   test  
  •   524288  
  •   524288  
  •   1  
  •    
  •     hvm  
  •       
  •       
  •    
  •    
  •       
  •       
  •       
  •    
  •    
  •   destroy  
  •   restart  
  •   restart  
  •    
  •     /usr/bin/qemu-kvm  
  •       
  •         
  •         
  •         
  •         
  •       
  •       
  •         
  •         
  •         
  •         
  •       
  •       
  •         
  •       
  •       
  •         
  •       
  •       
  •       
  •       
  •       
  •         
  •       
  •       
  •         
  •         
  •       
  •       
  •         
  •       
  •    
  •   
  test5242885242881hvmdestroyrestartrestart/usr/bin/qemu-kvm标准volume.xml
  



[html] view plaincopyprint?

  •   
  •   
  •      
  •   /var/lib/libvirt/images/temp.ss   
  •    
  •    
  •   8589934592   
  •   139264  
  •    
  •     /var/lib/libvirt/images/temp.ss   
  •       
  •       
  •       0600  
  •       0  
  •       0  
  •       
  •    
  •      
  •     /var/lib/libvirt/images/WinXP.img  
  •       
  •       
  •       0600  
  •       107  
  •       107  
  •       
  •    
  •   
   /var/lib/libvirt/images/temp.ss 8589934592 139264/var/lib/libvirt/images/temp.ss  060000/var/lib/libvirt/images/WinXP.img 0600107107
补:dom4j使用示例
  


[html] view plaincopyprint?

  • SAXReader reader = new SAXReader();  
  • Document docu = reader.read(new File("/domain.xml"));  
  • //更改元素的属性值  
  • Element graphics=docu.getRootElement().element("devices").element("graphics");  
  • Attribute attrPort=graphics.attribute("port");  
  • attrPort.setText(getPort());  
  • //更改元素值  
  • Element nameEle=docu.getRootElement().element("name");  
  • nameEle.setText("new name");  
  • //以字符串形式返回xml  
  • String docXmlText=docu.asXML();

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-55764-1-1.html 上篇帖子: xen 和kvm 下篇帖子: [zz]Scripting KVM with Python, Part 2: Add a GUI to manage KVM with libvirt and
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表