Linux Kernel-based Virtual Machine (KVM) 是一款 Linux 开放源码虚拟化软件,基于硬件虚拟化扩展(Intel VT-X 和 AMD-V)和 QEMU 的修改版。KVM — 其文件格式为 kvm.ko,是一个提供核心虚拟化基础架构和特定于处理器的模块 kvm-intel.ko 和 kvm-amd.ko 的可装载内核模块 — 其设计目标是在需要引导多个未改动的 PC 操作系统时支持完整的硬件模拟。
通过使用 KVM,您可以运行多个其本身运行未改动的 Windows 或 Mac OS X 映像的虚拟机。每个虚拟机都有各自的虚拟硬件,比如网卡、磁盘和图形适配器等。
在本文中,我使用的机器为运行 SUSE 11 操作系统的 IBM Blade Server HS21。HS21 支持 Intel VT 扩展和 2.6.27.13 内核版本的 SUSE 11,后者已经包含 KVM(KVM 包含在 2.6.20 以后的 Linux 内核版本中)。
需要通过 3 个步骤才能配置好虚拟服务器:
安装操作系统和所需的软件。
创建虚拟服务器。
配置虚拟服务器网络。
步骤 1. 安装操作系统和所需的软件这个小节讨论:
安装操作系统和所需的软件
确定 CPU 是否支持 KVM
确保正确安装了软件
安装操作系统和所需的软件在安装了操作系统之后,您可以通过以下命令找到已安装的 Linux 内核:
kvm:~ # uname -a然后选择并安装 kvm 和 kvm-kmp-default 包(已经包含在针对 I/O 硬件模拟进行修改的 QEMU 中)。如图 1 所示,选择这些包并单击 Accept 安装它们:
图 1. 查找已安装的内核现在,kvm-kmp-default 版本应该为 78_2.6.27.13_1-11.3.(78 表示 KVM 的版本,其余的信息表示内核的版本)。
典型的 KVM 安装包含以下组件:
一个用于管理虚拟化硬件的设备驱动程序;这个驱动程序通过字符设备 /dev/kvm 公开其功能。
一个用于模拟 PC 硬件的用户空间组件;目前,这是在用户空间处理的,并且是经过稍微修改的 QEMU 进程。
I/O 模型,它直接源自 QEMU 的模型,并且支持 copy-on-write 磁盘映像和其他 QEMU 特性。
确定 CPU 是否支持 KVMKVM 依赖于 x86 虚拟化扩展。为了检查兼容性,请运行命令 grep vmx /proc/cpuinfo(对于 AMD,运行命令 grep svm /proc/cpuinfo)。如果输出类似于清单 1,那么 CPU 就支持 KVM;否则,CPU 不支持 KVM。
清单 1. 检查 CPU 是否支持 KVM运行命令 lsmod | grep kvm 检查 KVM 模块是否成功安装。如果结果类似于以下输出,那么 KVM 模块已成功安装:
kvm:~ # lsmod | grep kvm回页首
步骤 2. 创建虚拟服务器这个小节讨论:
创建原始磁盘映像
在该映像上安装操作系统
启动虚拟服务器
创建原始磁盘映像要创建原始磁盘映像,使用以下命令:
dd if=/dev/zero of=/mnt/kvmtest.img bs=1024 count=0 seek=$[10*1024*1024]
使用该命令将创建一个大小为 10GB 的映像,其名称为 kvmtest.img。
在该映像上安装操作系统要将操作系统安装在该映像上,使用以下命令:
/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -boot d -cdrom /mnt/SLES-11-DVD-i586-RC3-DVD1.iso -m 1024
因为您安装的是现成的 KVM 包而不是从头构建 KVM,所以要使用 qemu-kvm 而不是 qemu-system-x86_64。
-boot d 意味着我们将让虚拟服务器从 CDROM 启动。-m 1024 表示我们为虚拟服务器指定 1GB 的内存。
在运行该命令之后,操作系统安装界面应该类似于图 2:
图 2. 操作系统安装界面接下来,按照常规的方式安装操作系统。
启动虚拟服务器在成功安装操作系统之后,您可以通过以下命令启动虚拟服务器:
/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -m 1024
您的服务器应该像一个运行在物理硬件之上的服务器。
回页首
步骤 3. 配置虚拟服务器网络您看到了如何成功创建一个虚拟服务器,但还没有为虚拟服务器创建网络。现在,我将展示如何为虚拟服务器创建桥接网络:
安装 bridge-util 包
创建桥接网络界面
为网络控制创建脚本
启动来宾操作系统网络
配置来宾操作系统网络
bridge-util 包安装我们需要创建一个桥接网络,因此我们需要在操作系统的软件管理部分安装 bridge-util 包。图 3 显示了在哪里选择和安装该包。
图 3. 安装 bridge-util 包在操作系统的网络配置界面,单击 Add a new network interface(见图 4):
图 4. 添加新的网络界面您将得到类似于图 5 所示的 Hardware Dialog:
图 5. 针对网络界面的硬件配置对话框选择 Bridge 作为设备类型;单击 Next 继续配置网络。您将看到如图 6 所示的配置界面:
图 6. 网络配置界面在 “Bridged Devices” 下选择 eth0 并为桥接界面配置一个静态 IP,它与图 7 的配置 eth0 相同。
图 7. 为桥接界面配置一个静态 IP完成以上操作之后,eth0 配置将被清除,单击 Next 继续。此时,您将回到网络配置界面。您将看到创建了一个新的桥接网络界面,并且清除了 eth0 配置。
构建网络控制脚本网络控制脚本应该类似于清单 2:
清单 2. 网络控制脚本通过以下命令启动带有网络界面的来宾操作系统:
/usr/bin/qemu-kvm -hda /mnt/kvmtest.img -m 1024 -net nic,macaddr=52:54:00:12:34:56 -net tap,script=/etc/qemu-ifup
您将在启动虚拟服务器时指定一个网络界面。
配置来宾操作系统网络在来宾操作系统启动之后,像平常一样配置它的网络。
祝贺您!您已经成功创建了一个基于 KVM 的虚拟服务器。