KVM基础 ——Ansible安全基线配置(一)

简介: 本系列《Ansible安全自动化》首篇详解KVM原理:介绍KVM作为Linux内核模块如何协同QEMU实现高效虚拟化,并讲解Libvirt常用命令,为后续Ansible自动化打下基础。

引言

大家好,欢迎来到我的 《Ansible 安全自动化:从服务器到K8S的堡垒之路》 系列教程,我是Prism!
在这个系列里,我们的目标是彻底告别繁琐的人工配置,用 Ansible 打造一套固若金汤、一键部署的服务器与K8S安全基线
作为本系列的开篇之作,我们将从什么是KVM以及KVM的原理开始开始
通过本篇文章的学习,您将了解:
1、KVM是什么
2、KVM的工作原理
3、操作过程中涉及的常见命令

链接:知识点扩展包(建议和知识点扩展包结合起来看本篇文章,可以加深理解)

预告: 下一期将介绍创建KVM虚拟机的几种方式,使用Ansible创建为重点内容

注意:如大家有更好的建议,欢迎提出,如果喜欢煮波的内容,点点关注不迷路,谢谢大家!!!

准备好了吗?发车咯!!!

一、KVM是什么

1、定义

A、KVM 的全称是 Kernel-based Virtual Machine(基于内核的虚拟机)

B、KVM 本身不是一个完整的虚拟机软件,而是 Linux 内核的一个核心模块(驱动),它负责把 Linux 操作系统变成一个“裸机”虚拟机监控程序(Type-1 Hypervisor)

2、KVM属于寄居架构,但因为深深嵌入Linux内核,因此运行效率很高

3、层次

在物理硬件之上,宿主机Linux内核通过KVM模块(利用CPU硬件虚拟化扩展)来高速执行Guest OS的指令,并协同QEMU(模拟主板、硬盘、网卡等I/O设备),共同为Guest OS构建出一个完整且高效的虚拟运行环境

A、物理硬件

CPU、RAM、NIC

B、宿主机操作内核(Linux Kernel)

负责调度KVM模块和QEMU进程,以及管理物理资源

C、KVM内核模块

扮演 “加速器”。负责 CPU 和内存的执行(最耗性能的部分),利用硬件虚拟化扩展(VT-x/AMD-V)让 Guest OS 直接在物理 CPU 上全速运行

1、“超能力”核心

KVM 模块的核心任务是启用和管理 CPU 的硬件虚拟化扩展

2、“只干大事”

KVM 只负责最核心、最困难的 CPU 和内存虚拟化。它会创建特殊的 /dev/kvm 设备,允许用户态程序(比如QEMU)来调用这个能力

3、“不干杂活”

KVM 自己不模拟任何硬件,比如网卡、硬盘、显卡、USB等

D、硬件模拟器(QEMU)(QEMU用户态程序)

扮演 “车壳子和方向盘”。负责模拟主板、硬盘、网卡、显卡等所有I/O“杂活”,并负责启动和管理虚拟机的整个“进程

E、客户操作系统(Guesy OS)

运行应用程序和服务的环境,让应用程序和服务认为自己在独立运行

二、KVM的工作流程

QEMU 启动一个虚拟机进程,当需要执行 CPU 指令时,QEMU 会通过 KVM 模块,让 Guest OS 的指令直接上物理CPU;当 Guest OS 要访问硬件(比如写网卡)时,KVM 会“暂停”Guest OS,把这个请求“踢”回给 QEMU 去模拟处理

三、KVM的管理(运维视角)

1、Libvirt

管理接口/API

1、作用

统一的管理层。它能控制KVM,Xen等多种Hypervisor.所有脚本和GUI操作都是通过Libvirt API转发给KVM/QEMU

2、常用命令

A、虚拟机生命周期管理
1、列出虚拟机
virsh list # 查看当前正在运行的虚拟机
virsh list --all # 查看所有虚拟机(包括关机的)
2、启动
# 启动一个已定义的虚拟机
virsh start <虚拟机名>
3、关机
# 正常关机
virsh shutdown <虚拟机名>
# 强制关机(直接拔电源)
virsh destroy <虚拟机名>
4、重启
virsh reboot <虚拟机名>
5、暂停
# 挂起虚拟机,状态保存到内存中
virsh suspend <虚拟机名>
6、恢复
# 恢复一个被挂起的虚拟机
virsh resume <虚拟机名>
7、定义(注册)
# 从一个XML文件定义一个虚拟机,但不启动
virsh define <xml配置文件>
8、取消定义(删除)
# 删除虚拟机的配置(“开除学籍”)
virsh undefine <虚拟机名>
# 删除配置并同时删除磁盘文件("彻底消失")
virsh undefine <虚拟机名> --remove-all-storage
B、虚拟机信息查看与监控
1、查看VM信息
# 查看VM的CPU、内存、状态等概要信息
virsh dominfo <虚拟机名>
2、查看VM状态
# 快速查看VM的运行状态
virsh domstate <虚拟机名>
3、查看VNC端口
virsh vncdisplay <虚拟机名>
4、查看IP地址
# 快速查看虚拟机的IP地址(需要Guest Agent支持)
virsh domifaddr <虚拟机名>
5、查看虚拟网卡
# 查看VM的网卡连接到了哪个宿主机网络
virsh domiflist <虚拟机名>
C、虚拟机配置修改(在线热插拔)

不用关机就能修改配置

1、编辑配置
# 在默认编辑器中打开XML配置并持久化修改(注意:通常需要重启VM生效)
virsh edit <虚拟机名>
2、挂载磁盘
# 热插拔一块虚拟磁盘(比如vdb,vdc)
virsh attach-disk <虚拟机名> <源路径> <目标路径>
3、热卸载磁盘
virsh detach-disk <虚拟机名> <目标设备>
4、热卸载网卡
virsh attach-interface <虚拟机名> ...
5、动态调整内存(需要VM支持)
virsh setmem <虚拟机名> <大小>
6、调整CPU
# 动态调整CPU个数(需要VM支持)
D、虚拟机快照管理
1、创建快照
# 为虚拟机创建一个快照(存档)
virsh snapshot-create-as <虚拟机名> <快照名>
2、列出快照
# 查看该虚拟机有哪些快照
virsh snapshot-list <虚拟机名>
3、恢复快照
# 将虚拟机恢复到指定快照状态(读档)
virsh snapshot-revert <虚拟机名> <快照名>
4、删除快照
virsh snapshot-delete <虚拟机名> <快照名>
E、宿主机资源管理(网络与存储)
1、列出网络
# 列出所有的虚拟网络
virsh net-list --all
2、列出存储池
# 列出所有的存储池
virsh pool-list --all
3、列出存储卷
# 列出某个存储池中的所有存储卷(虚拟磁盘)
virsh vol-list <存储池名>
4、创建存储卷
# 创建一个新的qcow2虚拟磁盘
virsh vol-create-as <池> <卷名> <容量>
5、删除存储卷
# 删除一个虚拟磁盘文件
virsh vol-delete <卷名> --pool <池>
F、其他高频命令
1、连接控制台
virsh console <虚拟机名>
2、设置自启动
# 设置开机自启动
virsh autostart <虚拟机名>
3、取消自启动
virsh autostart --disable <虚拟机名>
目录
相关文章
|
1月前
|
存储 调度 KVM
深入浅出KVM虚拟化技术原理——Ansible安全基线配置(一)
本文深入解析KVM虚拟化核心机制,涵盖内核如何调度QEMU进程与KVM模块协同工作、CPU虚拟化扩展(VT-x/AMD-V)的硬件加速原理,以及存储池的管理与优势,助你全面掌握KVM底层运行逻辑。
251 11
|
1月前
|
JSON 网络安全 数据格式
深入浅出Ansible技术原理——Ansible安全基线配置(一)
本系列深入解析Ansible安全自动化,涵盖其无代理、幂等性、声明式三大设计哲学,剖析基于Python的内核原理与SSH通信机制,并详解Inventory、Roles、Handlers、Vault等核心组件与最佳实践,助你从入门到精通,构建高效、安全、可复用的自动化运维体系。
149 7
|
1月前
|
SQL 数据采集 人工智能
评估工程正成为下一轮 Agent 演进的重点
面向 RL 和在数据层(SQL 或 SPL 环境)中直接调用大模型的自动化评估实践。
969 220
|
26天前
|
运维 监控 数据可视化
故障发现提速 80%,运维成本降 40%:魔方文娱的可观测升级之路
魔方文娱携手阿里云构建全栈可观测体系,实现故障发现效率提升 80%、运维成本下降 40%,并融合 AI 驱动异常检测,迈向智能运维新阶段。
249 40
|
1月前
|
监控 安全 Linux
Linux如何部署服务并设置为开机自启
系统ctl命令用于管理Linux服务,包括启动、停止、重启和重载配置等操作。journalctl命令可查看特定服务日志。编写服务文件时需定义[Unit]、[Service]和[Install]部分,通过systemctl管理新服务并设置开机自启。
215 14
|
12天前
|
弹性计算 搜索推荐 应用服务中间件
今非昔比:看完阿里云服务器租赁价格,沉默了~
阿里云服务器优惠汇总:轻量应用服务器200M带宽38元起/年,ECS云服务器2核2G仅99元/年,4核16G 89元/月,8核32G 160元/月,香港轻量服务器25元/月起,爆款低至1折,新老用户同享,续费同价,限时抢购!
145 14
|
28天前
|
存储 Kubernetes 数据库
K3S ——轻量化K8S 入门指南
本文介绍轻量级Kubernetes发行版K3s,适用于边缘计算、IoT等场景。涵盖其架构、安装部署(单节点/高可用/离线)、核心组件、网络存储配置及生产建议,助力快速构建轻量化容器平台。
309 4
|
25天前
|
人工智能 自然语言处理 安全
Serverless AI 原生架构破局「三高」困境
在 AI 大模型浪潮席卷全球的今天,企业纷纷加速拥抱 AI,推动智能客服、内容生成、流程自动化等场景快速落地。然而,许多企业在实践中却遭遇了“三高困境”——成本高、复杂度高、风险高。Serverless AI 原生架构不仅是技术演进,更是企业智能化转型的关键基础设施。它让开发者聚焦业务逻辑,让企业告别“基建焦虑”,让 AI 真正“飞入寻常百姓家”。
|
1月前
|
存储 算法 关系型数据库
【Java架构师体系课 | MySQL篇】② 深入理解MySQL索引底层数据结构与算法
InnoDB索引为何采用B+树?本文由浅入深解析二叉树、红黑树、B树的缺陷,详解B+树的结构优势:非叶子节点不存数据、叶子节点有序且双向链接,支持高效范围查询与磁盘预读,三层即可存储两千多万数据,极大提升查询性能。
136 7
|
1月前
|
安全 网络安全 KVM
Ansible多机部署KVM虚拟机——Ansible安全基线配置(二)
本教程介绍如何使用Ansible在多台宿主机上批量部署KVM虚拟机,结合Tailscale与NFS实现安全镜像共享和网络互联。涵盖用户配置、KVM环境初始化、动态创建/删除VM及自动化网络设置,助力构建高效、安全的虚拟化基础设施。(239字)
135 4