XStar's Libvirt+KVM部署记录

准备工作

如果CPU支持,还需要在BIOS打开虚拟化支持。通常,主板默认关闭这个选项。

kvm-ok
# 或
grep -E "vmx|svm" /proc/cpuinfo
# Intel CPU:vmx
# AMD CPU:svm

使用libvirt负责虚拟化的创建及管理。

有无libvirt管理的虚拟化比较

软件安装

libvirt配置

网络配置

软件安装

使用ifplugd方便向桌面发送状态通知、通过异步处理加快启动速度(dhcp浪费时间)。

使用vde2使用可能是方便以普通用户身份来管理(UserModeLinux,涉及到uml工具)?

配置主机网络

libvirt网络配置

常用管理操作

常用工具

virsh
virt-install
virt-manager
virt-clone
virt-convert
virt-image
qeum-img

连接libvirtd

virsh -c qemu:///system                              # 本地登录libvirt控制台
virsh -c qemu+ssh://root@172.17.20.20/system         # ssh远程登录libvirt控制台
virsh -c qemu+tcp://172.17.20.20:16509/system        # tcp远程登录libvirt控制台
virt-manager -c qemu+tcp://172.17.20.20:16509/system # 运行libvirt图形管理界面
virt-manager -c qemu+ssh://root@172.17.20.20/system

配置存储池

第一个虚拟机

使用 virt-manager -c qemu+ssh:///system 远程连接libvirtd后,在图形界面中创建了第一个虚拟机Ubuntu,并安装了操作系统。

vmbuilder

使用vmbuilder创建Ubuntu JeOS虚拟服务器,包括虚拟机创建、系统安装、包安装,以及系统设置定制均可一步完成。

Vmbuilder缺省对网卡启用了virtio特性,但虚拟磁盘未启用virtio特性,可修改其配置档解决:

vim /etc/vmbuilder/libvirt/libvirtxml.tmpl

<target dev='hd$disk.devletters()' />
# to
<target dev='vd$disk.devletters()' bus='virtio' />

Since my virtual machines require a pointopoint entry in /etc/network/interfaces I also edit /etc/vmbuilder/ubuntu/interfaces.tmpl and add an additional line pointopoint underneath gateway. This will set pointopoint to the gateway address that I specify with vmbuilder.

pointopoint $gw

As a last ugly rather hack I edit /usr/share/pyshared/VMBuilder/plugins/kvm/vm.py and change the default file image type from qcow2 to raw to improve the disk throughput.

filetype = 'raw'

Instead of editing vm.py you could also use the qemu-img command after running vmbuilder to convert the qcow2 image to raw (or just keep qcow2 if you are fine with it).

vim +391 /usr/lib/python2.7/dist-packages/VMBuilder/contrib/cli.py

virt-install

virt-install --name=Ubuntu2 --ram 1024 --vcpus=2 \
--disk pool=data,size=8,bus=virtio,format=qcow2,sparse=false,cache=writeback \
--cdrom /data/ISOs/ubuntu-12.04.3-server-amd64.iso \
--vnc --network bridge=virbr1,model=virtio --noautoconsole \
--connect=qemu:///system

# 或用网络名称:
# --network network=network-host-bridge

说明:在linux系统安装开始就要注意添加提高性能的一些参数,后面就不需要做一些调整了。

参数说明:

--name 指定虚拟机名称
--ram 分配内存大小
--vcpus 分配CPU核心数,最大与实体机CPU核心数相同
--disk 指定虚拟机镜像,size 指定分配大小单位为G。
--network 网络类型,此处用的是默认,一般用的应该是 bridge 桥接。
--cdrom 指定安装镜像iso
--vnc 启用VNC远程管理,一般安装系统都要启用。
--vncport 指定VNC 监控端口,默认端口为5900,端口不能重复。
--vnclisten 指定VNC 绑定IP,默认绑定127.0.0.1,这里改为 0.0.0.0。
--noautoconsole Don't automatically try to connect to the guest console

virt-clone