速查链接
安装新的虚拟机
非特权模式
sudo qemu-img create -f qcow2 -o preallocation=metadata /home/huangwei/kvm/ubuntu-lucid.qcow2 80G sudo virt-install --connect=qemu:///session \ --name=ubuntu-lucid \ --disk path=/home/huangwei/kvm/ubuntu-lucid.qcow2,format=qcow2 \ --ram 2048 \ --vcpus=2 \ --check-cpu \ --hvm \ --cdrom="/home/huangwei/os/ubuntu-10.04.2-server-amd64.iso" sudo virt-install --name ubuntu --ram 512 --vcpus=1 --disk path=/home/huangwei/kvm/ubuntu.img,size=10 --accelerate --cdrom /home/huangwei/os/ubuntu-10.04.2-server-amd64.iso --vnc --vnclisten=222.31.79.175 virt-install \ --name ubuntu \ --ram 2048 \ --vcpus=4 \ --disk path=/home/huangwei/kvm/ubuntu.img,size=40 \ --accelerate \ --cdrom /home/huangwei/os/ubuntu-10.04.2-server-amd64.iso \ --vnc \ --vnclisten=10.6.9.142 sudo virt-install -d -n ubuntu-lucid --ram 1024 --disk path=/home/huangwei/kvm/ubuntu-lucid.qcow2,format=qcow2,bus=virtio,cache=none --network bridge=br0,model=virtio --vnc --cdrom=/home/huangwei/os/ubuntu-10.04.2-server-amd64.iso --vnclisten=222.31.79.175
virt-install -n winxp --ram 2048 --vcpus=4 --disk path=/home/huangwei/kvm/winxp.img,cache=none,size=80 -c /home/huangwei/os/zh-hans_windows_xp.iso --vnc --os-type windows --accelerate --hvm --vnclisten=10.6.9.142 --noreboot
特权模式
-
建议关闭SELinux
# 编辑/etc/selinux/config,确保SELINUX=disabled $sudo vim /etc/selinux/config #This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
编辑保存以上文件后,必须重启系统,设置才会生效!!!
# 检查SELinux状态 $sestatus SELinux status: disabled
-
无论是否关闭SELinux,一旦遇到类似如下的错误,则只能把安装iSO镜像放到/var/lib/libvirt/images/下
error: internal error Process exited while reading console log output: char device redirected to /dev/pts/5 qemu-kvm: -drive file=/home/huangwei/os/ubuntu-12.04.2-server-amd64.iso,if=none,media=cdrom,id=drive-ide0-1-0,readonly=on,format=raw: could not open disk image /home/huangwei/os/ubuntu-12.04.2-server-amd64.iso: Permission denied
以下命令按需定制参数,其中的--noreboot是确保定义完虚拟机配置文件后不立刻启动系统
sudo virt-install -n winxp --ram 2048 --vcpus=4 --disk path=/srv/kvm/winxp.img,cache=none,size=80 -c /var/lib/libvirt/images/zh-hans_windows_xp.iso --vnc --os-type windows --accelerate --hvm --vnclisten=10.6.9.142 --noreboot sudo virt-install --connect=qemu:///system \ --name=ubuntu-precise \ --disk path=ubuntu-precise.img \ --ram 2048 \ --vcpus=2 \ --check-cpu \ --hvm \ --cdrom="/var/lib/libvirt/images/ubuntu-12.04.2-server-amd64.iso" \ --accelerate --vnclisten=222.31.79.175 --noreboot
注意事项:
- 不要轻易使用virtio模式
- 非特权模式创建的虚拟机需要修改文件和目录的权限后,才可以被导入到特权模式(目前的实验结论是:虚拟机磁盘镜像所在目录必须是root属主,且权限为755,文件权限为644
导入已有的虚拟机
sudo virt-install --name bt5 --ram 1024 --disk bt5-copy.img.qcow2,format=qcow2 --import --vnc --noreboot --network network=default,model=virtio --vcpu=2 --vnclisten=10.6.8.54
virsh控制台的权限控制
在今日virsh交互式控制台后,执行一些命令,报出类似以下的错误信息时,很大可能就是你当前连接的virsh控制台权限不足。
error: Failed to define network from /usr/share/libvirt/networks/default.xml error: cannot write config file '/var/lib/libvirt/dnsmasq/default.hostsfile': Permission denied
出现这种情况时,使用以下命令进行错误排查和解决
# 查看当前连接的virsh权限 $ virsh uri qemu:///session # 当前shell用户权限,非root权限 # 尝试连接到root权限的vish shell $ virsh --connect qemu:///system error: authentication failed: Authorization requires authentication but no agent is available. error: failed to connect to the hypervisor # 使用更高权限连接virsh root shell [huangwei@reng kvm]$ sudo virsh --connect qemu:///system [sudo] password for huangwei: # 提权成功,连接到virsh root shell Welcome to virsh, the virtualization interactive terminal. Type: 'help' for help with commands 'quit' to quit virsh # uri qemu:///system
克隆虚拟机
- http://unix.stackexchange.com/questions/8351/how-to-create-a-dupe-of-a-kvm-libvirt-virt-manager-vm
- http://linux.die.net/man/1/virt-clone
# 使用基础镜像,所有的写操作独立放到一个镜像文件中,类似于提供一个“模版镜像” qemu-img create -f qcow2 -o backing_file=ubuntu.img ubuntu-huangwei.qcow2 # 克隆“模版镜像”的domain配置文件 virt-clone -o ubuntu -n ubuntu-huangwei --preserve-data --file ubuntu-huangwei.qcow2 # 修改domain的配置文件,找到qcow2的磁盘镜像,修改type='qcow2' # 克隆的虚拟机无法联网,在克隆虚拟机(ubuntu环境)内执行以下命令 sudo rm /etc/udev/rules.d/70-persistent-net.rules sudo reboot -h now
磁盘I/O性能调优
关于<interface type='user'>
首先,这是一个专用于user mode(uri=qemu:///session)的guest os联网方式; 其次,这种联网方式实现的效果“类似”于NAT模式;
如何手动添加虚拟桥接网卡(br0)到物理网卡(eth0/em0)?
http://wiki.libvirt.org/page/Networking
如何设置iptables,让虚拟机的NAT模式正常运转?
net-start <net-name>
之后,libvirtd会自动根据<net-name>定义的转发规则创建iptables NAT转发规则
如何在已创建的虚拟机里添加iso镜像?例如,用于装系统
<disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/var/lib/libvirt/images/ubuntu-12.04.2-server-amd64.iso'/> <target dev='hdc' bus='ide'/> <readonly/> </disk>
以上配置文件有2处需要特别注意:
- <driver name='qemu',不能写成<driver name='file',具体参见这个古老的bug报告。
- 特权模式安装系统,务必确保系统iso镜像放置于指定目录:/var/lib/libvirt/images/ 否则,会报错:XXX Permission denied
虚拟存储管理
快照机制
raw格式的虚拟磁盘格式不支持快照功能,qcow2格式支持。
# snapshot-create <domain> # snapshot-list <domain> # snapshot-restore <domain> <snapshotname> # snapshot-delete <domain> <snapshotname>