内核级虚拟化技术-研读

一、虚拟化与虚拟化技术

Long Long Definition

二、虚拟化分类

2.1、硬件虚拟化与软件虚拟化

在这里插入图片描述
硬件虚拟化就是在一台主机上虚拟了整个系统,各虚拟机之间互不可见。
缺点:导致很多重复的线程和重复的内存页出现,性能上肯定会有影响,一台宿主机上虚拟机的个数肯定会有一定限制。
软件虚拟化:aka容器技术,比如VM利用了此技术,VM作为容器管理软件而已,LXC也利用了这种技术。

2.2、平台虚拟化与软件虚拟化

在这里插入图片描述

2.3、全虚拟化与半虚拟化

在这里插入图片描述

三、传统虚拟化架构和KVM虚拟化架构

3.1、传统虚拟化架构

在这里插入图片描述

3.2、KVM虚拟化架构

在这里插入图片描述
在这里插入图片描述
KVM是嵌入在Linux操作系统标准内核中的一个虚拟化模块,它能够将一个Linux标准内核转换成为一个VMM,嵌有KVM模块的Linux标准内核可以支持通过kvm tools来进行加载的GuestOS。

KVM嵌入到内核层级,aka: Kernal Virtual Machine

所以在这样的操作系统平台下,计算机物理硬件层上直接就是VMM虚拟化层,而没有独立出来的HostOS操作系统层。

每个虚拟机直接解除到硬件资源,不需要HostOS

在这样的环境中HostOS就是一个VMM。每个由KVM创建的GuestOS都是HostOS(或VMM)上的一个单个进程。而在GuestOS上的User-space中运行的Applications可以理解为就是进程中的线程。

四、linux使用KVM实现全虚拟化

4.1、KVM全虚拟化实现

KVM只是虚拟化解决方案的一部分,想要实现全虚拟化,还需要的条件是:

  1. CPU处理器提供的虚拟化支持(VT-x硬件辅助虚拟化,可以为GuestOS创建虚拟化处理器,本质是对寄存器的隔离模拟和对指令集的划分)。

BIOS开启虚拟化

  1. 内存可以通过kvm虚拟化成独立的虚拟化地址(/dev/kvm)
  2. I/O虚拟化(QEMU)
    所以说: KVM虚拟化 = KVM内核模块 + /dev/kvm + QEMU

4.2、kvm全虚拟化详解

1)/dev/kvm
Linux操作系统标准内核中的KVM内核模块生成了一个名为/dev/kvm的设备,有了/dev/kvm设备,使得GuestOS的地址空间(内存地址、磁盘地址)能够独立于标准内核或其他任何GuestOS的地址空间。

/dev/kvm路径下的空间为某个KVM所私有

Linux操作系统目录结构包含的/dev目录树下的设备对于所有User-space进程或线程(无论是在GuestOS上,还是在VMM上)来说都是通用的,但是每个打开/dev/kvm设备的不同的进程或线程,所能使用的都是唯一且各不相同的地址映射(为了支持GuestOS间的隔离)。

接上注解,所私有,各个不同的KVM可访问此路径,但没有修改权

KVM内核模块通过/dev/kvm设备提供了内存虚拟化,给予GuestOS与内核或者其他GuestOS相对独立的地址空间。每个GuestOS都有自己的地址空间,并且这些地址空间是在实例化GuestOS时创建映射的。

映射给GuestOS的物理内存实际上是映射给这个GuestOS在VMM中相应进程的虚拟内存。

有两种支持Guest地址到Host(VMM)地址的转换方法:

应用LinuxOS维护的一组影子页表(shadow page table)

CPU也可以通过在访问未经映射的内存位置时使用VMM(主机内核)来支持内存转换进程。

所以总的来说,/dev/kvm设备的作用就是:将不同的GuestOS之间的地址隔离,或将GuestOS和HostOS(VMM)之间的地址隔离

2)QEMU

QEMU是一个I/O虚拟化解决方案,能够对一个完整的计算机物理层环境进行虚拟化(EG. 磁盘、图形适配器、网络设备)。

在GuestOS中生成的所有I/O请求都会被QEMU中途截获,并重新发送到QEMU进程模拟的User Mode中。

4.3、Openstack、KVM、QEMU

KVM 用来模拟 CPU 的运行,但缺少了对 Network 和 I/O 的支持。QEMU-KVM 是一个完整的模拟器,它基于 KVM 上,提供了完整的 Network 和 I/O 支持。其中 Openstack 为了跨 VM 性,所以不会直接控制 QEMU-KVM,而是通过 libvit 的库去间接控制 QEMU-KVM 。

KVM的实现原理图:
   在这里插入图片描述

内核级虚拟化技术

KVM内核模块为Linux标准内核引入了一种除现有的Kernel Mode和User Mode之外的新进程模式。这种新模式就称为Guest Mode模式,顾名思义,它用来执行GuestOS的代码。
Linux标准内核的执行模式可以针对不同的运行内容和目的进行定义。Guest Mode的存在就是为了执行GuestOS的代码,但是只针对那些非I/O的代码。I/O代码还需要QEMU来作为支持。

GuestOS可以在两种模式下运行:

在Guest Mode中运行的GuestOS可以支持标准的内核。

在User Mode下运行的GuestOS则支持自己的内核和User-space(Applications)。

相同的是,GuestOS只能够在User Mode下执行I/O操作,而且这是单独使用QEMU-KVM进行管理的。

五、内核级虚拟化技术

内核级虚拟化技术:Kernel-based Virtual Machine,简称KVM

5.1、KVM优势

1)KVM Memory Page Sharing
  在这里插入图片描述

内核级虚拟化技术

2)The benefits od Disk Overlay
  在这里插入图片描述

内核级虚拟化技术

5.2、KVM特性

嵌入到Linux正式Kernel(提高兼容性)
   代码级资源调用(提高性能)
   虚拟机就是一个进程(内存易于管理)
   直接支持NUMA技术(提高扩展性)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨陌潇潇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值