Debian12 部署kvm及使用
KVM 简介
KVM |Kernel-Based Virtual Machine
允许在同一台物理主机上运行多个虚拟机。这种技术使用硬件虚拟化技术(如Intel VT-x或AMD-V),提供接近原生性能的虚拟化体验。
环境
系统:Debian 12
内核版本:6.1.0-41-amd64
CPU: intel
安装前提条件
CPU 支持虚拟化技术
1 | grep -E --color '(vmx|svm)' /proc/cpuinfo |
- 有输出,说明系统上启用了虚拟化技术
- 无输出,需要重新启动系统,进入 bios 设置,然后为 Intel 处理器启用 VT-x(虚拟化技术扩展),为 AMD 处理器启用 AMD-V。
安装及配置
第一步:安装 KVM 及相关工具
libvirt是KVM和QEMU虚拟化的必备工具,可以用来创建和管理虚拟机;
首先安装 Qemu、KVM 管理程序和 Libvirt 所需的所有依赖包
1 | :~$ sudo apt install -y qemu-kvm \ |
各包说明:
| 包名 | 作用 |
|---|---|
qemu-kvm |
一个提供硬件仿真的开源仿真器和虚拟化包 |
libvirt-clients |
一组客户端的库和API,用于从命令行管理和控制虚拟机和管理程序 |
libvirt-daemon-system |
为运行 libvirt 进程提供必要配置文件的工具 |
bridge-utils |
一套用于创建和管理桥接设备的工具 |
virtinst |
一套为置备和修改虚拟机提供的命令行工具 |
virt-daemon |
用于运行 libvirt 守护进程的包 |
virt-manager |
一款通过 libvirt 守护进程,基于 QT 的图形界面的虚拟机管理工具 |
第二步:将用户加入必要组
为了安全,我们以普通用户加入 libvirtd 组,获取权限的方式管理虚拟机。
1 | # 确保 libvirt 组存在 |
$USER 为当前登陆用户,也可以将 $USER 替换为指定用户名
1 | sudo adduser 你的用户名 要加入的组名 |
第三步:验证 KVM 是否正常工作
验证内核模块
1 | # 检查 KVM 内核模块是否加载 |
验证服务状态
1 | # 立即启动并配置开机启动 |
第四步:使用图形化管理(本地或远程)
图形化下管理更加直观清晰。
本地使用图形化管理
1 | # 启动图形化管理 使用该命令的用户需有 `libvirtd` 组权限 |
远程使用图形化管理通过 SSH 连接并转发 GUI,需要本地安装 X11 服务器或使用 Wayland 兼容方案。
1 | :~$ ssh -X <你的用户名>@<服务器ip> |
第五步:配置虚拟网络
虚拟网桥是非常重要的,保证了虚拟机与虚拟机之间的通信和虚拟机和互联网的通信。
虚拟网桥的配置是以 .xml 结尾的文件,默认配置文件:/etc/libvirt/qemu/networks/default.xml
查看默认
1 | :~$ sudo cat /etc/libvirt/qemu/networks/default.xml |
配置说明:
| 配置项 | 作用 |
|---|---|
| 虚拟网络名称 | kvm 管理的虚拟网络名称,能用 virsh 命令管理 |
| 虚拟网络唯一标识符 | 虚拟网络唯一标识符,用于区分虚拟网络, 唯一,不能冲突 |
| 虚拟网络转发模式 | 虚拟网络转发模式,可以是 nat、route、bridge |
| 虚拟网桥名称 | 虚拟网桥名称,用于虚拟网络与物理网络进行通信,宿主机 ip address show 可以看到 |
| 虚拟网桥MAC地址 | 虚拟网桥MAC地址,唯一,不能冲突 |
| 虚拟网络IP地址 | 虚拟网络IP地址网段,唯一,不能冲突; address 配置项是 网关地址,通过该设备和外界通信 |
| DHCP范围 | DHCP范围,虚拟机启动时,会分配一个IP地址,用于虚拟机与物理网络进行通信 |
网桥管理命令
| 命令 | 作用 |
|---|---|
virsh net-list [--all] |
列出虚拟网络或列出所有虚拟网络 |
virsh net-start |
启动虚拟网络设备 |
virsh net-destroy |
停止虚拟网络设备 |
virsh net-define |
根据 xml 文件创建虚拟网络 |
virsh net-undefine |
删除一个虚拟网络设备 |
virsh net-edit |
修改虚拟网络设备的配置 |
virsh net-autostart |
设置开机自启动 |
启动虚拟机默认网络配置
1 | # 启动 default 网络 |
创建虚拟网桥
官方文档:·https://libvirt.org/formatnetwork.html
不指定 uuid 和 mac 地址,在创建虚拟网桥时,系统会自动生成
我们的网桥定义文件可以在任意位置创建,是用virsh net-define命令创建网桥后,默认会在为 /etc/libvirt/qemu/networks 生成一个同名的以 .xml 结尾的配置文件,
1 | # 创建虚拟网桥 |
定义虚拟网桥
1 | :~$ sudo virsh net-define --file kvmNat1.xml |
启动并自启动虚拟网络
1 | :~$ sudo virsh net-start kvmNet1 |
创建KVM虚拟机
默认虚拟机配置文件路径:/etc/libvirt/qemu/networks/
默认虚拟机磁盘文件路经:/var/lib/libvirt/images/
虚拟机的本质是操作一块磁盘。这块磁盘存储的是已安装好的操作系统。
压缩镜像文件
自动化快速创建虚拟机脚本
总结
虚拟网络配置默认目录:/etc/libvirt/qemu/networks/
默认虚拟机配置文件目录:/etc/libvirt/qemu/
默认虚拟机磁盘文件路经:/var/lib/libvirt/images/
