本文共 6700 字,大约阅读时间需要 22 分钟。
学习 KVM 的系列文章:
其中,KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor:
本文介绍的是基于 X86 CPU 的 KVM。
KVM 是实现拦截虚机的 I/O 请求的原理:
QEMU-KVM:
KVM:
KVM 所支持的功能包括:
RedHat Linux KVM 有如下两种安装方式:
选择安装类型为 Virtualizaiton Host :
可以选择具体的 KVM 客户端、平台和工具:
这种安装方式要求该系统已经被注册,否则会报错:
[root@rh65 ~]# yum install qemu-kvm qemu-imgLoaded plugins: product-id, refresh-packagekit, security, subscription-managerThis system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.Setting up Install ProcessNothing to do
你至少需要安装 qemu-kvm qemu-img 这两个包。
# yum install qemu-kvm qemu-img
你还可以安装其它工具包:
# yum install virt-manager libvirt libvirt-python python-virtinst libvirt-client
QEMU/KVM 的代码包括几个部分:
(1)KVM 内核模块是 Linux 内核的一部分。通常 Linux 比较新的发行版(2.6.20+)都包含了 KVM 内核,也可以从得到。比如在我的RedHat 6.5 上:
[root@rh65 isoimages]# uname -r2.6.32-431.el6.x86_64[root@rh65 isoimages]# modprobe -l | grep kvmkernel/arch/x86/kvm/kvm.kokernel/arch/x86/kvm/kvm-intel.kokernel/arch/x86/kvm/kvm-amd.ko
(2)用户空间的工具即 qemu-kvm。qemu-kvm 是 KVM 项目从 QEMU 新拉出的一个分支()。在 QEMU 1.3 版本之前,QEMU 和 QEMU-KVM 是有区别的,但是从 2012 年底 GA 的 QEMU 1.3 版本开始,两者就完全一样了。
(3)Linux Guest OS virtio 驱动,也是较新的Linux 内核的一部分了。
(4)Windows Guest OS virtio 驱动,可以从下载。
RedHat 6.5 上自带的 QEMU 太老,0.12.0 版本,最新版本都到了 2.* 了。
(1). 参考 ,将 RedHat 6.5 的 ISO 文件当作本地源
mount -o loop soft/rhel-server-6.4-x86_64-dvd.iso /mnt/rhel6/ vim /etc/fstab => /root/isoimages/soft/RHEL6.5-20131111.0-Server-x86_64-DVD1.iso /mnt/rhel6 iso9660 ro,loop
[root@rh65 qemu-2.3.0]# cat /etc/yum.repos.d/local.repo
[local] name=local baseurl=file:///mnt/rhel6/ enabled=1 gpgcjeck=0 1 | yum clean all< br data-filtered="filtered">yum update |
(2). 安装依赖包包
yum install gccyum install autoconfyum install autoconf automake libtoolyum install -y glib*yum install zlib*
(3). 从 下载代码,上传到我的编译环境 RedHat 6.5.
tar -jzvf qemu-2.3.0.tar.bz2cd qemu-2.3.0./configuremake -j 4make install
(4). 安装完成
[root@rh65 qemu-2.3.0]# /usr/local/bin/qemu-x86_64 -versionqemu-x86_64 version 2.3.0, Copyright (c) 2003-2008 Fabrice Bellard
(5). 为方便起见,创建一个link
ln -s /usr/bin/qemu-system-x86_64 /usr/bin/qemu-kvm
可以从下载安装包。最新的版本是 0.10.2.
virt-install \--name=guest1-rhel5-64 \--file=/var/lib/libvirt/images/guest1-rhel5-64.dsk \--file-size=8 \--nonsparse --graphics spice \--vcpus=2 --ram=2048 \--location=http://example1.com/installation_tree/RHEL5.6-Serverx86_64/os \--network bridge=br0 \--os-type=linux \--os-variant=rhel5.4
使用 VMM GUI 创建的虚机的xml 定义文件在 /etc/libvirt/qemu/ 目录中。
(1)创建一个空的qcow2格式的镜像文件
qemu-img create -f qcow2 windows-master.qcow2 10G
(2)启动一个虚机,将系统安装盘挂到 cdrom,安装操作系统
qemu-kvm -hda windows-master.qcow2 -m 512 -boot d -cdrom /home/user/isos/en_winxp_pro_with_sp2.iso
(3)现在你就拥有了一个带操作系统的镜像文件。你可以以它为模板创建新的镜像文件。使用模板的好处是,它会被设置为只读所以可以免于破坏。
qemu-img create -b windows-master.qcow2 -f qcow2 windows-clone.qcow2
(4)你可以在新的镜像文件上启动虚机了
qemu-kvm -hda windows-clone.qcow2 -m 400