1. 常用命令
plain
1. 查看所有虚拟机
$ virsh list --all
2. 停止虚拟机
$ virsh shutdown 虚拟机名称
3. 启动虚拟机
$ virsh start 虚拟机名称
4. 进入虚拟机命令行模式
$ virsh console 虚拟机名称 之后按回车进入登录
5. 查看虚拟机磁盘信息
$ virsh domblklist 虚拟机名称
6. 重命名域
$ virsh domrename 旧域名 新域名
7. 设置虚拟机开启自启
$ virsh autostart 192-168-0-89
2. 虚拟机创建
- 创建虚拟磁盘文件
plain
$ qemu-img create -f qcow2 /data/kvm/images/192-168-0-168-openEuler.qcow2 100G
- 安装虚拟机(X86 架构)
plain
$ virt-install --name 192-168-0-168-openEuler --ram 8192 --vcpus=2 --cdrom=/data/kvm/iso/openEuler-24.03-LTS-SP2-x86_64-dvd.iso --disk path=/data/kvm/images/192-168-0-168-openEuler.qcow2,size=100,bus=virtio,format=qcow2 --network bridge=br0,model=virtio --os-variant=centos7 --vnc --vncport=-1 --vnclisten=0.0.0.0 --noautoconsole
查看 --os-variant
$ osinfo-query os
- 安装虚拟机(ARM 架构)
plain
$ virt-install --name 192-168-1-10-openEuler --memory 8192 --vcpus 2 --cdrom=/data/kvm/iso/openEuler-24.03-LTS-SP2-aarch64-dvd.iso --disk path=/data/kvm/images/192-168-1-10-openEuler.qcow2,size=100,bus=virtio,format=qcow2 --network bridge=br0,model=virtio --arch=aarch64 --machine=virt --boot loader=/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw,loader_type=pflash,nvram=/data/kvm/nvram/192-168-1-10-openEuler_VARS.fd --vnc --vncport=-1 --vnclisten=0.0.0.0 --noautoconsole
- 启动虚拟机
plain
$ virst start 192-168-0-168-openEuler
- 查看 vnc 端口
plain
$ virsh vncdisplay 192-168-1-10-openEuler
:13
# vnc默认端口为5900+,比如5901、5902等,:13对应5913端口
- 用VNC软件进行配置
用 vnc 软件如 RealVNC Viewer 登录,输入 物理机IP:VNC端口 访问


- 用VNC软件登录后配置虚拟机IP
plain
$ vim /etc/sysconfig/network-scripts/ifcfg-ens3
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=eui64
NAME=ens3
DEVICE=ens3
ONBOOT=yes
IPADDR=192.168.0.168
PREFIX=23
GATEWAY=192.168.0.1
DNS1=223.5.5.5
IPV6_DISABLED=yes
- 重启网卡即可登录
plain
$ systemctl restart network
- 设置登录虚拟机选项
plain
$ grubby --update-kernel=ALL --args="console=ttyS0"
3. 虚拟机克隆
- 确保被克隆的虚拟机关闭
plain
$ virsh shutdown 192-168-0-168-openEuler
- 克隆虚拟机
plain
$ virt-clone -o 192-168-0-168-openEuler -n 192-168-0-168 -f /data/kvm/images/192-168-0-168.qcow2 --auto-clone
# ARM物理机
$ truncate -s 67108864 192-168-1-168_VARS.fd #用于缩小或扩展文件大小,一般情况下不用这个命令,如果克隆启动后报错fd文件大小不一致,可使用这个命令调整fd文件大小
4. 虚拟机删除
- 检查虚拟机是否做过快照,如果有快照,则先删除快照
plain
$ virsh snapshot-list --domain 虚拟机名
$ virsh snapshot-delete --domain 虚拟机名 --snapshotname 快照名
- 检查虚拟机使用的磁盘文件
plain
$ virsh dumpxml 虚拟机名
记录下使用过的磁盘文件,后边rm删除
- 关闭虚拟机
plain
$ virsh shutdown
关闭不了可以使用destroy强制关机
$ virsh destroy 虚拟机名
- 删除虚拟机
plain
$ virsh undefine 虚拟机名 --remove-all-storage #取消定义虚拟机,对于kvm来说是已经删除了
- 删除虚拟机(ARM)
plain
$ virsh undefine 192-168-1-10-openEuler --nvram --remove-all-storage
5. 配置调整
5.1. 调整内存/CPU
- 关闭虚拟机
plain
$ virsh shutdown 192-168-1-103
- 编辑虚拟机配置
plain
$ virsh edit 192-168-1-103
- 启动虚拟机
plain
$ virsh start 192-168-1-103
5.2. 添加磁盘
- 创建镜像文件
plain
$ qemu-img create -f qcow2 /data/kvm/images/192-168-1-101_data.qcow2 1024G
- 添加硬盘
plain
$ virsh attach-disk 192-168-1-101 --source /data/kvm/images/192-168-1-101_data.qcow2 --target vdb --subdriver qcow2 --persistent
$ virsh console 192-168-1-101
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 100G 0 disk
├─vda1 252:1 0 1G 0 part /boot
├─vda2 252:2 0 8G 0 part [SWAP]
└─vda3 252:3 0 91G 0 part
└─centos-root 253:0 0 91G 0 lvm /
vdb 252:16 0 1T 0 disk
$ mkdir /data
$ fdisk /dev/vdb
$ mkfs.ext4 /dev/vdb1
$ mount /dev/vdb1 /data/
$ vim /etc/fstab
/dev/vdb1 /data ext4 defaults 0 0
5.3. 删除磁盘
plain
$ virsh domblklist 192-168-1-101
$ virsh detach-disk 192-168-1-101 /data/kvm/images/192-168-1-101_data.qcow2
$ virsh edit 192-168-1-101 #删除192-168-1-101_data.qcow2
5.4. 调整磁盘大小
https://www.jianshu.com/p/5ca598424eb9
6. 快照管理
plain
# 查看快照
$ virsh snapshot-list 192-168-0-218
# 创建快照
$ virsh snapshot-create-as 192-168-0-219 192-168-0-219_snapshot
# 恢复快照
$ virsh snapshot-revert 192-168-0-219 192-168-0-219_snapshot
# 删除快照
virsh snapshot-delete 192-168-0-219 192-168-0-219_snapshot
7. 虚拟机迁移
- 关闭虚拟机
plain
$ virsh shutdown test-template
- 复制虚拟机镜像/配置文件到新机器
plain
$ scp test-template.qcow2 root@192.168.0.90:/data/kvm/images
$ scp test-template.xml root@192.168.0.90:/etc/libvirt/qemu
- 修改配置文件
在新机器上修改配置文件中部分信息,如路径
- 定义虚拟机
plain
$ virsh define /etc/libvirt/qemu/test-template.xml
- 启动虚拟机
plain
$ virsh start test-template
8. KVM 版本不一致迁移
- 复制 qcow2 文件到对应物理机路径
- 使用virt-install重新创建,且使用已有磁盘,不重新安装
plain
$ virt-install --name qidian-zz-192-168-0-196 --memory 8192 --vcpus 4 --disk path=/data/kvm/images/qidian-zz-192-168-0-196.qcow2,bus=virtio --disk path=/data/kvm/images/qidian-zz-192-168-0-196_data.qcow2,bus=virtio --network bridge=br0,model=virtio --vnc --vncport=-1 --vnclisten=0.0.0.0 --import
9. 虚拟机开机自启
- 开机自启
plain
$ virsh autostart 192-168-1-14
- 关闭开机自启
plain
$ virsh autostart --disable 192-168-1-14
- 查看开机自启的虚拟机
plain
$ virsh list --autostart --all