热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

如何创建KVM虚拟机

LinuxKernel-basedVirtualMachine(KVM)是一款Linux开放源码虚拟化软件,基于硬件虚拟化扩展(IntelVT-X和AMD-V)和QEMU的修改版。KVM—其文件格式为kvm.ko,是一个提供核心虚拟化基础架构和特定于处理器的模块kvm-intel.ko和kvm-amd.ko的可

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
Linux kvm 2.6.27.13-1-pae #1 SMP 2009-01-27 13:41:16 +0100 i686 i686 i386 GNU/Linux

然后选择并安装 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 是否支持 KVM

KVM 依赖于 x86 虚拟化扩展。为了检查兼容性,请运行命令 grep vmx /proc/cpuinfo(对于 AMD,运行命令 grep svm /proc/cpuinfo)。如果输出类似于清单 1,那么 CPU 就支持 KVM;否则,CPU 不支持 KVM。

清单 1. 检查 CPU 是否支持 KVM
kvm:~ # grep vmx /proc/cpuinfo
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36
clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc arch_perfmon pebs bts pni
monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr dca lahf_lm
确定正确安装了软件

运行命令 lsmod | grep kvm 检查 KVM 模块是否成功安装。如果结果类似于以下输出,那么 KVM 模块已成功安装:

kvm:~ # lsmod | grep kvm
kvm_intel              42604  0
kvm                   150264  1 kvm_intel
步骤 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 包
安装 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
为桥接界面配置一个静态 IP

完成以上操作之后,eth0 配置将被清除,单击 Next 继续。此时,您将回到网络配置界面。您将看到创建了一个新的桥接网络界面,并且清除了 eth0 配置。

构建网络控制脚本

网络控制脚本应该类似于清单 2:

清单 2. 网络控制脚本
#!/bin/sh
set -x
switch=br0
if [ -n "$1" ];then
        tunctl -u `whoami` -t $1
        ip link set $1 up
        sleep 0.5s
        brctl addif $switch $1
        exit 0
else
        echo "Error: no interface specified"
        exit 1
fi
启动来宾操作系统

通过以下命令启动带有网络界面的来宾操作系统:

/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 的虚拟服务器。


推荐阅读
  • 优化联通光猫DNS服务器设置
    本文详细介绍了如何为联通光猫配置DNS服务器地址,以提高网络解析效率和访问体验。通过智能线路解析功能,域名解析可以根据访问者的IP来源和类型进行差异化处理,从而实现更优的网络性能。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文详细分析了JSP(JavaServer Pages)技术的主要优点和缺点,帮助开发者更好地理解其适用场景及潜在挑战。JSP作为一种服务器端技术,广泛应用于Web开发中。 ... [详细]
  • Windows服务与数据库交互问题解析
    本文探讨了在Windows 10(64位)环境下开发的Windows服务,旨在定期向本地MS SQL Server (v.11)插入记录。尽管服务已成功安装并运行,但记录并未正确插入。我们将详细分析可能的原因及解决方案。 ... [详细]
  • PyCharm下载与安装指南
    本文详细介绍如何从官方渠道下载并安装PyCharm集成开发环境(IDE),涵盖Windows、macOS和Linux系统,同时提供详细的安装步骤及配置建议。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 解决Linux系统中pygraphviz安装问题
    本文探讨了在Linux环境下安装pygraphviz时遇到的常见问题,并提供了详细的解决方案和最佳实践。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • CMake跨平台开发实践
    本文介绍如何使用CMake支持不同平台的代码编译。通过一个简单的示例,我们将展示如何编写CMakeLists.txt以适应Linux和Windows平台,并实现跨平台的函数调用。 ... [详细]
  • 在Linux系统中配置并启动ActiveMQ
    本文详细介绍了如何在Linux环境中安装和配置ActiveMQ,包括端口开放及防火墙设置。通过本文,您可以掌握完整的ActiveMQ部署流程,确保其在网络环境中正常运行。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细介绍了如何在 Linux 平台上安装和配置 PostgreSQL 数据库。通过访问官方资源并遵循特定的操作步骤,用户可以在不同发行版(如 Ubuntu 和 Red Hat)上顺利完成 PostgreSQL 的安装。 ... [详细]
  • 掌握远程执行Linux脚本和命令的技巧
    本文将详细介绍如何利用Python的Paramiko库实现远程执行Linux脚本和命令,帮助读者快速掌握这一实用技能。通过具体的示例和详尽的解释,让初学者也能轻松上手。 ... [详细]
author-avatar
自由的成长_563_742_784
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有