kvm中虛擬機xml文件釋義

  xml文件內容是來定義kvm中domain的配置信息,可使用virt-install來生成,但須要指定各個選項,那還不如生成一個基本的xml或複製模板來作相應修改。linux

如下是kvm中domain的xml配置解釋。windows

<!-- #提示信息
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE 
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh edit win7-02
or other application using the libvirt API.
-->
<domain type='kvm'> #用kvm建立的虛擬機稱爲domain,type定義使用哪一個虛擬機管理程序,值能夠是:xen、kvm、qemu、lxc、kqemu
                    #第二個參數是id,它惟一的標示一個運行的虛擬機,不活躍的客戶端沒有id。 
  <name>win7-02</name>
            #name參數爲虛擬機定義了一個簡短的名字,必須惟一
  <uuid>6ce14f21-33ac-dc79-5444-f64ccc80ea17</uuid>
                    #uuid,全球惟一,linux下能夠用uuidgen生成
 <title>This is my first test kvm</title>
                    #title參數提供一個對虛擬機簡短的說明,它不能包含換行符。
  <memory unit='KiB'>2097152</memory>
                    #能夠分配到的最大內存,內存單位由unit定義,單位能夠是:K、KiB、M、MiB、G、GiB、T、TiB。默認是KiB。MiB 2048表明2G
  <currentMemory unit='KiB'>2097152</currentMemory>
                    #實際分給給客戶端的內存她小於memory的定義,若是沒有定義,值和memory一致。
  <vcpu placement='static'>1</vcpu>
                    #vcpu的內容是爲虛擬機最多分配幾個cpu
  <os>
    <type arch='x86_64' machine='rhel6.5.0'>hvm</type>
#arch指定虛擬機的CPU構架,machine指定機器的類型。hvm代表該OS被設計爲直接運行在裸金屬上面,須要全虛擬化。
    <boot dev='cdrom'/>
                #dev屬性的值能夠是:fd、hd、cdrom、network,boot的元素能夠被設置多個用來創建一個啓動優先規則。 
  </os>
  <features> #Hypervisor的特性:
    <acpi/>  #Hypervisors容許特定的CPU/機器特性打開或關閉,全部的特性都在fearures元素中,如下介紹一些在全虛擬化中經常使用的標記:
    <apic/>  #acpi:用於電源管理      
    <pae/>   #pae:擴展物理地址模式,使32位的客戶端支持大於4GB的內存
  </features>
  <cpu mode='host-passthrough'>
    <topology sockets='1' cores='4' threads='1'/>
  </cpu>
  
  <on_poweroff>destroy</on_poweroff>
  #當客戶端請求poweroff時執行特定的動做
  <on_reboot>restart</on_reboot>
  #當客戶端請求reboot時執行特定的動做
  <on_crash>restart</on_crash>
  #當客戶端崩潰時執行的動做
 #每種狀態下能夠容許指定以下四種行爲:
         #destory:domain將會被徹底終止,domain的全部資源會被釋放
         #restart:domain會被終止,而後以相同的配置從新啓動
         #preserver:domain會被終止,它的資源會被保留用來分析
         #rename-restart:domain會被終止,而後以一個新名字被從新啓動
 
 <clock offset="localtime" />
         #客戶端的時間初始化來自宿主機的時間,大多數操做系統指望硬件時鐘保持UTC格式,UTC也是默認格式,然而Windows機器卻指望它是'localtime'
 #UTC:當引導時客戶端時鐘同步到UTC時鐘
         #localtime:當引導時客戶端時鐘同步到主機時鐘所在的時區
         #timezone:The guest clock will be synchronized to the requested timezone using the timezone attribute 
 
 <devices> #全部的設備都是一個名爲devices元素的子設備
    <emulator>/usr/libexec/qemu-kvm</emulator>
        #emulator元素指定模擬設備二進制文件的全路徑
    <disk type='file' device='disk'>
      <driver name='qemu' type='qcow2'/>
      <source file='/data/vmdisk/win7-02.qcow2'/>
      <target dev='vda' bus='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/iso/win7.iso'/>
      <target dev='hda' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='/iso/virtio-win-0.1-100.iso'/>
      <target dev='hdb' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>
    <disk type='file' device='floppy'>
      <driver name='qemu' type='raw'/>
      <source file='/iso/virtio-win-0.1.96_amd64.vfg'/>
      <target dev='fda' bus='fdc'/>
      <readonly/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
#全部的設備看起來就像一個disk、floppy、cdrom或者一個 paravirtualized driver,他們經過一個disk元素指定。
#type特性包括:file,block,dir,network,device描述disk如何受到客戶端OS的,特性包括:floppy、disk、cdrom、lun,默認是disk
#source元素:在disk的type是file時,file屬性指定一個合格的全路徑文件映像做爲客戶端的磁盤,在disk的type是block時,dev屬性指定一個主機設備的路徑做爲disk。
   #在disk的type是dir時,dir屬性指定一個全路徑的目錄做爲disk,在disk的type是network時,protocol屬性指定協議用來訪問鏡像,鏡像的值能夠是:nbd,rbd,sheepdog
#dev屬性代表本地磁盤在客戶端上的實際名稱,由於實際設備的名稱指定並不能保證映射到客戶端OS上的設備
#bus屬性指定了哪一種類型的磁盤被模擬,值主要有:ide、scsi、virtio、xen、usb、sata
#readonly元素:指定客戶端不能修改設備。當一個disk含有type=cdrom,readonly則是默認值。
(disk中virtio-win-0.1-100.iso和virtio-win-0.1.96_amd64.vfg是windows須要的驅動文件,linux系列無需定義)
    
<controller type='usb' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
    </controller>
    <controller type='ide' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
    </controller>
    <controller type='fdc' index='0'/>
    <controller type='virtio-serial' index='0'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
    </controller>
    
<interface type='bridge'>  #類型橋接
      <source bridge='br0'/> #橋接的設備名字
      <model type='virtio'/>
    </interface>
    
#串行端口
<serial type='file'>
      <source path='/tmp/console.log'/>
      <target port='0'/>
    </serial>
    <serial type='pty'>
      <target port='1'/>
    </serial>
    <console type='file'>
      <source path='/tmp/console.log'/>
      <target type='serial' port='0'/>
    </console>
    <channel type='spicevmc'>
      <target type='virtio' name='com.redhat.spice.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
    </channel>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
    #input元素:input元素含有一個強制的屬性,type屬性的值能夠是mouse或tablet
#bus屬性指定一個明確的設備類型,值能夠是:xen、ps二、usb。 
<graphics type='spice' port='6789' autoport='no' listen='0.0.0.0' keymap='en-us'>
      <listen type='address' address='0.0.0.0'/> #graphics元素:graphics含有一個強制的屬性type,type的值能夠是:sdl、vnc、rdp、desktop、spice
      <channel name='main' mode='insecure'/>     #vnc則啓動vnc服務,port屬性指定tcp端口,若是是-1,則表示自動分配
      <channel name='display' mode='insecure'/>  #vnc的端口自動分配的話是從5900向上遞增。listen屬性提供一個IP地址給服務器監聽,能夠單獨在listen元素中設置
      <channel name='inputs' mode='insecure'/>   #passwd屬性提供一個vnc的密碼
      <channel name='cursor' mode='insecure'/>   #listen元素:listen元素專門針對vnc和spice設置監聽端口等
      <channel name='playback' mode='insecure'/> #它包含如下屬性:type、address、network。type的值能夠是address或network。
      <channel name='record' mode='insecure'/>   #若是設置了type=address,那麼address屬性設置一個ip地址或者主機名來監聽。
      <channel name='smartcard' mode='insecure'/>#若是type=network,則network屬性設置一個網絡名稱在libvirt‘s的網絡配置文件中。
      <channel name='usbredir' mode='insecure'/>
      <p_w_picpath compression='auto_glz'/>
      <streaming mode='all'/>
      <clipboard copypaste='yes'/>
    </graphics>
  
  <video>
      <model type='qxl' ram='65536' vram='65536' heads='1'>
        <acceleration accel3d='yes' accel2d='yes'/>
      </model>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
    </video>
    <memballoon model='virtio'>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
    </memballoon>
  </devices>
</domain>
   #video元素:是描述聲音設備的容器,爲了向後徹底兼容,若是沒有設置video可是有graphics在xml配置文件中,這時libvirt會按照客戶端類型增長一個默認的video
相關文章
相關標籤/搜索