更多内容可移驾至我的独立Blog: http://www.justfbt.com/
setup 1, Install kvm
# apt-get install q emu-kvm li bvirt-bin bridge-utils virtinst
setup 2, configure networking
# vim /etc/network/interface
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet manual
auto br0
iface br0 inet static
address 192.168.222.53
netmask 255.255.255.0
gateway 192.168.222.1
dns-nameservers 223.5.5.5
bridge_ports eth0
Restart networking:
# /etc/init.d/networking restart
setup 3, Create vms
3.1 create image
# qemu-img create -f qcow2 sample.qcow2 30G
3.2 create config.xml to install vm:
<!--
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 ser01
or other application using the libvirt API.
-->
<domain type='kvm'>
<name>ser01</name> //虚拟机名称
<uuid>759ed200-3847-5a68-ec5e-f1afd4c33204</uuid>
<memory>5128576</memory> //最大内存,单位k
<currentMemory>5128576</currentMemory> //可用内存,单位k
<vcpu>2</vcpu> //虚拟cpu个数
<os>
<type arch='x86_64' machine='pc-1.0'>hvm</type>
<boot dev='hd'/> //harddisk启动
<boot dev='cdrom'/> //光盘启动
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/bin/kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/qemu/vms/ser01/ser01.qcow2'/> //目的镜像路径位置
<target dev='hda' bus='ide'/>
<address type='drive' controller='0' bus='0' unit='0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file='/var/lib/libvirt/iso/ubuntu-12.04-server-amd64.iso'/> //光盘镜像路径位置
<target dev='hdb' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='0' unit='1'/>
</disk>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<interface type='bridge'> //虚拟机网络连接方式
<mac address='52:54:00:65:e4:d6'/> //为虚拟机分配mac地址,务必唯一,否则dhcp获得同样ip,引起冲突
<source bridge='br0'/> //当前主机网桥的名称
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port='5902' autoport='no' listen='0.0.0.0' passwd='password'> //修改vnc端口,链接vnc时的密码
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</memballoon>
</devices>
</domain>
setup 4 create vm,and then,use client like remmina to connections with vnc.
# virsh create sample.xml #or: # virsh define sample . xml and then start vm: # virsh start sample
setup 5 backup vm
5.1 vm backup: snapshot
create xml file named sample_snaoshot.xml
# vim sample_snapshot.xml
<domainsnapshot>
<name>sample_snapshot-1</name>
<description>Ubuntu 12.04 AMD64 server</description>
</domainsnapshot>
5.2 Run follow commands:
# virsh snapshot-create sample ./sample_snapshot.xml
check:
# virsh snaoshot-list sample
5.3 Others
restor:
# virsh snapshot-revert sample sample_snapshot-1
delete:
# virsh snapshot-delete sample sample_snapshot-1
setup 6 clone vms
6.1
## at first,the vm's status is shutdown
# virt-clone --original sample --name ser01 --file /var/lib/libvirt/qemu/vms/ser01/ser01.qcow2
6.2 when complete this job edit /etc/libvirt/qemu/ser01.xml,modify the new vm’s MAC , VNC port,hostname,ip address , loginname etc.
example:
<graphics type='vnc' port='5910' autoport='no' listen='0.0.0.0' passwd='zhao' >
Debugs:
ERROR 1:
root@ukvm:/var/lib/libvirt/qemu/vms/sample#virsh create sample.xml
error: Failed to create domain from sample.xml
error: internal error cannot load AppArmor profile 'libvirt-a8c6a55d-c856-c502-9d1f-1818ee67f4ef'
Solution:
# apt-get install --reinstall qemu-kvm libvirt-bin bridge-utils virtinst
ERROR 2:
virsh # start centos7-sample
error: Failed to start domain centos7-sample
error: Unable to read from monitor: Connection reset by peer
Solution:
Verify the new vm’s vnc port is not used by other,like this:
<graphics type='vnc' port='5902' autoport='no' listen='0.0.0.0' passwd='password'>
宿主机centos6.5上一份完整的vm xml文件:
server_01.xml
行尾 ## 标注的根据实际情况修改
<!--
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 server_01
or other application using the libvirt API.
-->
<domain type='kvm'>
<name> server_01</name> ##
<uuid> 0f005dd3-05f8-a13b-d0ad-9b3fd309216e</uuid> ##
<memory unit='KiB'> 8388608</memory> ##
<currentMemory unit='KiB'> 8388608</currentMemory> ##
<vcpu placement='static'> 8</vcpu> ##
<os>
<type arch='x86_64' machine='rhel6.6.0'>hvm</type>
<boot dev='hd'/> //引导设备,从光盘引导:<boot dev='cdrom'/> ##
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='localtime'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/usr/libexec/qemu-kvm</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/usr/local/vms/server_02/server_02.qcow2'/> ##
<target dev=' vda' bus='virtio'/> ##
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</disk>
<disk type='block' device='disk'> // 这一块为VM添加一块硬盘,可以是img,disk,lvm... ,这里添加的是lvm卷 ##
<driver name='qemu' type='raw'/> ##
<source dev='/usr/local/vms/server_02/server_02_data'/> ##
<target dev='vdb' bus='virtio'/> ##
<address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</disk>
<disk type='file' device='cdrom'>
<driver name='qemu' type='raw'/>
<source file=' /usr/local/iso/ubuntu-12.04-server-amd64.iso'/> ##
<target dev='hdc' bus='ide'/>
<readonly/>
<address type='drive' controller='0' bus='1' target='0' unit='0'/>
</disk>
<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>
<interface type=' bridge'> ##
<mac address='00:16:3e:5d:a1:a1'/>
<source bridge=' br0'/> ##
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<input type='mouse' bus='ps2'/>
<graphics type='vnc' port=' 5901' autoport='no' listen='0.0.0.0'> ##
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='cirrus' vram='9216' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
</memballoon>
</devices>
</domain>