*|*1.虚拟化技术简介* | *

在说kvm之前,先说一下虚拟化。什么是虚拟化?嗯,虚拟化是一种资源管理技术,对一台计算机的各种物理资源(CPU、内存、存储、网络等)进行抽象和转化。),并提供分段和重组以最大限度地利用物理资源。

图1-1(传统架构)

图1-2(虚拟化架构)

我们单独说一下虚拟化架构。我们可以看到,它比传统架构拥有更多的虚拟化层(或vmm/hypervisor),传统架构是为了实现虚拟化而引入的软件层。它向下控制实际的物理资源(相当于原来的操作系统);虚拟机具有N个逻辑资源。虚拟化层运行在实际的物理环境上,虚拟机将在其上运行。我有时称虚拟机系统为guestos。接下来,我们来看看虚拟化的具体实现,即kvm。

*|*2.kvm*|*

*|*1.简介* | *

kvm的全称是Kernel-based Virtual Machine,即基于内核的虚拟机,是虚拟化的一种具体实现。KVM是由Qumranet公司开发的。它没有从底层写一个新的Hypervisor,而是选择了linux内核,通过加载模块把自己变成了Hypervisor,KVM模块从此成为了Linux内核的一部分。

结构

接下来说说kvm的架构。kvm主要由两部分组成,一是kvm内核模块,二是qemu。

Kvm模块:它是linux内核的一部分。linux操作系统在加载kvm内核模块时,好像变成了hypervisor,可以实现虚拟化,主要是加载cpu和内存的虚拟化,它是基于硬件实现cpu和内存的虚拟化,所以需要开启特定硬件的虚拟化功能,针对不同的CPU会加载不同的kvm模块(主要分为amd模块和intel模块)。

Qemu:qemu原本是一个著名的开源虚拟机软件项目,并不是KVM虚拟化软件的一部分。与kvm不同的是,qemu最初实现的虚拟机是纯软件实现,通过二进制翻译来模拟虚拟化客户端中的CPU指令,因此性能相对较低。引入kvm架构时,只负责实现I/O虚拟化功能,拉上去后只是一个普通的linux进程,可以模拟磁盘、网卡、声卡等。还可以通过/dev/kvm字符设备与KVM内核模块交互。

图1-3

从上图我们可以清楚的了解kvm的架构,它是由linux中自然集成的kvm内核模块和qemu进程组成,每个虚拟机都是一个qemu进程,有多少个虚拟机就会有多少个qemu进程。

*|*2.管理结构* | *

没有良好的管理和运维工具,就无法实现成熟的虚拟化。部署、操作、维护和管理的复杂性和灵活性是企业在实施虚拟化时要考虑的关键问题。目前,KVM有自己的管理模型,其架构如下:

图1-4

从上图可以看到kvm虚拟化的整体架构,底层是kvm虚拟化平台,顶层是libvirt,libvirt之上是各种管理工具。现在我分别给大家介绍一下。

Libvirt:旨在更方便地管理平台虚拟化技术,包括应用程序接口、守护进程和管理工具。它不仅提供虚拟化客户端的管理,还提供虚拟化网络和存储的管理。它还支持不同虚拟化平台的管理,包括kvm、xen、vmware等。Libvirt通过不同的驱动实现不同虚拟化平台的对接。它充当管理工具和虚拟化平台之间的中间层,帮助我屏蔽底层。

l管理工具

然后我们知道libvirt给我们提供了api接口,需要通过编程来调用,这显然不符合我们的使用习惯,于是我们引入了各种管理工具,通过管理工具调用api接口,给我展示了更方便简单的使用方法。现在我们来介绍一些主流的管理工具:

Virsh: virsh是一个虚拟化管理工具,用C语言编写,使用libvirt API。libvirt项目的源代码包括virsh的代码,virsh是一个命令行工具,用于管理虚拟化环境中的虚拟机和虚拟机管理程序。

Virt-viewer是一个“虚拟机查看器”,是一个显示虚拟化客户端图形界面的工具。

Virt-install为虚拟客户机的安装提供了一种方便易用的方式。

Virt-manage(虚拟机管理器)是一个用于管理虚拟机的图形桌面用户界面。目前,它只支持在Linux或其他类UNIX系统中运行。

*|*3.安装和使用* | *

实验环境:这里我选择使用vmwareworkstation进行实验。

1.我们需要在vmwareworkstation中创建一个虚拟机,我们必须打开虚拟化功能。

2.安装的linux系统(我这里选centos 8.0)

3.选择安装虚拟化相关组件(此处省略其他系统安装步骤)。

4.系统安装好了,我们的kvm也安装好了。

检查

通过命令可以看到相应的kvm模块。

[czw@localhost ~]$ lsmod | grep kvm

kvm_amd 106496 0

ccp 98304 1 kvm_amd

kvm 745472 1 kvm_amd

irqbypass 16384 1 kvm

看qemu进程是不是被命令拉上来的,但是在运行虚拟机之前看不到对应的进程。

[czw @ localhost ~]$ PS-aux | grep QEMU

通过上面的命令,我们可以看到libvirtd已经被拉起。

[czw @ localhost ~]$ PS-aux | grep libvirtd

根1039 0.0 0.7 1840320 42204?Ssl 02:20 0:00 /usr/sbin/libvirtd

简单使用

从前面的架构图可以知道,我们通常通过管理工具来操作虚拟化平台。然后我们可以使用virt-manager,一个图形化的工具,我们可以在命令行输入命令来调用这个工具。

[czw@localhost ~]$ virt-manager

单击图中所示的选项创建虚拟机。

选择系统的引导模式,选择用iso安装。

选择本地iso系统和相应的操作系统。

选择内存大小和cpu规格。

选择磁盘大小

默认情况下,配置虚拟机名称和网络类型。

完成上述步骤后,虚拟机的创建就完成了。

3.结束语* | *

Kvm也是目前最主流的虚拟化实现。学习和使用kvm可以帮助你对it上的虚拟化和云计算有更深的理解。希望这个内容能让你有所收获。