KVM入门?看这一篇就够了!——KVM基础——Ansible安全基线配置(一)

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

引言

大家好,欢迎来到我的 《Ansible 安全自动化:从服务器到K8S的堡垒之路》 系列教程,我是Prism!
在这个系列里,我们的目标是彻底告别繁琐的人工配置,用 Ansible 打造一套固若金汤、一键部署的服务器与K8S安全基线
本篇为KVM基础,我们将从什么是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信息
# 查看VMCPU、内存、状态等概要信息
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 <虚拟机名>
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。