egrep -c '(vmx|svm)' /proc/cpuinfo
),2. 安装核心软件包:sudo apt install qemu-kvm libvirt-daemon-system virtinst bridge-utils
,3. 启动并启用libvirtd服务:sudo systemctl start libvirtd && sudo systemctl enable libvirtd
,最后使用virt-manager
图形工具创建虚拟机。在Linux系统上安装KVM虚拟机的完整指南
KVM(Kernel-based Virtual Machine)是Linux内核内置的全虚拟化解决方案,允许在物理主机上运行多个隔离的虚拟机,它性能高效、兼容性强,且完全开源,以下是详细的安装和配置步骤:
安装前的准备工作
-
检查CPU虚拟化支持
运行命令验证CPU是否支持硬件虚拟化(输出结果需包含vmx
(Intel)或svm
(AMD)):egrep -c '(vmx|svm)' /proc/cpuinfo # 返回值≥1表示支持
或使用:
lscpu | grep Virtualization
-
确认系统架构
KVM仅支持64位主机:uname -m # 需输出 x86_64
-
更新系统
确保系统为最新状态:sudo apt update && sudo apt upgrade -y # Ubuntu/Debian sudo dnf update -y # Fedora/CentOS/RHEL
安装KVM及相关组件
根据发行版选择命令:
-
Ubuntu/Debian:
sudo apt install -y qemu-kvm libvirt-daemon-system virtinst bridge-utils virt-manager
-
Fedora/CentOS/RHEL:
sudo dnf install -y qemu-kvm libvirt virt-install virt-viewer virt-manager
-
Arch Linux:
sudo pacman -S qemu virt-manager virt-viewer ebtables dnsmasq
启动服务并配置权限
-
启动Libvirt服务:
sudo systemctl enable --now libvirtd
-
将用户加入kvm和libvirt组:
sudo usermod -aG kvm,libvirt $(whoami) newgrp libvirt # 立即生效组权限
-
验证安装:
virsh list --all # 查看虚拟机列表(无报错即成功) kvm-ok # 检查KVM可用性(Ubuntu需安装cpu-checker)
创建虚拟机(两种方法)
方法1:使用图形界面(推荐新手)
- 打开虚拟系统管理器:
virt-manager
- 点击”创建新虚拟机”,按向导选择ISO镜像、分配CPU/内存、设置磁盘大小(默认20GB)。
方法2:命令行创建(高效批量部署)
sudo virt-install --name Ubuntu-Server --ram 2048 --vcpus 2 --disk path=/var/lib/libvirt/images/ubuntu.qcow2,size=20 --os-variant ubuntu22.04 --network bridge=virbr0 --graphics spice --console pty,target_type=serial --cdrom /path/to/ubuntu-22.04.iso
网络配置(关键步骤)
默认NAT网络:
虚拟机可通过主机上网,但外部无法直接访问虚拟机。
配置桥接网络(使虚拟机获得独立IP):
-
创建网桥
br0
:sudo nmcli con add ifname br0 type bridge con-name br0 sudo nmcli con add type bridge-slave ifname eth0 master br0 # eth0替换为实际网卡名 sudo nmcli con up br0
-
在
virt-manager
中编辑虚拟机设置:- 选择网络源: Bridge br0
- 设备模型: virtio
存储池管理
-
查看默认存储池:
virsh pool-list
-
添加新存储池(例如添加/data目录):
sudo virsh pool-define-as data dir - - - - "/data" sudo virsh pool-build data sudo virsh pool-start data sudo virsh pool-autostart data
虚拟机日常管理命令
功能 | 命令示例 |
---|---|
启动虚拟机 | virsh start vm-name |
关闭虚拟机 | virsh shutdown vm-name |
强制停止 | virsh destroy vm-name |
删除虚拟机 | virsh undefine vm-name |
查看配置 | virsh dumpxml vm-name |
控制台连接 | virsh console vm-name |
常见问题解决
-
错误: “权限被拒绝”
运行sudo setenforce 0
临时禁用SELinux,或调整策略规则。 -
虚拟机无法上网
检查防火墙规则:sudo firewall-cmd --add-service=dhcp --permanent # Fedora/CentOS sudo ufw allow out on virbr0 # Ubuntu
-
性能优化建议
- 启用CPU模式
host-passthrough
:在虚拟机XML中添加:<cpu mode='host-passthrough'/>
- 使用virtio磁盘驱动提升I/O性能。
- 启用CPU模式
KVM是Linux平台高效稳定的虚拟化方案,通过本指南您已完成从安装到创建虚拟机的全过程,结合virt-manager
图形工具和命令行管理,可灵活应对开发测试、生产部署等场景,定期备份虚拟机配置文件(位于/etc/libvirt/qemu/
)可防止意外丢失。
引用说明: 参考Linux内核官方文档(kernel.org)、Libvirt项目文档(libvirt.org)及QEMU社区最佳实践,配置命令已通过Ubuntu 22.04 LTS、CentOS 9和Fedora 38验证。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/47844.html