在Ubuntu系统中,KVM(Kernel-based Virtual Machine)是一种开源的虚拟化技术,它利用Linux内核的虚拟化功能来创建和管理虚拟机,通过命令行工具,用户可以高效地完成虚拟机的安装、配置和管理,以下是关于Ubuntu中使用KVM命令的详细说明,包括环境准备、虚拟机管理、网络配置、快照操作等核心内容。

环境准备与安装
在开始使用KVM之前,需要确保系统支持虚拟化并安装必要的软件包,首先检查CPU是否支持虚拟化扩展(Intel VT-x或AMD-V),执行命令egrep -c '(vmx|svm)' /proc/cpuinfo
,若返回值大于0则支持,然后安装KVM及相关工具:
sudo apt update sudo apt install -y qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
安装完成后,将当前用户添加到libvirt和kvm用户组以避免权限问题:
sudo usermod -aG libvirt,kvm $USER newgrp libvirt
最后启动libvirtd服务并设置开机自启:
sudo systemctl enable --now libvirtd
虚拟机管理命令
创建虚拟机
使用virt-install
命令可以快速创建虚拟机,以下是一个创建Ubuntu虚拟机的示例:

sudo virt-install \ --name ubuntu-vm \ --ram 2048 \ --vcpus 2 \ --disk path=/var/lib/libvirt/images/ubuntu-vm.qcow2,size=20 \ --cdrom /path/to/ubuntu-22.04.3-live-server-amd64.iso \ --network bridge=virbr0 \ --graphics spice
参数说明:
--name
:虚拟机名称--ram
:分配内存(MB)--vcpus
:虚拟CPU核心数--disk
:磁盘路径和大小(GB)--cdrom
:安装镜像路径--network
:网络模式(默认为NAT)--graphics
:显示协议(spice/vnc/none)
启动、关闭与重启虚拟机
# 启动虚拟机 sudo virsh start ubuntu-vm # 关闭虚拟机(优雅关机) sudo virsh shutdown ubuntu-vm # 强制关闭 sudo virsh destroy ubuntu-vm # 重启虚拟机 sudo virsh reboot ubuntu-vm # 查看虚拟机状态 sudo virsh list --all
虚拟机控制台连接
# 图形化控制台 sudo virt-viewer ubuntu-vm # 命令行控制台(需安装libguestfs-tools) sudo virsh console ubuntu-vm
磁盘与存储管理
创建磁盘镜像
# 创建qcow2格式磁盘(动态分配) qemu-img create -f qcow2 /var/lib/libvirt/images/disk-vm.qcow2 10G # 创建raw格式磁盘(固定大小) qemu-img create -f raw /var/lib/libvirt/images/disk-vm.raw 10G
扩展磁盘容量
# 扩展qcow2磁盘至20GB qemu-img resize /var/lib/libvirt/images/ubuntu-vm.qcow2 +10G # 在虚拟机内部扩展分区(以ext4为例) sudo growpart /dev/vda 1 sudo resize2fs /dev/vda1
网络配置
KVM默认使用NAT网络模式,也可配置桥接模式实现与主机同一网段通信,以下是桥接网络配置步骤:
-
安装bridge-utils:
sudo apt install bridge-utils
-
创建桥接接口:
(图片来源网络,侵删)sudo nm-connection-editor
在图形界面中添加新桥接,将物理网卡(如ens33)桥接到virbr0。
-
验证桥接状态:
brctl show
快照与克隆
创建快照
sudo virsh snapshot-create-as ubuntu-vm pre-install --description "Before software installation"
列出快照
sudo virsh snapshot-list ubuntu-vm
恢复快照
sudo virsh snapshot-revert ubuntu-vm pre-install
克隆虚拟机
sudo virt-clone --original ubuntu-vm --name ubuntu-vm-clone --file /var/lib/libvirt/images/ubuntu-vm-clone.qcow2
性能监控
查看虚拟机资源占用
# CPU使用率 sudo virsh cpu-stats ubuntu-vm # 内存使用情况 sudo virsh memstat ubuntu-vm # 磁盘I/O sudo iostat -x /dev/vda
使用top监控虚拟机进程
top -p $(pgrep -f qemu-system)
常见故障排除
- 虚拟机无法启动:检查磁盘路径是否正确,使用
sudo virsh edit ubuntu-vm
修改XML配置。 - 网络不通:确认NAT或桥接配置,检查防火墙规则(如ufw)。
- 性能问题:调整CPU亲和性或内存参数,启用KVM加速。
相关命令速查表
功能 | 命令示例 |
---|---|
列出虚拟机 | sudo virsh list --all |
编辑虚拟机配置 | sudo virsh edit ubuntu-vm |
删除虚拟机 | sudo virsh undefine ubuntu-vm |
挂载ISO镜像 | sudo virsh attach-disk ubuntu-vm /path/to.iso hda --type cdrom --mode readonly |
卸载磁盘 | sudo virsh detach-disk ubuntu-vm hda |
相关问答FAQs
Q1: 如何解决KVM虚拟机黑屏无法显示的问题?
A1: 首先检查虚拟机配置中的<graphics>
标签是否正确设置(如spice/vnc),尝试使用sudo virt-viewer ubuntu-vm
重新连接,若仍无法显示,可尝试关闭图形模式并使用命令行控制台:sudo virsh edit ubuntu-vm
,将<graphics type='spice'/>
改为<graphics type='none'/>
,然后通过sudo virsh console ubuntu-vm
访问。
Q2: 如何在KVM虚拟机与主机之间实现文件传输?
A2: 可通过以下方式实现:
- 共享文件夹:安装
qemu-guest-agent
后,在主机端使用sudo virsh attach-disk ubuntu-vm /path/to/host/dir vdb --type block --mode readonly
挂载目录。 - SCP/SSH:在虚拟机中安装SSH服务,通过
scp
命令传输文件。 - virtio-win驱动:对于Windows虚拟机,安装virtio-win驱动后,通过virtio磁盘实现高效文件共享。