在 CentOS 上安装和配置 KVM

RedHat 的下一代旗舰产品 RedHat Enterprise Linux 6 将只包含 KVM,这一点 RedHat 官方已经在很久以前、在不同场合都确认过,也可以从 RHEL 6 的 Beta 版本中得到证实。KVM 发展很快,稳定性有了很大提高,随着 RHEL 6 的正式到来,KVM 应用到生产环境的日子应该不远了。VPSee 曾经测试过 KVM,也看过一些 KVM 的学术论文,在网络性能、扩展、稳定性方面 KVM 不如 Xen,这些因素是做 VPS 的关键,所以现在很少看到 KVM VPS,不知道 RHEL 6 以后会不会多起来,目前 KVM 应用比较少的还有一个原因就是对硬件要求高(CPU 需要 Intel VT 或 AMD SVM 的支持),硬件发展速度很快,以后应该不会有这个问题。由于 KVM 支持全虚拟,所以可以在上面安装各类操作系统,和 Xen HVM 一样。在 VPSee 看来,KVM 更适合做桌面一些,Xen 更适合做数据中心解决方案。以下操作在 SUN Fire X2100 服务器和 CentOS 5.5 上完成。对 OpenVZ 和 Xen 感兴趣的童鞋可以看:在 CentOS 上安装和配置 OpenVZ在 CentOS 上安装和配置 Xen.

检查 CPU

和 Xen 不同,KVM 需要有 CPU 的支持(Intel VT 或 AMD SVM),在安装 KVM 之前检查一下 CPU 是否提供了虚拟技术的支持:

# egrep 'vmx|svm' /proc/cpuinfo
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca 
cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt 
rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm 
extapic cr8_legacy
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca 
cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt 
rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm 
extapic cr8_legacy

安装 KVM

安装 KVM 所需要的软件包:

# yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager \
libvirt libvirt-python python-virtinst

或者

# yum groupinstall KVM

安装完后重启系统,然后确认一下是否安装成功:

# reboot

# lsmod | grep kvm
kvm_amd                69416  0 
kvm                   226208  1 kvm_amd

# ls -l /dev/kvm 
crw-rw---- 1 root kvm 10, 232 Jun 25 15:56 /dev/kvm

安装虚拟机

用 virt-install 安装,这里以安装 FreeBSD 8.0 为例,os-variant 可以选择 freebsd7:

# virt-install \
--name freebsd \
--ram 512 \
--vcpus=1 \
--disk path=/home/vpsee/freebsd.img,size=4 \
--network network:default \
--os-variant=freebsd7 \
--accelerate \
--cdrom /home/vpsee/8.0-RELEASE-i386-disc1.iso \
--vnc

如果需要获得 virt-install 命令的更多选项和参数,可以查看在线帮助:

# man virt-install

用 virt-viewer 打开控制台连上 FreeBSD 的安装界面:

# virt-viewer freebsd

也可以直接用 virt-manager 图形化安装,安装过程很简单,KVM 中没有 Xen dom0, domU 的概念,更容易理解和使用,任何用过 VMware 和 VirtualBox 的人都会很容易上手,启动 virt-manager 图形界面创建一个虚拟机,创建硬盘、配置内存网络、指定安装光盘 iso 等,一步一步傻瓜操作:

# virt-manager

Tips

安装完 KVM 和上面的 FreeBSD 以后,以后就可以通过 virsh 命令行工具来启动、关闭、重启、进入控制台的工具来操作虚拟机了,就和在 Xen 里使用 xm 一样:

# virsh --connect qemu:///system
start freebsd
console freebsd
quit

如果你在客户端使用 Mac 或者 Linux 的话,而且没有 vnc viewer 之类的工具的话,可以直接用 ssh 和 X 连接到正在安装 FreeBSD 的那个控制台上:

# ssh -X -C root@172.16.20.1
# virt-viewer freebsd

freebsd kvm console

评论 (56 Comments)

  1. @hai
    172.16.20.1 是 KVM 服务器的地址,不是 FreeBSD 虚拟机的地址。

  2. @vpsee
    # ssh -X -C root@172.16.20.1
    # virt-viewer freebsd
    以上的命令的是意思是在另外一台linux服务器(客户端)上通过SSH连接到KVM服务器?那么另外一台linux服务器(客户端)需要桌面环境吗?KVM服务器需要桌面环境吗?谢谢!

  3. @hai
    是的,先(从另外一台机器)ssh 到 KVM 服务器,然后在 KVM 服务器上执行 virt-viewer,就会把 KVM 服务器上运行的 virt-viewer 通过 ssh 传到客户端,当然这是远程的情况,如果你就在本地 KVM 服务器上玩 KVM 的话就不需要 ssh,就在本地执行 virt-viewer 就可以了。

    KVM 服务器不需要桌面环境,如果你初学的话用桌面环境和工具 virt-manager 会让你安装 FreeBSD/Linux 虚拟机更容易。

  4. @vpsee
    最近用kvm 有个很诡异的问题。发现ping宿主的某一个虚机的时候,有延时的情况,其他几台虚拟机没有类似的问题。不知道这样的情况是个什么问题?不知道您是否有类似的问题。

  5. @spring
    看一下这个 “某个虚拟机” 是否正在使用和占用大量带宽。

  6. 上面什么都没有开,之前跑了代码,可能导致网卡很慢,后来把代码都移走了。这个虚拟机上面什么东西都没有,就一个ssh服务。还是会报:Write failed: Broken pipe。报错的时候,网络就开始卡了。Ping的时候,时间需要1W多ms。很郁闷。

发表评论