1. 程式人生 > >利用virsh和xml檔案建立虛擬機器

利用virsh和xml檔案建立虛擬機器

virsh命令來建立虛擬機器步驟

(1)生成硬碟映象檔案:
格式:raw或qcow2

# qemu-img create -f raw fdisk.img 10G
# qemu-img info fdisk.img

(2)編寫xml配置檔案,這一步在後面做詳細介紹
(3)建立並執行虛擬機器

# sudo apt-get install qemu-kvm
# virsh define vm0.xml  //匯入虛擬機器配置
# virsh start vm0  //開啟vm0
# virsh list --all  // 顯示所有虛擬機器狀態
# virsh destroy vm0  //銷燬虛擬機器
# virsh undefine vm1  //刪除虛擬機器配置
# virsh dumpxml vm0 //顯示虛擬機器xml配置

其中“vm0.xml”是步驟(2)中建立的xml檔案。

虛擬機器XML檔案

<domain type='kvm'>  //如果是Xen,則type=‘xen’
  <name>vm0</name> //虛擬機器名稱,同一物理機唯一
  <uuid>fd3535db-2558-43e9-b067-314f48211343</uuid>  //同一物理機唯一,可用uuidgen生成
  <memory>524288</memory>
  <currentMemory
>
524288</currentMemory> //memory這兩個值最好設成一樣 <vcpu>2</vcpu> //虛擬機器可使用的cpu個數,檢視物理機可用CPU個數:cat /proc/cpuinfo |grep processor | wc -l <os> <type arch='x86_64' machine='pc-i440fx-vivid'>hvm</type> //arch指出系統架構型別,machine 則是機器型別,檢視機器型別:qemu-system-x86_64 -M ? <boot
dev='hd'/>
//啟動介質,第一次需要裝系統可以選擇cdrom光碟啟動 <bootmenu enable='yes'/> //表示啟動按F12進入啟動選單 </os> <features> <acpi/> //Advanced Configuration and Power Interface,高階配置與電源介面 <apic/> //Advanced Programmable Interrupt Controller,高階可程式設計中斷控制器 <pae/> //Physical Address Extension,實體地址擴充套件 </features> <clock offset='localtime'/> //虛擬機器時鐘設定,這裡表示本地本機時間 <on_poweroff>destroy</on_poweroff> //突發事件動作 <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> //裝置配置 <emulator>/usr/bin/kvm</emulator> //如果是Xen則是/usr/lib/xen/binqemu-dm <disk type='file' device='disk'> //硬碟 <driver name='qemu' type='raw'/> <source file='/opt/vm/vmdev/fdisk.img'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> //域、匯流排、槽、功能號,slot值同一虛擬機器上唯一 </disk> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/opt/vm/vmdev/fdisk2.img'/> <target dev='vdb' bus='virtio'/> </disk> <disk type='file' device='cdrom'>//光碟 <driver name='qemu' type='raw'/> <source file='/opt/vm/vmiso/ubuntu-15.10-server-amd64.iso'/> <target dev='hdc' bus='ide'/> <readonly/> </disk> /* 利用Linux網橋連線網路 */ <interface type='bridge'> <mac address='fa:92:01:33:d4:fa'/> <source bridge='br100'/> //配置的網橋網絡卡名稱 <target dev='vnet0'/> //同一網橋下相同 <alias name='net0'/> //別名,同一網橋下相同 <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> //注意slot值唯一 </interface> /* 利用ovs網橋連線網路 */ <interface type='bridge'> <source bridge='br-ovs0'/> <virtualport type='openvswitch'/> <target dev='tap0'/> <model type='virtio'/> </interface> /* 配置成pci直通虛擬機器連線網路,SR-IOV網絡卡的VF場景 */ <hostdev mode='subsystem' type='pci' managed='yes'> <source> <address domain='0x0000' bus='0x03' slot='0x00' function='0x0'/> </source> </hostdev> /* 利用vhostuser連線ovs埠 */ <interface type='vhostuser'> <mac address='fa:92:01:33:d4:fa'/> <source type='unix' path='/var/run/vhost-user/tap0' mode='client'/> <model type='virtio'/> <driver vringbuf='2048'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='network'> //基於虛擬區域網的網路 <mac address='52:54:4a:e1:1c:84'/> //可用命令生成,見下面的補充 <source network='default'/> //預設 <target dev='vnet1'/> //同一虛擬區域網的值相同 <alias name='net1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> //注意slot值 </interface> <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0' keymap='en-us'/> //配置vnc,windows下可以使用vncviewer登入,獲取vnc埠號:virsh vncdisplay vm0 <listen type='address' address='0.0.0.0'/> </graphics> </devices> </domain>