首页 > 其他分享 >KVM常问八股总结

KVM常问八股总结

时间:2024-09-10 17:25:29浏览次数:1  
标签:八股 VMM 常问 操作系统 虚拟化 虚拟机 KVM 硬件

总结自用

目录

1.虚拟化技术概述

虚拟化[Virtualization]技术最早出现在20世纪60年代的IBM大型机系统,在70年代的System 370系列中逐渐流行起来,这些机器通过一种叫虚拟机监控器[Virtual Machine Monitor,VMM]的程序在物理硬件之上生成许多可以运行独立操作系统软件的虚拟机[Virtual Machine]实例。随着近年多核系统、集群、网格甚至云计算的广泛部署,虚拟化技术在商业应用上的优势日益体现,不仅降低了IT成本,而且还增强了系统安全性和可靠性,虚拟化的概念也逐渐深入到人们日常的工作与生活中。
虚拟化是一个广义的术语,对于不同的人来说可能意味着不同的东西,这要取决他们所处的环境。在计算机科学领域中,虚拟化代表着对计算资源的抽象,而不仅仅局限于虚拟机的概念。例如对物理内存的抽象,产生了虚拟内存技术,使得应用程序认为其自身拥有连续可用的地址空间[Address Space],而实际上,应用程序的代码和数据可能是被分隔成多个碎片页或段,甚至被交换到磁盘、闪存等外部存储器上,即使物理内存不足,应用程序也能顺利执行。

2.为什么要用虚拟化?

虚拟化是一种技术,它允许单个物理机器(如服务器、计算机或存储设备)被分割成多个独立的虚拟机,每个虚拟机都可以运行不同的操作系统和应用程序,就像它们是独立的物理设备一样。虚拟化带来了许多好处,包括但不限于以下几点:

  • 1.资源利用率提高:通过在单个物理服务器上运行多个虚拟机,可以更高效地利用硬件资源,减少服务器的空闲时间。
  • 2.成本节约:减少对物理硬件的需求,从而降低购买和维护成本。
  • 3.灵活性和可扩展性:虚拟机可以根据需要快速创建、删除或重新配置,使得资源分配更加灵活。
  • 4.隔离性:每个虚拟机都是独立的环境,一个虚拟机的故障或安全问题不会直接影响到其他虚拟机。
  • 5.易于管理和维护:虚拟机可以像管理文件一样进行备份、复制和迁移,简化了系统管理。
  • 6.提高安全性:可以在虚拟机中测试和隔离不受信任的应用程序,减少对主系统的风险。
  • 7.灾难恢复和业务连续性:虚拟机可以快速备份和迁移,有助于在发生故障时快速恢复服务。
  • 8.开发和测试环境:可以快速创建一致的开发和测试环境,无需担心影响到生产环境。
  • 9.环境一致性:确保开发、测试和生产环境之间的一致性,减少因环境差异导致的问题。
  • 10.云兼容性:虚拟化技术与云计算紧密结合,使得应用程序和资源可以更容易地迁移到云平台。
  • 11.能源效率:通过减少物理服务器的数量,可以降低数据中心的能源消耗。

虚拟化技术的应用非常广泛,从服务器虚拟化、桌面虚拟化到网络虚拟化等,它为现代 IT 基础设施提供了灵活性和效率。

3.主流虚拟化方案

3.1虚拟化技术主要分类
  • 平台虚拟化(platform virtualization):针对计算机和操作系统的虚拟化。
  • 资源虚拟化(resource virtualization):针对特定的系统资源的虚拟化,比如内存、存储、网络资源等。
  • 应用程序虚拟化(application virtualization):包括仿真、模拟、解释技术等。
3.2平台虚拟化技术分类

我们通常所说的虚拟化主要是指平台虚拟化技术,通过使用控制程序(Control Program,也被称为 VirtualMachine Monitor 或 Hypervisor),隐藏特定计算平台的实际物理特性,为用户提供抽象的、统一的、模拟的计算环境(称为虚拟机)。虚拟机中运行的操作系统被称为客户机操作系统(GuestOs),运行虚拟机监控器的操作系统被称为主机操作系统(Host OS),当然某些虚拟机监控器可以脱离操作系统直接运行在硬件之上(如VMWARE的ESX产品)。运行虚拟机的真实系统我们称之为主机系统。

  • 操作系统级虚拟化(operating system level virtualization)
    在传统操作系统中,所有用户的进程本质上是在同一个操作系统的实例中运行,因此内核或应用程序的缺陷可能影响到其它进程。操作系统级虚拟化是一种在服务器操作系统中使用的轻量级的虚拟化技术,内核通过创建多个虚拟的操作系统实例(内核和库)来隔离不同的进程,不同实例中的进程完全不了解对方的存在。

比较著名的有 Solaris Container,FreeBsD Jail 和 OpenVz 等。

比如OPENVZ:这个平台是最便宜的VPS平台,在各个ps商哪里都是价格最低的。OPENVZ本身运行在linux之上,它通过自己的虚拟化技术把一个服务器虚拟化成多个可以分别安装操作系统的实例,这样的每个实体就是一个VPS,从客户的角度来看这就是一个虚拟的服务器,可以等同看做一台独立的服务器。

OPENVZ虚拟化出来的VPS只能安装linux操作系统,不能安装windows系统,比如Centos、Fedora、Gentoo、Debian等。不能安装windows操作系统是openvz的第一个缺点,需要使用windows平台的用户不能使用OPENVZVPS。

OPENVZ的第二个缺点是OPENVZ不是完全的虚拟化,每个VPS账户共用母机内核,不能单独修改内核。好在绝大多少用户根本不需要修改内核,所以这个缺点对多数人可以忽略不计。而这一点也正是openvz的优点,这一共用内核特性使得openvz的效率最高,超过KVM、Xen、VMware等平台。在不超售的情况下,openvz是最快速效率最高的VPS平台。

  • 部分虚拟化(partial virtualization)
    VMM 只模拟部分底层硬件,因此客户机操作系统不做修改是无法在虚拟机中运行的,其它程序可能也需要进行修改。在历史上,部分虚拟化是通往全虚拟化道路上的重要里程碑,最早出现在第一代的分时系统 CTSS 和 IBM M44/44X 实验性的分页系统中。

  • 全虚拟化(full virtualization)
    全虚拟化是指虚拟机模拟了完整的底层硬件,包括处理器、物理内存、时钟、外设等,使得为原始硬件设计的操作系统或其它系统软件完全不做任何修改就可以在虚拟机中运行。

操作系统与真实硬件之间的交互可以看成是通过一个预先规定的硬件接口进行的。全虚拟化 VMM 以完整模拟硬件的方式提供全部接口(同时还必须模拟特权指令的执行过程)。举例而言,x86 体系结构中,对于操作系统切换进程页表的操作,真实硬件通过提供一个特权CR3寄存器来实现该接口,操作系统只需执行"mov pgtable,%%cr3"汇编指令即可。

全虚拟化 VMM 必须完整地模拟该接口执行的全过程。如果硬件不提供虚拟化的特殊支持,那么这个模拟过程将会十分复杂:一般而言,VMM 必须运行在最高优先级来完全控制主机系统,而Guest OS需要降级运行,从而不能执行特权操作。当 Guest OS执行前面的特权汇编指令时,主机系统产生异常(GeneralProtection Exception),执行控制权重新从 Guest OS 转到 VMM 手中。VMM 事先分配一个变量作为影子CR3 寄存器给 Guest OS,将 pgtable 代表的客户机物理地址(Guest Physical Address)填入影子 CR3 寄存器,然后VMM 还需要 pgtable 翻译成主机物理地址(Host Physical Address)并填入物理 CR3 寄存器,最后返回到 Guest OS中。随后 VMM 还将处理复杂的 Guest OS 缺页异常(Page Fault)。

比较著名的全虚拟化VMM 有 Microsoft Virtual PC、VMware Workstation、Sun Virtual Box、Parallels Desktop for Mac和QEMU。

  • 超虚拟化(Paravirtualization)
    这是一种修改 Guest OS 部分访问特权状态的代码以便直接与 VMM 交互的技术。在超虚拟化虚拟机中,部分硬件接口以软件的形式提供给客户机操作系统,这可以通过 Hvpercall (VMM 提供给 Guest OS 的直接调用,与系统调用类似)的方式来提供。例如,Guest OS把切换页表的代码修改为调用Hypercall来直接完成修改影子 CR3 寄存器和翻译地址的工作。由于不需要产生额外的异常和模拟部分硬件执行流程,超虚拟化可以大幅度提高性能,比较著名的 VMM 有 Denali、Xen。

  • 硬件辅助虚拟化(Hardware-assisted virtualization)
    硬件辅助虚拟化是指借助硬件(主要是主机处理器)的支持来实现高效的全虚拟化。例如有了Intel-VT 技术的支持,Guest Os 和VMM 的执行环境自动地完全隔离开来,Guest Os 有自己的""套寄存器”,可以直接运行在最高级别。因此在上面的例子中,Guest Os 能够执行修改页表的汇编指令。Intel-VT 和 AMD-V 是目前x86 体系结构上可用的两种硬件辅助虚拟化技术。
    这种分类并不是绝对的,一个优秀的虚拟化软件往往融合了多项技术。例如 VMware Workstation 是一个著名的全虚拟化的 VMM,但是它使用了一种被称为动态二进制翻译的技术把对特权状态的访问转换成对影子状态的操作,从而避免了低效的 Trap·And-Emulate 的处理方式,这与超虚拟化相似,只不过超虚拟化是静态地修改程序代码。对于超虚拟化而言,如果能利用硬件特性,那么虚拟机的管理将会大大简化,同时还能保持较高的性能。

3.3KVM虚拟化技术架构

3.4KVM架构解析

从rhel6开始使用,红帽公司直接把KVM的模块做成了内核的一部分。

xen用在rhel6之前的企业版中默认内核不支持,需要重新安装带xen功能的内核。

KVM 针对运行在 x86 硬件上的、驻留在内核中的虚拟化基础结构。KVM 是第一个成为原生 Linux 内核(2.6.20)的一部分的 hypervisor,它是由 Avi Kivity 开发和维护的,现在归 Red Hat 所有。

这个 hypervisor 提供 x86 虚拟化,同时拥有到 PowerPC® 和IA64 的通道。另外,KVM 最近还添加了对对称多处理(SMP)主机(和来宾)的支持,并且支持企业级特性,比如活动迁移(允许来宾操作系统在物理服务器之间迁移)。

KVM 是作为内核模块实现的,因此 Linux 只要加载该模块就会成为一个hypervisor。KVM 为支持 hypervisor 指令的硬件平台提供完整的虚拟化(比如 Intel® Virtualization Technology [intel V 或 AMD Virtualization[AMD-V]产品)。KVM 还支持准虚拟化来宾操作系统,包括 Linux 和 Windows®。

这种技术由两个组件实现。第一个是可加载的 KVM 模块,当在 Linux 内核安装该模块之后,它就可以管理虚拟化硬件,并通过/proc 文件系统公开其功能。第二个组件用于 PC 平台模拟,它是由修改版 QEMU 提供的。QEMU作为用户空间进程执行,并且在来宾操作系统请求方面与内核协调。

当新的操作系统在 KVM 上启动时(通过一个称为 KVM 的实用程序),它就成为宿主操作系统的一个进程,因此就可以像其他进程一样调度它。但与传统的 Linux 进程不一样,来宾操作系统被 hypervisor 标识为处于"来宾" 模式(独立于内核和用户模式)。

每个来宾操作系统都是通过 /dev/KVM 设备映射的,它们拥有自己的虚拟地址空间,该空间映射到主机内核的物理地址空间。如前所述,KVM 使用底层硬件的虚拟化支持来提供完整的(原生)虚拟化。I/0 请求通过主机内核映射到在主机上(hypervisor)执行的 QEMU 进程。

KVM 在 Linux 环境中以主机的方式运行,不过只要底层硬件虚拟化支持,它就能够支持大量的来宾操作系统.

3.5 KVM软件安装
  • 查看cpu是否支持VT技术
cat /proc/cpuinfo|grep -E 'vmx|svm'
  • centos7安装软件
# uname -r
3.10.0-862.el7.x86_64

# yum install *qemu* *virt* *librbd1-devel* -y 

# 在安装虚拟机出错的情况下,一般是操作系统的版本问题
yum upgrade

qemu-kvm:主包
libvirt:API接口
virt-manager:图形管理程序

在所谓的kvm技术中,应用到的其实有2个东西:qemu+kvm
kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存虚拟化,但kvm不能模拟其他设备
qemu是模拟IO设备(网卡、磁盘),kvm加上qemu之后就能实现真正意义上的服务器虚拟化
因为用到了上面两个东西,所以一般称之为qemu-kvm
libvirt则是调用kvm虚拟化技术的接口用于管理的,用libvirt管理方便

  • 启动服务
systemctl status libvirtd
  • 查看kvm模块加载
# lsmod|grep kvm
kvm_intel             174841  122 
kvm                   578518  1 kvm_intel
irqbypass              13503  29 kvm

标签:八股,VMM,常问,操作系统,虚拟化,虚拟机,KVM,硬件
From: https://www.cnblogs.com/even160941/p/18393188

相关文章

  • 最全Java面试八股文过过过
    1.Java创建对象得五种方式?(1)new关键字  (2)Class.newInstance (3)Constructor.newInstance(4)Clone方法  (5)反序列化2.想要线程安全的HashMap怎么办?(1)使用ConcurrentHashMap(2)使用HashTable(3)Collections.synchronizedHashMap()方法3.ConcurrentHashMap原如何保......
  • 垃圾公司才问八股文?
    目录标题人才特质面试问什么?八股文不就是死记硬背吗?普通人的出路我最近经常看到很多人吐槽,很多公司的面试喜欢问“八股文”,总是问那些工作中用不到的东西,很多人甚至用这个来评判一个公司的好坏,认为问八股文的公司就是垃圾公司。我今天想从一个面试官的角度来谈谈,面......
  • 前端面试八股文
    1.HTTP和HTTPS1、http和https的基本概念http:是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的超文本传输协议。https:是以安全为目标的HTTP通道,即HTTP下加入SSL层进行加密。其作用是:建立一个信息安全通道,来确保数据的传......
  • KVM
     KVM(Kernel-basedVirtualMachine)是基于内核的虚拟机。 KVM本质是Linux内核中的虚拟化功能模块kvm.ko,利用Linux做大量的事,如任务调度、内存管理与硬件设备交互等。是开源软件。在KVM虚拟化方案中,KVM主要用于管理CPU和内存的虚拟化,IO设备的虚拟化则由QEMU来完成。KVM借助了QE......
  • kvm虚拟化功能特性及优缺点?
    KVM(Kernel-basedVirtualMachine)是一种基于Linux内核的开源虚拟化技术,它通过将Linux内核转变为一个Type1Hypervisor来提供虚拟化功能。以下是KVM的一些主要功能特性以及它的优缺点:功能特性开源性质:KVM是开源软件,允许用户自由使用、修改和分发。硬件辅助虚拟化:KVM利用CPU的硬件虚......
  • 九银十拿到大模型(LLM)offer,面试八股
    金九银十拿到大模型(LLM)offer,面试八股从事大模型的朋友在金J九银十拿到了一份不错的offer,面试十几家公司,通过了六家。好在分享了大佬总结的大模型方向面试的常见题目(含答案),短时间内过了一边,能针对的回答。有了面试框架更容易拿到offer,分享给大家,祝大家都能拿到自己心仪的o......
  • 八股文总结
    项目八股面经简历整理抽奖大转盘一般项目中都是MVC,做起来简单,随着项目变大,service层,很多不同业务的接口和实现类,导致项目结构很乱,dto,vo系统内部数据流转类,维护和迭代不太好做,DDD在一定程度上解决了这个问题,domain领域层,把不同业务以合理的角度区分为不同的领域,也就是不同包,不......
  • 前端速通面经八股系列(八)—— 全网最高质量的前端浏览器原理篇
    浏览器原理系列目录一、浏览器安全1.什么是XSS攻击?(1)概念(2)攻击类型2.如何防御XSS攻击?3.什么是CSRF攻击?(1)概念(2)攻击类型4.如何防御CSRF攻击?5.什么是中间人攻击?如何防范中间人攻击?6.有哪些可能引起前端安全的问题?7.网络劫持有哪几种,如何防范?二、进程与线......
  • 「Java跳槽面试必备」2024年09月最新八股文
    【前言】网上各种面试八股文太多太多,但我今年找了好几个都是很久很久以前的老面试题,老文档了,和我出去面试市场上面试官问的问题基本上不一样了,可以说被打了一个措手不及,浪费了好几个机会,回来又找了好一些资料,以及结合自己最近的面试情况总结了一些心得免费分享给大家!虽然只有几本......
  • 程序员必备Java八股文合集
    1、Java线程具有五中基本状态(1)新建状态(New): 当线程对象对创建后,即进入了新建状态,如:Threadt=newMyThread();(2)就绪状态(Runnable):当调用线程对象的start()方法(t.start();),线程即进入就绪状态。处于就绪状态的线程,只是说明此线程已经做好了准备,随时等待CPU调度执行,并不......