网站搜索

如何使用 KVM(基于内核的虚拟机)在 Linux 中创建虚拟机 - 第 1 部分


本教程讨论 KVM 的介绍、部署以及如何使用它在基于 RedHat 的发行版(例如 RHEL/CentOS7Fedora 21)下创建虚拟机。

什么是KVM?

KVM 或(基于内核的虚拟机)是适用于 Intel 64 和 AMD 64 硬件上的 Linux 的完整虚拟化解决方案,自 2.6.20 起包含在主线 Linux 内核中,对于大多数工作负载来说稳定且快速。

KVM 特性

当您使用 KVM 部署虚拟平台时,您将获得许多有用的功能和优势。 KVM 管理程序支持以下功能:

  1. 过度使用:这意味着分配的虚拟化 CPU 或内存多于系统上的可用资源。
  2. 精简配置:允许灵活分配存储并优化每个来宾虚拟机的可用空间。
  3. 磁盘 I/O 限制:提供对从虚拟机发送到主机的磁盘 I/O 请求设置限制的功能。
  4. 自动 NUMA 平衡:提高在 NUMA 硬件系统上运行的应用程序的性能。
  5. 虚拟 CPU 热添加功能:能够根据正在运行的虚拟机的需要提高处理能力,而无需停机。

这是我们第一个正在进行的 KVM(基于内核的虚拟机)系列,在这里我们将以部分方式介绍以下文章。

先决条件

确保您的系统具有硬件虚拟化扩展:对于基于 Intel 的主机,请使用以下命令验证 CPU 虚拟化扩展 [vmx] 是否可用。

[root@server ~]# grep -e 'vmx' /proc/cpuinfo

对于基于 AMD 的主机,请验证 CPU 虚拟化扩展 [svm] 是否可用。

[root@server ~]# grep -e 'svm' /proc/cpuinfo

如果没有输出,请确保 BIOS 中启用了虚拟化扩展。验证 KVM 模块是否已加载到内核中“默认情况下应该加载”。

[root@server ~]# lsmod | grep kvm

对于基于 intel 的主机,输出应包含 kvm_intel;对于基于 amd 的主机,输出应包含 kvm_amd

在开始之前,您需要在系统上配置 root 帐户或具有 sudo 权限的非 root 用户,并确保您的系统是最新的。

[root@server ~]# yum update

确保 Selinux 处于 Permissive 模式。

[root@server ~]# setenforce 0

第1步:KVM安装部署

1.我们将首先安装qemu-kvmqemu-img软件包。这些软件包提供用户级 KVM 和磁盘映像管理器。

[root@server ~]# yum install qemu-kvm qemu-img

2. 现在,您已经具备了在主机上部署虚拟平台的最低要求,但我们仍然拥有有用的工具来管理我们的平台,例如:

  1. virt-manager 提供了一个 GUI 工具来管理您的虚拟机。
  2. libvirt-client 提供了一个 CL 工具来管理您的虚拟环境,这个工具称为 virsh。
  3. virt-install 提供命令“virt-install”来从 CLI 创建虚拟机。
  4. libvirt 提供服务器和主机端库,用于与虚拟机管理程序和主机系统进行交互。

让我们使用以下命令安装上述工具。

[root@server ~]# yum install virt-manager libvirt libvirt-python libvirt-client 

3. 对于 RHEL/CentOS7 用户,还需要安装其他软件包组,例如:虚拟化客户端、虚拟化平台和虚拟化工具。

[root@server ~]#yum groupinstall virtualization-client virtualization-platform virtualization-tools	

4. 管理所有平台的虚拟化守护进程是“libvirtd”。让我们重新启动它。

[root@server ~]#systemctl restart libvirtd

5. 重新启动守护程序后,通过运行以下命令检查其状态。

[root@server ~]#systemctl status libvirtd  
样本输出
libvirtd.service - Virtualization daemon 
   Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled) 
   Active: active (running) since Mon 2014-12-29 15:48:46 EET; 14s ago 
 Main PID: 25701 (libvirtd) 

现在,让我们切换到下一部分来创建虚拟机。

步骤2:使用KVM创建虚拟机

正如我们之前提到的,我们有一些有用的工具来管理虚拟平台和创建虚拟机。其中一个工具称为 [virt-manager],我们将在下一节中使用它。

6.虽然virt-manager是一个基于GUI的工具,但我们也可以从终端以及GUI启动/启动它。

[root@server ~]#virt-manager
使用 GNOME

使用 GNOME 经典

7.启动该工具后,将出现此窗口。

8.默认情况下,您会发现管理器直接连接到localhost,幸运的是您可以使用相同的工具远程管理另一台主机。从“文件”选项卡中,只需选择“添加连接”,就会出现此窗口。

选中“连接到远程主机”选项,然后提供远程服务器的主机名/IP。如果您需要在管理器每次启动时都建立与远程主机的连接,只需选中“自动连接”选项即可。

9. 让我们回到本地主机,在创建新的虚拟机之前您应该决定文件将存储在哪里?!换句话说,您应该为虚拟机创建卷磁盘(虚拟磁盘/磁盘映像)。

右键单击 localhost 并选择“详细信息”,然后选择“存储”选项卡。

10. 接下来,按“新建卷”按钮,然后输入新虚拟磁盘(卷磁盘)的名称并输入其大小。您想要/需要的“最大容量”部分。

分配大小是磁盘的实际大小,完成这些步骤后将立即从物理磁盘分配。

注意:这是存储管理领域的一项重要技术,称为“精简配置”。它用于仅分配已使用的存储大小,而不是所有可用大小。

例如,您创建了60G大小的虚拟磁盘,但实际只使用了20G,使用此技术从物理硬盘分配的大小将为20G 不是 60G

换句话说,分配的物理大小将根据实际使用的大小动态分配。您可以在VMWare vStorage精简配置中找到更多详细信息。

11.您会注意到新卷磁盘的标签已出现在列表中。

您还应该注意新磁盘映像(卷磁盘)的路径,默认情况下它将位于 /var/lib/libvirt/images 下,您可以使用以下命令验证它。

[root@server Downloads]# ls -l /var/lib/libvirt/images
-rw-------. 1 root root 10737418240 Jan  3 16:47 vm1Storage.img

12. 现在,我们已准备好创建虚拟机。让我们点击主窗口中的“VM”按钮,就会出现这个向导窗口。

选择将用于创建虚拟机的安装方法。现在我们将使用本地安装介质,稍后我们将讨论其余的方法。

13. 现在是时候指定要使用的本地安装介质了,我们有两个选项:

  1. 来自物理 [CDROM/DVD]。
  2. 来自 ISO 映像。

对于我们的教程,我们使用 ISO 映像方法,因此您应该提供 ISO 映像的路径。

重要:不幸的是,对于使用 RHEL/CentOS7 的人来说,存在一个非常愚蠢的错误。这个bug会阻止你使用物理[CDROM/DVD]安装,你会发现该选项是灰色的,如下所示。

如果您将光标悬停在其上,则会出现此错误消息。

到目前为止,还没有针对此错误的官方/直接解决方案,您可以在 https://bugzilla.redhat.com 上找到更多相关信息。

14.存储已经恢复,我们将使用之前创建的虚拟磁盘来安装虚拟机。将会如图所示。

15. 最后一步询问您虚拟机的名称和其他高级选项,我们稍后再讨论。

如果您想更改某些配置或进行一些自定义,只需选中“安装前自定义配置”选项。然后点击完成并等待几秒钟,控制台将出现供您的来宾操作系统管理它

结论

现在您已经了解了什么是 KVM、如何使用 GUI 工具管理虚拟平台、如何使用它部署虚拟机以及其他很棒的事情。

虽然本文还没有结束,但在我们接下来的文章中,我们将讨论与 KVM 相关的另一个重要主题。利用之前的知识让你的双手变脏,并为下一部分做好准备......