KVM(Kernel-based Virtual Machine)是一种开源的硬件虚拟化解决方案,它是 Linux 内核的一部分,允许在支持虚拟化技术的硬件(如 Intel VT-x 或 AMD-V)上运行虚拟机。
KVM 将 Linux 内核转变为一个裸机虚拟机监控器(Hypervisor),使用户可以运行多个隔离的虚拟机,并且每个虚拟机都可以运行自己的操作系统(如 Linux、Windows 或其他)。
1. 虚拟机基本操作
1.1 查看虚拟机列表
virsh list --all
--all:显示所有虚拟机,包括运行中和停止的。
1.2 启动虚拟机
virsh start <虚拟机名称或ID>
1.3 关闭虚拟机
virsh shutdown <虚拟机名称或ID>
这是安全关闭,等效于按下虚拟机中的电源按钮。
1.4 强制关闭虚拟机
virsh destroy <虚拟机名称或ID>
注意:这是强制操作,可能导致数据丢失。
1.5 重启虚拟机
virsh reboot <虚拟机名称或ID>
等效:shutdown + start。
1.6 挂起和恢复虚拟机
挂起虚拟机:
virsh suspend <虚拟机名称>
恢复挂起的虚拟机:
virsh resume <虚拟机名称>
1.7 删除虚拟机
virsh undefine <虚拟机名称>
注意:此命令仅删除虚拟机配置,不删除磁盘文件。
2. 虚拟机资源管理
2.1 查看虚拟机信息
virsh dominfo <虚拟机名称>
输出信息包括 ID、状态、内存、CPU 等。
2.2 获取虚拟机的 XML 配置
virsh dumpxml <虚拟机名称>virsh dumpxml my-vm > my-vm.xml
2.3 编辑和导出虚拟机的 XML 配置
virsh edit <虚拟机名称>#将当前安装好的虚拟机配置文件导出
virsh dumpxml linux1 >linux1.xml
#生成新的UUID
uuidgen
#注:修改导出的xml文件,避免UUID和mac地址重复
使用系统默认编辑器打开虚拟机的 XML 文件进行编辑。
2.4 定义新虚拟机
virsh define <XML配置文件>
2.5 调整虚拟机内存
virsh setmem <虚拟机名称> <内存大小>[K|M|G]virsh setmem my-vm 2G
2.6 调整虚拟机 CPU
virsh setvcpus <虚拟机名称> <CPU数量> --config
--config:永久更改。
3. 存储管理
3.1 查看存储池
virsh pool-list --all
3.2 创建存储池
virsh pool-create <XML配置文件>virsh pool-create pool.xml
3.3 查看存储卷
virsh vol-list <存储池名称>virsh vol-list default
3.4 创建存储卷
virsh vol-create <存储池名称> <XML配置文件>virsh vol-create default volume.xml
4. 网络管理
4.1 列出网络
virsh net-list --all
4.2 创建网络
virsh net-create <XML配置文件>
4.3 删除网络
virsh net-destroy <网络名称>
virsh net-undefine <网络名称>
5. 快照管理
5.1 创建快照
virsh snapshot-create-as <虚拟机名称> <快照名称> --description "<描述>"
5.2 恢复快照
virsh snapshot-revert <虚拟机名称> <快照名称>
5.3 其它命令
#Linux1为虚拟机名称,laster为快照名称
virsh snapshot-create-as linux1 laster --disk-only
#创建后查看快照
virsh snapshot-list
#恢复到指定快照
virsh snapshot-revert linux1 laster
#删除快照
virsh snapshot-delete linux1 laster
#查看当前虚拟机快照的xml文件
virsh snapshot-current linux1
#查看当前快照详细信息
virsh snapshot-info linux1 laster3
#列出所有快照
virsh snapshot-list linux1
5.2 恢复快照
6. 镜像管理
6.1 创建磁盘镜像
qemu-img create -f qcow2 <镜像路径> <大小>qemu-img create -f qcow2 /var/lib/libvirt/images/my-vm.qcow2 20G
6.2 查看镜像信息
qemu-img info <镜像路径>
7. 虚拟机控制台
7.2 打开虚拟机console
#进入虚拟机运行
grubby --update-kernel=ALL --args="console=ttyS0"
7.1 连接到虚拟机控制台
virsh console <虚拟机名称>
退出控制台:按 Ctrl + ]。
8. 性能监控
8.1 查看实时性能
virsh domstats <虚拟机名称>
8.2 查看虚拟机的 VCPU 信息
virsh vcpuinfo <虚拟机名称>
8.3 查看虚拟机 I/O 信息
virsh blkstat <虚拟机名称>
查看帮助信息
virsh help
virsh help <命令>
9. 安装虚拟机
9.1 安装
virt-install --name linux5 \
--vcpus=1 \
--ram=1024 \
--disk path=/mnt/data/linux5.qcow2,size=20 \
--location=/mnt/data/iso/openEuler-24.03-LTS-x86_64-dvd.iso \
--network bridge=br0 \
--nographic \
-x "console=ttyS0" \
--osinfo detect=on,require=off #-x "console=ttyS0" 用于指定虚拟机启动时使用 ttyS0(串口 0)作为控制台。该虚拟机会通过串口输出信息,而不是图形界面。
#--location指定安装程序的来源位置
#--disk path 指定虚拟机的磁盘镜像文件及其大小
#--nographic指示虚拟机以无图形模式(命令行模式)启动
10. 压缩克隆虚拟机
10.1 压缩
#避免默认目录存储空间不足,这里修改默认缓存目录
mkdir /mnt/new/data/tmp
chmod 777/mnt/new/data/tmp/ #临时生效
export TEMP=/mnt/new/data/tmp
export TMPDIR=/mnt/new/data/tmp #写入配置文件,使其永久生效
echo 'export TEMP=/mnt/new/data/tmp' >> /etc/profile
echo 'export TMPDIR=/mnt/new/data/tmp' >> /etc/profile
source /etc/profile #压缩文件
#virt-sparsify --compress 源文件 压缩后的镜像名
virt-sparsify --compress rocky9.qcow2 rocky_ll.qcow2
10.2 克隆虚拟机
#-o 要克隆的虚拟机名 -n克隆后的虚拟机名 -f要存放的目录
virt-clone -o linux2 -n linux5 -f /mnt/data/linux5
这些命令适用于大多数 KVM 管理场景,配合 virt-manager 等图形化工具,可以更高效地管理 KVM 虚拟化环境。