KVM虚拟化教程
KVM (Kernel-based Virtual Machine) 是Linux内核的一个模块,可以将Linux转变为一个hypervisor。本教程将指导您从零开始搭建KVM虚拟化环境,并创建虚拟机。
1. 环境检查
在开始安装KVM之前,首先需要确认您的硬件是否支持虚拟化。
1 | # 检测CPU是否支持虚拟化,输出大于0则表示支持 |
2. 软件包安装
根据您的Linux发行版,选择对应的安装方式:
2.1 ARCH系(Arch Linux/Manjaro等)
1 | # 安装基本组件 |
组件说明:
- kvm: 负责CPU和内存的虚拟化
- qemu: 向Guest OS模拟硬件(例如,CPU,网卡,磁盘等)
- ovmf: 为虚拟机启用UEFI支持
- libvirt: 提供管理虚拟机和其它虚拟化功能的工具和API
- virt-manager: 图形界面管理KVM虚拟化
2.2 Debian系(Ubuntu/Debian等)
1 | # 更新软件包列表 |
组件说明:
- qemu-kvm: 即qemu+kvm,kvm负责cpu和内存的虚拟化,而qemu负责IO设备,如网卡和磁盘等的虚拟化
- libvirt-daemon-system: KVM管理工具,为不同的虚拟机监视器提供了统一的接口
- libvirt-clients: 包含了一组用于与libvirt库交互的命令行工具,包括:
- virsh: 用于虚拟机的创建,启动,停止,迁移,克隆,配置文件管理等操作
- virt-install: 用于GuestOS安装
- virt-clone: 用于虚拟机克隆
- bridge-utils: 配置网桥
- libguestfs-tools: 虚拟机镜像管理工具,包括virt-cat、virt-edit、virt-ls、virt-rescue
- virt-viewer: 用于虚拟机控制台
- virt-manager: 图形界面管理KVM虚拟化
- virtinst: 命令行工具,包括virt-install、virt-clone、virt-manager等
- python3-libvirt: libvirt库的Python绑定,用于在Python中使用libvirt的功能
3. 启动libvirt服务
安装完成后,需要启动并启用libvirt服务:
1 | # 启动libvirt服务 |
4. 检查KVM模块
确认KVM模块已正确加载:
1 | $ lsmod | grep kvm |
注意:AMD处理器用户会看到kvm_amd而不是kvm_intel
5. 用户权限配置(可选)
为了避免每次操作都需要使用sudo,可以将当前用户添加到kvm和libvirt组。
修改组后,需要重新登录或注销再登录才能使更改生效。
5.1 方法一:直接添加用户到组
1 | # 添加当前用户到kvm组 |
5.2 方法二:修改libvirt配置
1 | # 编辑libvirt配置文件 |
将UNIX域套接字组所有权设置为libvirt(第85行):
1 | unix_sock_group = "libvirt" |
设置R/W套接字的UNIX套接字权限(第102行):
1 | unix_sock_rw_perms = "0770" |
将用户帐户添加到libvirt组:
1 | sudo usermod -a -G libvirt $(whoami) |
重启libvirt守护进程:
1 | sudo systemctl restart libvirtd.service |
6. 启用嵌套虚拟化(可选)
嵌套虚拟化功能使您可以在虚拟机中运行虚拟机,这对于测试和开发环境非常有用。
6.1 Intel处理器
1 | # 卸载当前kvm_intel模块 |
要使此配置持久化,请运行:
1 | echo "options kvm-intel nested=1" | sudo tee /etc/modprobe.d/kvm-intel.conf |
确认嵌套虚拟化已启用:
1 | systool -m kvm_intel -v | grep nested |
6.2 AMD处理器
对于AMD处理器,将上述命令中的kvm_intel
替换为kvm_amd
即可。
7. 网络配置
7.1 创建网桥(br0),配置同一网段
为实现从本机外访问虚拟机,必须将虚拟机的网卡映射至网桥。virbr0网桥是KVM安装完成后自动创建的,仅做测试用途。
1 | # 显示网桥信息 |
通过在/etc/netplan
目录下创建文件01-netcfg.yaml
来新建网桥:
提示:
- 使用
ifconfig
确认当前网口设备、IP地址和MAC地址- 使用
ip route
获取默认via和metric值
1 | network: |
应用网络配置:
1 | sudo netplan apply |
8. 创建虚拟机
创建虚拟机有两种方式,您可以根据自己的喜好选择其中一种:
8.1 图形化创建虚拟机
- 运行
virt-manager
,启动图形化界面进行KVM虚拟机安装 - 点击「添加连接」(Add connection),选择「本地安装介质」(Local install media)
- 选择「选择ISO或CDROM安装介质」(Choose ISO or CDROM install media)
- 选择要安装的ISO镜像,点击「选择卷」(Choose volume)
- 点击「前进」(Forward)
- 设置CPU和内存,点击「前进」(Forward)
- 点击「为此虚拟机启用存储」(Enable storage for this virtual machine),并点击「为虚拟机创建磁盘镜像」(Create a disk image for the virtual machine),选择硬盘大小
- 点击「前进」(Forward)
- 选择网桥为br0,点击「完成」(Finish)
8.2 命令行创建虚拟机
以下命令创建一个配置为4核CPU、8GB内存、200GB磁盘的Windows 10虚拟机,磁盘为稀疏模式,格式为qcow2,总线类型为virtio:
1 | virt-install --virt-type=kvm --name=win10 --vcpus=4 --memory=8192 \ |
9. 常用操作命令
1 | # 列出所有虚拟机 |