服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux折腾记(二十):虚拟机体验之KVM篇

Linux折腾记(二十):虚拟机体验之KVM篇

2019-10-13 16:20京山游侠 Linux

这篇文章主要介绍了Linux折腾记(二十):虚拟机体验之KVM篇,KVM和QEMU是相辅相成的,QEMU可以使用KVM内核模块加速,而KVM需要使用QEMU运行虚拟机,需要的朋友可以参考下

在上一篇中,我展示了虚拟机软件QEMU的使用、效果及其性能,同时也分析了不同用户对虚拟机的不同追求。但是不管是桌面用户还是企业级用户,对虚拟机软件的追求有一点是共同的,那就是性能。QEMU是一个强大的虚拟机软件,它可以完全以软件的形式模拟出一台完整的电脑所需的所有硬件,甚至是模拟出不同架构的硬件,在这些虚拟的硬件之上,可以安装完整的操作系统。QEMU的运行模式如下图:

Linux折腾记(二十):虚拟机体验之KVM篇

  很显然,这种完全以软件模拟硬件的形式虽然功能强大,但是性能难以满足用户的需要。模拟出的硬件的性能和物理硬件的性能相比,必然会大打折扣。为了提高虚拟机软件的性能,开发者们各显神通。其中,最常用的办法就是在主操作系统中通过内核模块开一个洞,通过这个洞将虚拟机中的操作直接映射到物理硬件上,从而提高虚拟机中运行的操作系统的性能。如下图:

Linux折腾记(二十):虚拟机体验之KVM篇

  其中KVM就是这种加速模式的典型代表。在社区中,大家常把KVM和Xen相提并论,但是它们其实完全不一样。从上图可以看出,使用内核模块加速这种模式,主操作系统仍然占主导地位,内核模块只是在主操作系统中开一个洞,用来连接虚拟机和物理硬件,给虚拟机加速,但是虚拟机中的客户操作系统仍然受到很大的限制。这种模式比较适合桌面用户使用,主操作系统仍然是他们的主战场,不管是办公还是打游戏,都通过主操作系统完成,客户操作系统只是按需使用。至于Xen,则完全使用不同的理念,比较适合企业级用户使用,桌面用户就不要轻易去碰了,具体内容下一篇我再讲。

  其实VirtualBox也是采取的这种内核模块加速的模式。我之所以这么说,是因为在安装VirtualBox时,它会要求安装DKMS。如下图:

Linux折腾记(二十):虚拟机体验之KVM篇

  熟悉Linux的人知道,DKMS就是为了方便用户管理内核模块而存在的,不熟悉DKMS的人Google一下也可以了解个大概。关于VirtualBox的具体使用方面的内容,我下一篇再讲。这一篇主要讲KVM。

  KVM和QEMU是相辅相成的,QEMU可以使用KVM内核模块加速,而KVM需要使用QEMU运行虚拟机。从上图可以看到,如果要使用Ubuntu的包管理软件安装KVM,其实安装的就是qemu-kvm。而qemu-kvm并不是一个什么很复杂的软件包,它只包含很少量几个文件,如下图:

Linux折腾记(二十):虚拟机体验之KVM篇

  用man命令查看一下它的文档,发现qemu-kvm包不仅包含的文件很少,而且它的可执行文件kvm也只是对qemu-system-x86_64命令的一个简单包装,如下图:

Linux折腾记(二十):虚拟机体验之KVM篇

  那么问题来了,kvm内核模块究竟是由哪个包提供的呢?其实,自从Linux 2.6开始,kvm就已经被加入内核了。如果非要找出kvm内核模块kvm.ko是由哪个包提供的,可以用如下命令考察一下:

Linux折腾记(二十):虚拟机体验之KVM篇

  写到这里,已经可以看出KVM的使用是很简单的了。下面,我使用KVM运行一下上一篇中安装的WinXP操作系统,体验一下QEMU经过KVM加速后的运行效率。使用如下命令运行使用KVM加速的QEMU:

Linux折腾记(二十):虚拟机体验之KVM篇

  可以看出,使用KVM加速后,虚拟机中的WinXP运行速度提升了不少,开机只用了34秒。我将分辨率调整为1366*768,图形界面运行也很流畅,不管是打开IE浏览器还是Office办公软件都没有问题,再也没有出现CPU使用率飙升到100%的情况。如果用 ps -ef | grep qemu 命令查看一下,发现kvm命令运行的还是qemu-system-x86_64程序,只不过加上了-enable-kvm参数,如下图:

Linux折腾记(二十):虚拟机体验之KVM篇

  另外,对于桌面用户来说,有一个好用的图形化界面也是很重要的。虽然QEMU和KVM自身不带图形界面的虚拟机管理器,但是我们可以使用第3方软件,比如virt-manager。只需要使用 sudo apt-get install virt-manager 即可安装该软件。该软件依赖于libvirt,在安装过程中也会自动安装。运行virt-manager的效果如下图,注意必须使用sudo运行,因为该软件需要超级用户权限:

Linux折腾记(二十):虚拟机体验之KVM篇

  该软件可自动识别系统中的虚拟机环境是QEMU+KVM还是Xen。新建一个虚拟机,由于之前安装过一个WinXP系统,所以选择导入现有硬盘镜像。点下一步后,出现如下界面:

Linux折腾记(二十):虚拟机体验之KVM篇

  这一步没什么好说的,再点下一步,如下图:

Linux折腾记(二十):虚拟机体验之KVM篇

  这里可以设置网络选项。如果勾选“在安装前自定义配置”的话,还可以对硬件进行进一步的自定义,如下图:

Linux折腾记(二十):虚拟机体验之KVM篇

  在上图中,我们可以看到虚拟机支持的所有虚拟显卡的类型,在这里,我当然选择的是VMVGA,因为我以前经常用VMWare,知道这些操作系统在VMWare的虚拟显卡设置下运行得都没有问题。当然,其它的选项都可以试一下,不过在虚拟的操作系统中需要安装相应的驱动程序。

  最后,虚拟机运行的效果图如下:

Linux折腾记(二十):虚拟机体验之KVM篇


  可以看到,该程序提供的界面有非常丰富的功能菜单,功能是非常强大的,甚至可以向虚拟机中的操作系统发送组合按键。

  可以这么说,如果没有VirtualBox的话,QEMU+KVM的组合应该是桌面用户的首选。下一篇我将尝试VirtualBox,VirtualBox号称是最强大的开源虚拟机系统,敬请期待。

延伸 · 阅读

精彩推荐
  • Linux确保Linux系统安全的前提条件 漏洞防护

    确保Linux系统安全的前提条件 漏洞防护

    Linux 作为开放式的操作系统受到很多程序员的喜爱,很多高级程序员都喜欢编写Linux操作系统的相关软件。这使得Linux操作系统有着丰富的软件支持,还有无...

    Linux之家2642020-04-11
  • LinuxLinux中环境变量配置的步骤详解

    Linux中环境变量配置的步骤详解

    Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登录到系统的用户都要读取的系统变量,而用户级的环境变量则是该用户使用系统时加载的...

    Myths7882022-02-10
  • Linuxlinux中rmdir命令使用详解(删除空目录)

    linux中rmdir命令使用详解(删除空目录)

    今天学习一下linux中命令: rmdir命令。rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的 ...

    linux命令大全5372019-11-19
  • Linux详解Linux系统下PXE服务器的部署过程

    详解Linux系统下PXE服务器的部署过程

    这篇文章主要介绍了Linux系统下PXE服务器的部署过程,包括对PXE的API架构作了一个基本的简介,需要的朋友可以参考下...

    运维之道9812019-07-04
  • LinuxLinux lnmp下无法使用mail发邮件的两种解决方法

    Linux lnmp下无法使用mail发邮件的两种解决方法

    在配置了lnmp环境后,出现了mail函数不能发送邮件的问题,其实有两种方法,一是使用sendmail组件,而是使用postfix。下面为大家一一介绍下 ...

    Linux之家4042019-09-17
  • Linux手把手教您在 Linux 上使用 GPG 加解密文件

    手把手教您在 Linux 上使用 GPG 加解密文件

    在本教程中,我将告诉你如何用 GPG 加密和解密文件。这是一个简单的教程,你可以在你的 Linux 系统上尝试所有的练习。这将帮助你练习 GPG 命令,并在你...

    Linux中国6962021-12-15
  • LinuxLinux上设置用户通过SFTP访问目录的权限的方法

    Linux上设置用户通过SFTP访问目录的权限的方法

    这篇文章主要介绍了Linux上设置用户通过SFTP访问目录的权限的方法,SFTP可以理解为使用SSH协议进行FTP传输的协议,因而同时要对OpenSSH进行相关设置,需要的朋...

    OSChina10022019-06-19
  • LinuxLinux常用的日志文件和常用命令

    Linux常用的日志文件和常用命令

    成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。 Linux 中提供了异常日志,并且日志的细节是可配置的。Linux 日志都以明文形式存储,所...

    Linux教程网2632020-04-18