kvm 基础

news/2025/2/8 8:59:38/文章来源:https://www.cnblogs.com/wangguishe/p/18681439

kvm 概述

KVM(Kernel-based Virtual Machine)是一个开源虚拟化技术,它将 Linux 内核转变为一个裸金属 hypervisor。

基本概念

1. 集成于 Linux:KVM 是 Linux 内核的一部分,支持在现有的 Linux 系统上创建和管理虚拟机。
2. 虚拟化类型:KVM 支持完全虚拟化,允许运行不同操作系统的虚拟机。

主要组成部分

1. QEMU:KVM 通常与 QEMU 一起使用,提供虚拟硬件和设备模拟。
2. libvirt:用于管理虚拟机的 API,促进与虚拟机的交互。

重要功能

1. 性能高效:KVM 利用硬件虚拟化技术(如 Intel VT-x 和 AMD-V)来提高性能。
2. 灵活性:可以支持多种操作系统,包括 Linux、Windows、BSD 等。
3. 可扩展性:适合从小型部署到大型数据中心的各种场景。

优势

1. 开源:完全开源,免费使用和分发。
2. 成熟生态:广泛的社区支持和丰富的文档资源。
3. 与多种工具兼容:支持与 OpenStack、Ansible 等工具集成,便于自动化管理。

使用场景

1. 云计算:KVM 是许多云服务提供商的底层虚拟化技术。
2. 开发和测试:为开发人员提供了快速重置和测试环境的能力。
3. 容器化:可以与容器技术(如 Docker)结合使用。

kvm 体系结构

内核层

KVM 模块:KVM 是 Linux 内核的一部分,提供对虚拟化硬件的支持。它将每个虚拟机视为一个普通的进程,并利用 CPU 的硬件虚拟化功能(如 Intel VT-x 和 AMD-V)。

用户空间

QEMU:作为用户空间的虚拟机监控程序,QEMU 负责提供虚拟硬件、设备模拟和管理虚拟机的生命周期。在 KVM 中,QEMU 可与 KVM 内核模块配合工作,实现高效的虚拟化。

管理层

libvirt:提供用户友好的 API 和工具,用于创建、管理和监控虚拟机。它支持多种后端,包括 KVM、Xen、VMware 等。

虚拟机层

虚拟机 (VM):使用 KVM 和 QEMU 创建的虚拟机,可以运行多种操作系统,并与物理主机共享资源。

管理工具

Virt-Manager:一个图形化管理工具,依赖于 libvirt,便于用户管理虚拟机。
命令行工具:如 virsh,用于在 CLI 中管理虚拟机。

存储和网络

虚拟存储:虚拟机的磁盘镜像文件(例如 QCOW2、RAW 等)通常存放在文件系统中或使用 LVM。
网络配置:支持桥接、NAT 和路由等多种网络连接模式,允许虚拟机与外部网络通信。

kvm 模块加载后运行模式

内核模式

定义:KVM 模块作为 Linux 内核的一个组成部分运行,拥有对硬件资源的完全访问权限。功能:处理虚拟机的管理和调度。直接与 CPU 的虚拟化扩展(如 Intel VT-x、AMD-V)交互。处理中断和异常,确保虚拟机的稳定性和性能。

用户模式

定义:虚拟化管理和监控的实现部分,通常由 QEMU 提供,运行在用户空间。功能:提供虚拟机的创建、启动、停止和监控等管理功能。处理虚拟硬件的模拟,如网络接口、磁盘驱动器等。管理 I/O 操作,确保虚拟机能够与外部设备进行通信。

来宾模式

定义:虚拟机运行的环境模式,虚拟机中的操作系统运行在来宾模式下。功能:来宾操作系统可以像普通的物理机一样运行,但实际上是在 KVM 管理的虚拟化环境中。所有硬件访问请求通过 KVM 和 QEMU 的虚拟设备模拟器进行处理。来宾系统可以是各种操作系统,如 Linux、Windows 等。

kvm 宿主机环境配置

验证 cpu 开启虚拟化

# Intel CPU 对应vmx# AMD CPU 对应 svm
grep -Em 1 "vmx|svm" /proc/cpuinfo
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid tsc_known_freq pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch cpuid_fault pti ssbd ibrs ibpb stibp tpr_shadow ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 xsaves arat vnmi md_clear flush_l1d arch_capabilities

kvm 工具包说明

qemu-kvm: QEMU是一个主机与虚拟机之间通信的虚拟化软件。它模拟机器的物理硬件。结合KVM,QEMU可以高效地为Linux上的KVM提供底层仿真支持。libvirt-daemon: 这是Libvirt的主要守护进程,用于管理虚拟机和其他虚拟化技术。Libvirt本身是一个API框架,它提供了一个抽象的API接口,用于与各种底层虚拟化技术交互。这意味着开发者或用户可以使用Libvirt编写的应用程序管理不同的虚拟化平台,如KVM、VMware等。libvirt-client: 这是用于与Libvirt守护进程交互的客户端软件。通过它,用户可以远程或本地管理虚拟机。libvirt-daemon-driver-qemu: 这是Libvirt连接QEMU的驱动。当使用KVM时,这个驱动是非常关键的,因为它允许Libvirt与QEMU通信并管理虚拟机。libvirt: 这是为多种虚拟化技术提供的软件套件。它是虚拟化管理工具的主要库和命令行界面API工具集合,让您可以访问和管理不同的虚拟化解决方案,不仅仅是KVM。这也意味着用户可以使用libvirt工具与Hyper-V或其他虚拟化技术进行交互。但它最常用于管理KVM和其他开源虚拟化技术。virt-manager: 这是一款图形界面的虚拟机管理工具,通常与KVM和Libvirt一起使用。通过图形界面,用户可以轻松地创建、管理和监控虚拟机。virt-install: 这是用于安装虚拟机的命令行工具。它允许您创建虚拟机并将其连接到所需的所有网络和存储资源等。这对于脚本化或批量安装虚拟机的任务非常有用。virsh: 基于libvirt API创建的命令行工具集。它们是主要的工具用于在命令行上管理虚拟机和其他虚拟化任务。它们提供了许多命令来创建、启动、停止和管理虚拟机等任务。virt-viewer: 这个工具允许用户通过VNC或SPICE协议查看虚拟机的图形控制台。这对于远程访问和管理虚拟机非常有用。您提到的“virtviewer”可能是该工具的另一个名称或版本。cockpit: 这是一个在CentOS 8和其他基于Web的管理工具上提供的高级Web界面的管理工具。它为用户提供了一个Web门户界面来监控和管理运行在服务器上的虚拟化系统和服务。它的主要功能之一是提供一个基于Web的图形界面来管理KVM和其他虚拟化技术上的虚拟机。

AMD CPU 故障

报错提示

kvm_buf_set_msrs:Assertion ret == cpu->kvm_msr_buf->nmsrs' failed.

故障修复方法

tee /etc/modprobe.d/qemu-system-x86.conf << EOF
options kvm ignore_msrs=1
EOF

参考文档

https://linux-kvm.org/page/Main_Page

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/880693.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ftrans数据跨境传输方案,推动数据跨境安全有序自由流动!

在全球数字经济快速发展的今天,数据跨境传输流动已成为企业国际化不可回避的重要议题。根据权威机构数据,全球跨境数据流量每年增长超过30%,企业数据出境已从简单的信息传输,演变为复杂的合规性管理。 目前,我国数据跨境传输安全管理体系已经初步构建形成。《网络安全法》…

如何打造高效、统一的供应商协同平台?

供应商协同,简单说就是把供需双方的各种“需求”找到对应的“供应”来匹配。这种“需求”和“供应”更多的不是实物,而是资讯、方法和活动。各企业需要一个供应商协同平台实现协同管理,供应链节点各企业形成共同的彼此认同的价值取向和文化理念,建立全面的战略合作伙伴关系…

RestClient 通过拦截器实现请求加密

今天我发现了一个关于请求加密的有效写法,特此分享给大家。如果你的加密需求是将请求参数也包含在内,通常情况下,我们需要先将请求体转换成 JSON 格式或其他对象类型,再使用字符串的形式进行加密操作。以下是伪代码示例,展示了这一过程的实现方法: String payloadString …

读算法简史:从美索不达米亚到人工智能时代10纠错和加密

通信系统需纠错,汉明码优化校验和;互联网设计缺安全,公钥加密RSA成基石,保障数据传输安全,现广泛用于万维网SSL。1. 纠错 1.1. 像互联网这样的通信系统,被设计成将信息的精确副本从发送方传输到接收方 1.2. 通常,接收到的信号会受到电子噪声的污染1.2.1. 噪声是任何会破…

2025 年java最新 ide 系列激活

2025 ide 激活N6IQ9MTOK0-eyJsaWNlbnNlSWQiOiJONklROU1UT0swIiwibGljZW5zZWVOYW1lIjoi5rC45LmF5Zyw5Z2AIHd3d8K3YWppaHVvwrdjb20iLCJsaWNlbnNlZVR5cGUiOiJQRVJTT05BTCIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiIiLCJjaGVja0NvbmN1cnJl…

INFINI Labs 产品更新 - Easysearch 增强 Rollup 能力,Console 完善 TopN 指标等

INFINI Labs 产品更新发布!此次更新,Easysearch 增强 Rollup 能力,支持更多的聚合方式;Console 完善了 TopN 的指标,支持自定义视图,并内嵌视图模板;Gateway 进行了多处优化以及修复相关 Bug 等等。欢迎下载体验,探索更多可能! INFINI Easysearch v1.10.1 INFINI Easy…

Proj CJI Paper Reading: Detecting language model attacks with perplexity

AbstractTool: PPL Findings:queries with adversarial suffixes have a higher perplexity, 可以利用这一点检测 仅仅使用perplexity filter对mix of prompt types不合适,会带来很高的假阳率Method: 使用Light-GDB根据perplexity和token length filter带有adversarial suffix…

年化收益17倍的红中探底(单针探底)操作策略

作者QQ: 396068801,加Q分享交流通达信红中探底指标。 红中探底条件: # 更新日志:# 2025-2-7 改为红中创10天新低,25日均线向上,尾盘进。# 止盈操作:涨停不卖, 每涨8%就卖一半,直到浮盈达到3倍清仓;高点跌8%清仓。# 止损: 买入后只要跌超6%就清仓止损。# 卖票时间: …

Java基础学习(十五)

Java基础学习(十五):IO流 目录Java基础学习(十五):IO流概念基本流字节输出流 FileOutputStream字节输入流 FileInputStream字符集Java 中的编码和解码字符输入流 FileReader字符输出流 FileWriter缓冲流字节缓冲流字符缓冲流转换流序列化流 和 反序列化流序列化流反序列化…

linux vm tools 问题

转载vmware tools 失效问题解决方式(Ubuntu 22 以及其他系统) - 知乎 今天新装了Kubuntu 以及 Ubuntu 版本均为 22x,一如既往的操作,最后发现VMware tools失效。 尝试输入vmware-user发现又可以了。 具体表现: 1、窗口分辨率可以缩放,无法复制粘贴,无法复制粘贴文件。 2…

【shell脚本】轻松搞定打包与Shell部署

本篇和大家分享的是springboot打包并结合shell脚本命令部署,重点在分享一个shell程序启动工具,希望能便利工作; 1. profiles指定不同环境的配置 通常一套程序分为了很多个部署环境:开发,测试,uat,线上 等,我们要想对这些环境区分配置文件,可以通过两种方式: 1、通过a…