KVM基本原理

一、 KVM介绍

1. KVM简介

KVM 全称是 基于内核的虚拟机(Kernel-based Virtual Machine),它是一个 Linux 的一个内核模块,该内核模块使得 Linux 变成了一个 Hypervisor。
KVM最初是由以色列的公司Qumranet(//kju'ma,net//)开发的。KVM在2007年2月被正式合并到Linux 2.6.20核心中,成为内核源代码的一部分。
KVM必须在具备Intel VT或AMD-V功能的X86平台上运行。

- 它由 Quramnet 开发,该公司于 2008 年被 Red Hat 收购。
- 它支持 x86 (32 and 64), s390, Powerpc 等 CPU。
- 它从 Linux 2.6.20 起就作为一模块被包含在 Linux 内核中。
- 它需要支持虚拟化扩展的 CPU。
- 它是完全开源的。[官网](http://www.linux-kvm.org/page/Main_Page)

2. KVM的优势

  1. 开源

    	KVM是一个开源项目,这就决定了KVM一直是开放的姿态,许多虚拟化的新技术都是首先在KVM上应用,再到其他虚拟化引擎上推广。
    	KVM背靠Linux这棵大树,和Linux系统紧密结合,在Linux上的新技术都可以马上应用到KVM上。围绕KVM的是一个开源的生态链,从底层的Linux系统,到中间层的Libvirt管理工具,到云管理平台OpenStack,莫不是如此。
    
  2. 性能

    	KVM吸引许多人使用的一个动因就是性能,在同样的硬件条件下,能提供更好的虚拟机性能,主要是因为KVM架构简单,代码只有2万行,一开始就支持硬件虚拟化,这些技术特点保证了KVM的性能。
    
  3. 免费

    	KVM因为是开源项目,绝大部分KVM的解决方案都是免费方案,随着KVM的发展, KVM虚拟机越来越稳定,兼容性也越来越好,因而也就得到越来越多的应用。
    
  4. 广泛免费的技术支持

    	免费并不意味着KVM没有技术支持。在KVM的开源社区,数量巨大的KVM技术支持者都可以提供KVM技术支持。另外,如果需要商业级支持,也可以购买红帽公司的服务.
    

3. KVM与常用企业级虚拟化产品的PK

目前常见的企业级的虚拟化产品有4款:分别是VMware、HyperV、Xen、KVM。

二、 虚拟化技术演变过程

虚拟化技术的演变过程可以分为软件模拟、虚拟化层翻译、容器虚拟化三个大的阶段。
其中,虚拟化层翻译又可以分为:

  • 基于二进制翻译的全虚拟化,即软件全虚拟化
  • 改造虚拟机系统内核加虚拟化层翻译,即半虚拟化(超虚拟化或者操作系统辅助虚拟化)。
  • 硬件支持的虚拟化层翻译,即硬件辅助的全虚拟化

1. 软件模拟的技术方式

软件模拟是通过软件完全模拟CPU、芯片组、磁盘、网卡等计算机硬件,如下图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XhEyEDm0-1622158530876)(images/QEMU虚拟架构.png)]

2. CPU运行级别

X86平台指令集划分为4个特权模式(环ring[rɪŋ]):Ring0、Ring1、Ring2、Ring3,操作系统一般使用Ring0级别,应用程序使用Ring3级别,驱动程序使用Ring1和Ring2级别。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TpPtDsec-1622158530879)(images/X86cpu指令级别.png)]

虚机怎么通过 VMM 实现 Guest CPU (客户[ɡest]CPU)对硬件的访问,根据其原理不同有三种实现技术:
软件全虚拟化
半虚拟化

硬件辅助的全虚拟化 

三、 虚拟化架构分类

1. 寄居架构

 	寄居架构 (Hosted Architecture [ˈɑːrkɪtektʃər] 建筑) 就是在操作系统之上安装和运行虚拟化程序,依赖于主机操作系统对设备的支持和物理资源的管理。

2. 裸金属架构

	裸金属架构 (“Bare [ber]  Metal [ˈmetl] ” Architecture) 就是直接在硬件上面安装虚拟化软件,再在其上安装操作系统和应用,依赖虚拟层内核和服务器控制台进行管理。 代表产品:xen server 、 VMware ESXi、RHEV(Red Hat Enterprise[ˈentərpraɪz] virtualization )

四、 KVM的功能列表

KVM 所支持的功能包括:

1.支持CPU 和 memory 超分(Overcommit [ˈoʊvər kəˈmɪt] 过度承诺)
2.支持半虚拟化I/O (virtio)
3.支持热插拔 (cpu,块设备、网络设备等)
4.支持对称多处理(Symmetric Multi-Processing,缩写为 SMP,指在一个计算机上汇集了一组处理器(多CPU),所有的CPU共享全部资源,如总线,内存和I/O系统等,操作系统或管理数据库的复本只有一个,这种系统有一个最大的特点就是共享所有资源。多个CPU之间没有区别,平等地访问内存、外设、一个操作系统。SMP 服务器的主要问题,那就是它的扩展能力非常有限。实验证明, SMP 服务器 CPU 利用率最好的情况是 24 个 CPU 。
5.支持实时迁移(Live Migration)
6.支持 PCI 设备直接分配和 单根I/O 虚拟化 (Single Root I/O Virtualization(SR-IOV) 允许Windows操作系统和微软的Hyper-V或VMware的ESXi等hypervisor对服务器的磁盘I/O设备,如现在SR-IOV对网卡设备一样进行封装,管理甚至共享。 )
7.支持 内核同页合并 (KSM )( 简单说,就是把相同的内存合并,这样可以让物理机跑更多的虚拟机。 )
8.支持 NUMA (Non-Uniform Memory Access,非一致存储访问结构, 一种计算机体系结构技术,它由多个 SMP 服务器通过一定的节点互联网络进行连接,协同工作,完成相同的任务,从用户的角度来看是一个服务器系统。其基本特征是由多个 SMP 服务器 ( 每个 SMP 服务器称节点 ) 通过节点互联网络连接而成,每个节点只访问自己的本地资源 ( 内存、存储等 ) ,是一种完全无共享 (Share Nothing) 结构。)

五、 KVM 工具集合

KVM主要工具:

1.libvirt:操作和管理KVM虚机的虚拟化 API,使用 C 语言编写,可以由 Python,Ruby, Perl, PHP, Java 等语言调用。可以操作包括 KVM,VMware,XEN,Hyper-v, LXC 等 Hypervisor。
2.Virsh:基于 libvirt 的 命令行工具 (CLI)
3.Virt-Manager:基于 libvirt 的 GUI 工具
4.virt-v2v:虚机格式迁移工具
5.virt-* 工具:包括 Virt-install (创建KVM虚机的命令行工具), Virt-viewer - - (连接到虚机屏幕的工具),Virt-clone(虚机克隆工具),virt-top 等
6.sVirt:安全工具和selinux相关
### IP-KVM 的实现原理与技术细节 IP-KVM(Internet Protocol Keyboard-Video-Mouse)是一种通过网络远程管理服务器的技术,允许管理员通过互联网访问服务器的键盘、显示器和鼠标功能。以下是 IP-KVM 的实现原理和技术细节: #### 1. 基本架构 IP-KVM 系统通常由硬件模块和软件模块组成。硬件模块负责捕获服务器的键盘、视频和鼠标信号,并通过网络传输到远程客户端;软件模块则负责处理信号的编码、解码以及网络传输。 - **硬件部分**:包括 KVM 切换器和网络接口卡(NIC),用于连接多个服务器并提供网络接入点。 - **软件部分**:运行在 KVM 切换器上,支持多种协议(如 HTTP、HTTPS、RDP 等),以便远程用户可以通过浏览器或其他客户端访问目标服务器[^1]。 #### 2. 视频信号的捕获与传输 视频信号的捕获是 IP-KVM 的核心功能之一。为了实现这一功能,IP-KVM 使用以下技术: - **帧缓冲区(Frame Buffer)**:IP-KVM 通过读取服务器的帧缓冲区来获取屏幕显示内容。这种方法可以确保视频信号的高保真度,但可能增加系统负载。 - **视频压缩**:为了减少网络带宽消耗,IP-KVM 会对捕获的视频信号进行压缩。常见的压缩算法包括 JPEG、MPEG-4 和 H.264[^2]。 #### 3. 键盘与鼠标信号的传输 键盘和鼠标信号的传输相对简单,主要涉及以下步骤: - **输入捕获**:IP-KVM 捕获用户的键盘和鼠标操作,并将其转换为标准化的输入事件。 - **网络传输**:将输入事件通过网络发送到目标服务器。 - **事件注入**:目标服务器接收到输入事件后,将其注入到操作系统中,模拟本地用户的操作[^3]。 #### 4. 网络通信 IP-KVM 依赖于稳定的网络通信来实现远程管理功能。以下是其网络通信的关键点: - **协议支持**:IP-KVM 支持多种网络协议,包括 HTTP、HTTPS、SSH 和 RDP。这些协议提供了不同的安全性和性能特性。 - **加密与认证**:为了保护敏感数据,IP-KVM 通常使用 SSL/TLS 加密通信,并要求用户进行身份认证[^4]。 #### 5. 高可用性与容错机制 为了确保 IP-KVM 的高可用性,系统通常具备以下特性: - **冗余设计**:通过部署多台 KVM 切换器,实现故障转移和负载均衡。 - **日志记录**:记录所有操作日志,便于问题排查和审计。 - **自动恢复**:当网络中断或设备故障时,IP-KVM 能够自动尝试重新连接或切换到备用路径[^1]。 ```python # 示例代码:简单的 IP-KVM 客户端请求逻辑 import requests def fetch_kvm_stream(ip, port, username, password): url = f"https://{ip}:{port}/stream" auth = (username, password) response = requests.get(url, auth=auth, verify=False) if response.status_code == 200: return response.content else: return None ``` #### 6. 应用场景 IP-KVM 广泛应用于数据中心管理和远程服务器维护。例如,在服务器启动过程中出现问题时,管理员可以通过 IP-KVM 远程调试 BIOS 设置或操作系统引导选项。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值