查看运行的虚拟机
[root@103 kvm]# virsh list
Id 名称 状态
----------------------------------------------------
1 db running
5 test running
查看所有的虚拟机
[root@103 kvm]# virsh list --all
[root@103 kvm]# virsh list --all
Id 名称 状态
----------------------------------------------------
1 db running
5 test running
- centos 关闭
开启虚拟机
[root@103 kvm]# virsh start centos
域 centos 已开始
关闭虚拟机
[root@103 kvm]# virsh shutdown centos
域 centos 被关闭
重启虚拟机
[root@103 kvm]# virsh reboot centos
域 centos 正在被重新启动
摧毁虚拟机(摧毁是等于直接拔电源)
[root@103 kvm]# virsh destroy centos
域 centos 被删除
挂起虚拟机
[root@103 kvm]# virsh suspend centos
域 centos 被挂起
恢复虚拟机
[root@103 kvm]# virsh resume centos
域 centos 被重新恢复
删除虚拟机(危险操作)
[root@103 kvm]# virsh undefine centos
域 centos 已经被取消定义
# 开机状态下的虚拟机刚删除还能查到虚拟机状态,但是将虚拟机关机之后就查不到了
查看配置文件
[root@103 kvm]# virsh dumpxml centos > centos-kvm.xml
查看虚拟机端口
[root@103 kvm]# virsh list
Id 名称 状态
----------------------------------------------------
1 db running
5 test running
9 centos running
[root@103 kvm]# virsh vncdisplay db
:0
[root@103 kvm]# virsh vncdisplay test
:1
# :0 即 为 5900 端口,以此类推 :1为5901
设置虚拟机开机自启
[root@103 kvm]# virsh autostart test
域 test标记为自动开始
# 其实这条命令是设置了软连接
[root@103 kvm]# ll /etc/libvirt/qemu/autostart/test.xml
lrwxrwxrwx 1 root root 26 1月 16 11:32 /etc/libvirt/qemu/autostart/test.xml -> /etc/libvirt/qemu/test.xml
# 取消开机自启,软连接自动删除
virsh autostart --disable test
查看kvm虚拟机网络信息
查看虚拟机IP
[root@103 ~]# virsh domifaddr centos7
名称 MAC 地址 Protocol Address
-------------------------------------------------------------------------------
vnet0 52:54:00:c5:45:16 ipv4 192.168.122.78/24
[root@103 ~]# virsh net-list
名称 状态 自动开始 持久
----------------------------------------------------------
default 活动 是 是
[root@103 ~]# virsh net-dhcp-leases default
Expiry Time MAC 地址 Protocol IP address Hostname Client ID or DUID
-------------------------------------------------------------------------------------------------------------------
2024-01-16 15:04:07 52:54:00:c5:45:16 ipv4 192.168.122.78/24 - -
console链接虚拟机
常规情况下,安装完 KVM 之后,可能都会通过 VNC 连接到 KVM 虚拟机里面去设置相应的 IP 等信息。但是这样子,一方面可能会因为打开过多的端口造成安全问题,另一方面也不是会便捷。
针对此种情况,我们可以使用 KVM 为我们提供的 console 接口功能,它可以采用字符界面进行 linux虚拟机控制台连接。
这样子,即使 KVM 虚拟机没有 IP 地址,又或者 KVM 虚拟机出现了问题通过 IP 连接不进去了,都可以很便捷的快速进入到 KVM 虚拟机里面去排查问题。
通过为内核传递参数 console=ttyS0,来让内核把输出定向至 ttyS0
grubby --update-kernel=ALL --args="console=ttyS0,115200n8"
reboot重启虚拟机
宿主机上登陆
[root@103 ~]# virsh console db
连接到域 db
换码符为 ^]
CentOS Linux 7 (Core)
Kernel 3.10.0-1160.el7.x86_64 on an x86_64
db login: root
Password:
Last login: Tue Jan 16 01:50:22 on ttyS0
虚拟机添加磁盘
先创建一个空的磁盘文件
[root@103 kvm]# qemu-img create -f qcow2 /opt/kvm/disk.qcow2 5G
[root@103 kvm]# ls /opt/kvm
centos7.qcow2 disk.qcow2
查看虚拟磁盘文件
[root@103 kvm]# qemu-img info disk.qcow2
image: disk.qcow2
file format: qcow2
virtual size: 5.0G (5368709120 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
给虚拟机添加磁盘,支持热添加硬盘,无须关机
[root@103 kvm]# virsh attach-disk centos7 /opt/kvm/disk.qcow2 vdb --live --cache=none --subdriver=qcow2
成功附加磁盘
参数解释
virsh attach-disk 虚拟机名 磁盘文件位置 虚拟设备名 --live(激活) --cache=none(不要缓存) --subdriver=qcow2(使用qcow2这个类型驱动)
虚拟机上挂载磁盘
mkfs.xfs /dev/vdb
mount /dev/vdb /data/
xfs_growfs /new_vdb/ 更新xfs文件系统
也可以删除虚拟磁盘,例如要更换虚拟磁盘路径
[root@103 kvm]# virsh detach-disk centos7 vdb
成功分离磁盘