Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1866936
  • 博文数量: 473
  • 博客积分: 13997
  • 博客等级: 上将
  • 技术积分: 5953
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-22 11:52
文章分类

全部博文(473)

文章存档

2014年(8)

2013年(38)

2012年(95)

2011年(181)

2010年(151)

分类: LINUX

2012-11-01 16:53:26

1.创建域(虚拟机):包括Volume和描述硬件配置的xml

  1. //前端与节点建立连接  
  2. Connect conn=new Connect("qemu+ssh://root@192.168.69/system",false);  
  3. //根据xml描述创建新虚拟机并启动  
  4. SAXReader reader = new SAXReader();  
  5. Document docu =reader.read(new File("/domain.xml"));  
  6. String xmlDesc=docu.asXML();  
  7. Domain domain=conn.domainCreateXML(xmlDesc, 0);  
  8. domain.resume();  
补:新建域可以直接加载镜像(.img),但这样镜像只能被一个用户使用。为可以让镜像能被多个用户使用,可使用StorageVol来关联镜像,虚拟机加载该备份即可。
  1. Connect con=new Connect("");  
  2. //根据存储池的名字获得StoragePool  
  3. StoragePool pool=con.storagePoolLookupByName("default");  
  4. SAXReader reader=new SAXReader();  
  5. Document docu=reader.read(new File("/volume.xml"));  
  6. StorageVol vol=pool.storageVolCreateXML(docu.asXML(), 0);  
记录下vol的存储地址,赋值到域的配置文件中即可。

删除vol

  1. StorageVol vol=pool.storageVolLookupByName(volName);  
  2. vol.delete(0);  
补:StorageVol可以作为镜像的快照,大小很小,只记录了对镜像的修改。
2.迁移/销毁域
  1. //前端与节点建立连接  
  2. Connect conn1=new Connect("qemu+ssh://root@192.168.82.70/system",false);  
  3. //根据域的uuid-unique id(在生成域时,libvirt自动分配唯一的uuid),返回域。  
  4. String uuid="";  
  5. Domain domain=conn1.domainLookupByUUIDString(uuid);  
  6. Connect conn2=new Connect("qemu+ssh://root@192.168.82.71/system",false);  
  7. /* 
  8.  * 把域从当前主机迁移到目的主机 
  9.  * Domain migrate(Connect dconn, long flags, String dname, String uri, long bandwidth) 
  10.  * dconn:目的主机 
  11.  * dname:可选,重命名域在目的机的名字 
  12.  * uri:可选,目的机ip 
  13.  * bandwidth:迁移带宽,Mbps 
  14.  */  
  15. domain.migrate(conn2, 1nullnull5);  
  16. //销毁域  
  17. domain.destroy();  
补:域的名字、id等信息都在xml配置描述里定义。对于xml文件的操作使用dom4j。

标准domain.xml

  1. xml version="1.0" encoding="UTF-8"?>  
  2. <domain type='kvm'>  
  3.   <name>testname>  
  4.   <memory>524288memory>  
  5.   <currentMemory>524288currentMemory>  
  6.   <vcpu>1vcpu>  
  7.   <os>  
  8.     <type arch='x86_64' machine='pc-0.14'>hvmtype>  
  9.     <boot dev='hd'/>  
  10.     <bootmenu enable='no'/>  
  11.   os>  
  12.   <features>  
  13.     <acpi/>  
  14.     <apic/>  
  15.     <pae/>  
  16.   features>  
  17.   <clock offset='localtime'/>  
  18.   <on_poweroff>destroyon_poweroff>  
  19.   <on_reboot>restarton_reboot>  
  20.   <on_crash>restarton_crash>  
  21.   <devices>  
  22.     <emulator>/usr/bin/qemu-kvmemulator>  
  23.     <disk type='file' device='disk'>  
  24.       <driver name='qemu' type='qcow2'/>  
  25.       <source file='/var/lib/libvirt/images/test.img'/>  
  26.       <target dev='vda' bus='virtio'/>  
  27.       <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>  
  28.     disk>  
  29.     <interface type='network'>  
  30.       <mac address='52:54:00:19:25:7b'/>  
  31.       <source network='default'/>  
  32.       <model type='virtio'/>  
  33.       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>  
  34.     interface>  
  35.     <serial type='pty'>  
  36.       <target port='0'/>  
  37.     serial>  
  38.     <console type='pty'>  
  39.       <target type='serial' port='0'/>  
  40.     console>  
  41.     <input type='tablet' bus='usb'/>  
  42.     <input type='mouse' bus='ps2'/>  
  43.     <graphics type='vnc' port='5910' autoport='no' listen='0.0.0.0'/>  
  44.     <sound model='ac97'>  
  45.       <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>  
  46.     sound>  
  47.     <video>  
  48.       <model type='cirrus' vram='9216' heads='1'/>  
  49.       <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>  
  50.     video>  
  51.     <memballoon model='virtio'>  
  52.       <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>  
  53.     memballoon>  
  54.   devices>  
  55. domain>  
标准volume.xml
  1. xml version="1.0" encoding="UTF-8"?>  
  2. <volume>  
  3.   <name>name>   
  4.   <key>/var/lib/libvirt/images/temp.sskey>   
  5.   <source>  
  6.   source>  
  7.   <capacity>8589934592capacity>   
  8.   <allocation>139264allocation>  
  9.   <target>  
  10.     <path>/var/lib/libvirt/images/temp.sspath>   
  11.     <format type='qcow2'/>   
  12.     <permissions>  
  13.       <mode>0600mode>  
  14.       <owner>0owner>  
  15.       <group>0group>  
  16.     permissions>  
  17.   target>  
  18.    <backingStore>  
  19.     <path>/var/lib/libvirt/images/WinXP.imgpath>  
  20.     <format type='qcow2'/>   
  21.     <permissions>  
  22.       <mode>0600mode>  
  23.       <owner>107owner>  
  24.       <group>107group>  
  25.     permissions>  
  26.   backingStore>  
  27. volume>  

补:dom4j使用示例
  1. SAXReader reader = new SAXReader();  
  2. Document docu = reader.read(new File("/domain.xml"));  
  3. //更改元素的属性值  
  4. Element graphics=docu.getRootElement().element("devices").element("graphics");  
  5. Attribute attrPort=graphics.attribute("port");  
  6. attrPort.setText(getPort());  
  7. //更改元素值  
  8. Element nameEle=docu.getRootElement().element("name");  
  9. nameEle.setText("new name");  
  10. //以字符串形式返回xml  
  11. String docXmlText=docu.asXML(); 
阅读(2083) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~