KVM虚拟化

KVM 虚拟化

 

背景:

  随着硬件的设备性能越来越高,成本也越来越低廉,我们在硬件上运行一些程序跑一些业务的时候,可能会对硬件的资源造成一种浪费。这时候我们直接在硬件上采用的一些虚拟化技术,虚拟一些虚拟的机器,让业务泡在虚拟机中。方便后期的维护,迁移

 

常见的虚拟化:

Eg: 云平台     openstack 

 

 

Hardware 是硬件

Os       系统

Hapervisor VMM 是虚拟软件

Guest OS    虚拟机

 

Os  hardware 构成一个服务器,通过hypersvisor 对他物理的资源进行虚拟化,通过hypervisor 管理创建的虚拟机

 

 

如果不需要os 的虚拟化称为 原生态虚拟化

如果以os 的虚拟化称为 寄居

 

虚拟化技术既是对资源的抽象

如果我们用虚拟化技术模拟得是底层的硬件,eg CPU 内存和外设等,这种虚拟化技术称为 “平台虚拟化”    每个平台都可以运行自己独立系统。

 

如果我们把操作系统及其提供的系统调用作为资源“操作系统虚拟化”模拟操作系统的一些应用程序和库。Egdocker 

 

 

 

 

 

平台虚拟化:

 

虚拟化管理程序Hypervisor VMM

 

在平台虚拟化中管理虚拟化的一套软件,可以允许多个操作系统和应用共享硬件

 

Hypervisor 可以以截获虚拟机的命令。让虚拟程序不去影响物理机 

 

 

根据平台虚拟化,虚拟化的划分:

 

 

 

半虚拟化:

 

利用hypervisor 可以绕过自己的虚拟硬件,通过一些系统的调用去跑一些真实的物理硬件!

 

半虚拟化体现在输入输出的设备上如网卡硬盘,对操作系统有一定的限制

 

 

 

 

 

全虚拟化   ----已经淘汰了

 

 

 

硬件辅助全虚拟化

 

有硬件底层添加的虚拟化技术的支持,上层虚拟化跑的应用子调用底层的CPU直接由底层的虚拟化去调用,不在需要中间的hypervisor 的去运行,(对CPU有要求,CPU要支持虚拟化)

 

标志:

 

Intel  支持硬件辅助虚拟化    VT-x

 

AMD  支持硬件辅助虚拟化 AMD-v

 

 

 

 

 

 

 

如何实现硬件的虚拟化的那?

 

CPU指令集进行改造

 

能在CPU上运行的东西我们称他CPU指令集,所有能在CPU上能运行得命令是分等级分环的!

 

 

 

 

 

Ring 0     内核级别的命令是运行在

 

Ring 3 用户空间的命令

 

Ring 1 ring 2 在没有运行虚拟化的时候是空闲的。

 

Ring  -1        是运行虚拟化的敏感命令如关机之类的

 

硬件辅助,中间的改造运行虚拟化都在底层的CPU上进行!

 

硬件辅助虚拟化:    linux KVM

 

 

 

 

 

可以通过lscpu 查看机器是否支持虚拟化

 

 

 

 

 

操作系统虚拟化与传统虚拟化

  1. 省却了虚拟硬件
  2. 省却了虚拟软件

 

 

 

lvm 为例:

 

 

Kvm 实际是内核的一个模块,这个模块本身提供了CPU  与内存的模拟,借助quem-kvm 实现一个硬盘和网卡的模拟

 

我们从物理机看kvm kvm在物理机上是以进程存在

 

Libvirt  上虚拟机的一些管理命令 

 

 

 

KVM 的安装

手工去安装kvm

方法一: 通过yum install  安装包

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

[root@study-server ~]#yum install virt-install.noarch libvirt-python.x86_64 virt-manager python-virtinst libvirt-client.i686 --skip-broken

 

 

装软件组前三必须安装: yum groupinstall -y virt*

 

 

 

通常情况下往虚拟机拷贝文件,首先的需要虚拟机是运行开启的,

Libguestfs 支持虚拟机不开机就可以往虚拟机里拷贝文件、从虚拟机往出拷贝文件等

 

 

 通过:  lsmod | grep kvm 检查kvm 模块是否安装成功

 

 

posted @ 2020-11-22 14:55  不懂技术得小杨  阅读(478)  评论(0编辑  收藏  举报