kvm 入门介绍

KVM 入门介绍

一、前言

虚拟化技术已经成为现代数据中心、云计算和服务器运维的基础。它通过将物理资源抽象化,使得多操作系统能够在同一台物理主机上并行运行,大大提升了硬件资源的利用率。KVM(Kernel-based Virtual Machine,基于内核的虚拟机)是当前主流的开源虚拟化解决方案之一,广泛应用于企业级环境和云服务提供商。本文将带你从零开始认识KVM,了解它的原理、安装配置、基本使用及最佳实践。

二、KVM是什么?

KVM,全称为Kernel-based Virtual Machine,是Linux内核中的一项虚拟化基础设施。自2.6.20版本起,KVM作为主线内核模块被集成进Linux。它将Linux转变为一个类型一(Type 1)和类型二(Type 2)兼具的混合虚拟机监控器(Hypervisor)。简单来说,KVM允许你在一台物理服务器(通常称为“宿主机”)上运行多个完全隔离的虚拟机(VM,客机)。

KVM本身只是一套内核模块,具体的虚拟机管理与硬件模拟功能由QEMU(Quick Emulator)等用户态工具协同完成。KVM利用CPU虚拟化扩展(Intel VT-x或AMD-V)来提升虚拟机的性能,使得VM可以近乎原生地执行指令。

KVM的主要特点有:

  • 开源免费,集成于Linux内核,兼容性好。
  • 支持完整虚拟化(Full Virtualization)。
  • 支持硬件加速(VT-x、AMD-V)。
  • 支持多种操作系统,包括Linux、Windows等。
  • 生态丰富,兼容QEMU、libvirt、Virt-Manager、oVirt等管理工具。

三、KVM的工作原理

3.1 虚拟化类型

虚拟化主要分为两类:

  • 全虚拟化(Full Virtualization):客机操作系统无需修改,虚拟机监控器模拟硬件环境,完全隔离。
  • 半虚拟化(Paravirtualization):需要修改客机内核,通过特定接口与宿主机通信,提高性能。

KVM属于全虚拟化方案,但可结合VirtIO等机制实现准虚拟化设备驱动,进一步提升性能。

3.2 KVM架构

KVM本质是一个内核模块(kvm.ko及架构相关模块如kvm-intel.ko或kvm-amd.ko)。加载该模块后,Linux内核变身为Hypervisor,每个虚拟机以普通进程的方式存在于用户空间,并通过QEMU完成硬件模拟和管理。

KVM架构图如下:

  +-------------------+
  |  用户空间         |
  |-------------------|
  |  QEMU/Libvirt等   |
  +-------------------+
  |  KVM模块          |
  +-------------------+
  |  Linux内核        |
  +-------------------+
  |  硬件(CPU、内存)|
  +-------------------+
  • QEMU负责创建和管理虚拟机进程,模拟BIOS、IDE、显卡等外围设备。
  • KVM模块为每个虚拟机分配一套虚拟CPU(vCPU),并借助CPU硬件虚拟化特性提升效率。
  • 虚拟机运行在用户空间进程里,和普通进程一样由Linux调度。

3.3 KVM与QEMU

  • QEMU原本是一套纯软件模拟器,效率较低。
  • KVM模块加载后,QEMU会通过/dev/kvm接口调用KVM加速。
  • 大部分指令和I/O请求由KVM直接下发至硬件,QEMU只负责模拟复杂设备(如显卡、USB等)。

四、KVM的应用场景

KVM广泛应用于以下领域:

  • 服务器虚拟化:将多台业务服务器整合到一台物理机上,提高资源利用率,降低硬件成本。
  • 云计算基础设施:OpenStack、oVirt等IaaS平台常以KVM作为底层虚拟化技术,为用户提供弹性计算资源。
  • 开发与测试环境:隔离不同的开发环境,方便多系统兼容性测试。
  • 桌面虚拟化:为终端用户分配隔离的桌面环境,提高安全性和管理效率。

五、KVM的安装与配置

5.1 环境准备

  • 支持VT-x(Intel)或AMD-V(AMD)的CPU。
  • 安装了Linux操作系统(如CentOS、Ubuntu等)。
检查CPU是否支持硬件虚拟化
egrep -c '(vmx|svm)' /proc/cpuinfo

输出大于0则表示支持。

检查虚拟化是否被BIOS开启
lscpu | grep Virtualization

显示VT-xAMD-V,则BIOS已开启虚拟化。

5.2 安装KVM相关软件包

在CentOS/RHEL:

sudo yum install -y qemu-kvm libvirt virt-install bridge-utils

在Ubuntu/Debian:

sudo apt-get update
sudo apt-get install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virtinst

5.3 启动和配置libvirtd服务

sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd

5.4 添加当前用户到libvirt组(非root操作)

sudo usermod -aG libvirt $(whoami)

执行后需重新登录或重启。

六、KVM的基本使用

6.1 使用命令行创建虚拟机

以CentOS为例,下载ISO镜像并创建虚拟机:

virt-install   --name centos7-vm   --ram 2048   --vcpus 2   --disk path=/var/lib/libvirt/images/centos7-vm.qcow2,size=20   --cdrom=/root/CentOS-7-x86_64-DVD.iso   --os-type linux   --os-variant centos7.0   --network network=default   --graphics vnc,listen=0.0.0.0   --noautoconsole

参数说明:

  • --name:虚拟机名称
  • --ram:分配内存(MB)
  • --vcpus:分配虚拟CPU数量
  • --disk:虚拟硬盘位置与大小
  • --cdrom:安装镜像路径
  • --network:网络模式(default为NAT)
  • --graphics:图形方式,可用VNC远程访问

6.2 虚拟机管理常用命令(virsh工具)

virsh list --all           # 列出所有虚拟机
virsh start vmname         # 启动虚拟机
virsh shutdown vmname      # 关闭虚拟机(正常关机)
virsh destroy vmname       # 强制关闭虚拟机(相当于断电)
virsh suspend vmname       # 挂起虚拟机
virsh resume vmname        # 恢复虚拟机
virsh undefine vmname      # 删除虚拟机配置(不删磁盘)
virsh console vmname       # 连接到虚拟机控制台

6.3 使用Virt-Manager图形界面

virt-manager是KVM/Libvirt的官方GUI管理工具,适合新手:

sudo apt-get install virt-manager  # Ubuntu
sudo yum install virt-manager      # CentOS
virt-manager &

通过图形界面可以轻松完成虚拟机的创建、配置和管理。

七、KVM常见网络模式

KVM支持多种虚拟机网络连接方式:

  1. NAT(默认):虚拟机通过NAT上网,外部无法主动访问虚拟机,适合桌面和开发测试。
  2. 桥接(Bridge):虚拟机直接作为局域网主机,拥有独立IP,外部可直接访问,适合生产环境。
  3. 仅主机(Host-Only):虚拟机只能与宿主机通信,适合隔离测试。

配置桥接网络示例(CentOS 7+):
编辑/etc/sysconfig/network-scripts/ifcfg-br0,将物理网卡桥接到br0,并重启网络服务。

八、KVM虚拟机磁盘格式

KVM支持多种虚拟磁盘格式:

  • raw:原生磁盘映像,性能最好,但不支持动态扩容。
  • qcow2:支持快照、压缩、动态分配空间,是KVM推荐的格式。

常用命令:

qemu-img create -f qcow2 /var/lib/libvirt/images/test.qcow2 10G
qemu-img info /var/lib/libvirt/images/test.qcow2

九、KVM的优势与不足

优势

  • 完全开源,免费、社区活跃。
  • 集成于Linux内核,性能优良。
  • 支持多种操作系统和硬件平台。
  • 支持动态资源分配、快照、热迁移等高级功能。
  • 与云原生生态兼容性好。

不足

  • 不支持Windows宿主机,仅限于Linux平台。
  • 图形化管理和自动化能力相较于VMware ESXi等商业产品略弱。
  • 配置相对繁琐,新手需要一定Linux基础。

十、最佳实践与建议

  1. 合理分配资源:避免超分配内存和CPU,确保宿主机有足够的剩余资源。
  2. 使用桥接网络:生产环境推荐桥接方式,方便虚拟机和外部通信。
  3. 定期快照备份:利用qcow2格式和libvirt快照功能,保护关键数据。
  4. 关注安全:及时更新KVM、QEMU等相关组件,避免安全漏洞。
  5. 结合云平台:结合OpenStack、oVirt等云管理平台,提高自动化和运维效率。

十一、END

KVM作为Linux平台上的主流虚拟化技术,以其高性能、开源免费和良好的生态兼容性,成为企业服务器虚拟化和云计算基础架构的首选方案。通过本文的介绍,相信你已经对KVM的原理、架构、安装、管理有了初步认识。如果你有兴趣深入学习KVM,建议动手实践虚拟机的创建和管理,并了解更多进阶功能,如虚拟机热迁移、快照、虚拟网络等。虚拟化世界广阔,KVM只是一个开始!


参考资料:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值