virsh管理虚拟机
virsh管理虚拟机
一、管理虚拟机
1、libvirt架构概述
libvirt是用来管理虚拟机或虚拟化功能的软件集合,主要包括:libvirt API,
libvirtd进程和virsh工具集三部分。最初的目的是为不同的hypervisor提供统一的管理接口。
libvirtd该后台进程主要实现以下功能:
(1)远程代理
所有remote client发送来的命令,由该进程监测执行。
(2)本地环境初始化
libvirt服务的启停,用户connection的响应等。
(3)根据环境注册各种Driver(qemu, xen, storage…)的实现不同虚拟化技术以Driver的形式实现,由于libvirt对外提供的是统一的接口,所以各个Driver就是实现这些接口,即将Driver注册到libvirt中。
查看libvirtd服务状态:
[[email protected] ~]# systemctl status libvirtd
如果libvirtd服务停止运行,那么你将不能管理虚拟机,也就是不能使用virt-manager等工具来管理虚拟机。
虚拟机的所有配置是放置在一个xml文件中,位置在/etc/libvirt/qemu/目录中:
[[email protected] ~]# ll /etc/libvirt/qemu
可以看到创建的2个虚拟机,libvirt的xml文件分为几个重要部分,整体结构如下:
01
02 虚拟机整体信息
03 系统信息
04 硬件资源特性
05 突发事件处理
06 虚拟硬盘(单个或者多个)
07 虚拟光盘(可选)
08 虚拟网络(单个或者多个)
09 vnc/spice配置
10
虚拟机的配置文件信息:
具体格式可以参看http://libvirt.org/formatdomain.html
2、使用virsh来管理虚拟机
virsh是使用libvirt management API构建的管理工具。
virsh的名称的含义是virtualization shell。它有两种工作模式:
立即模式、交互模式
立即模式:
[[email protected] ~]# virsh list --all
交互模式:
[[email protected] ~]# virsh
virsh # list --all
virsh # quit
查看virsh命令帮助信息:
[[email protected] ~]# virsh --help
主要部分管理命令:
virsh常用命令总结:
二、KVM基本功能管理
1、查看命令帮助(–help)
[[email protected] ~]# virsh --help
2、查看kvm的配置文件存放目录(/etc/libvirt/qemu/)
[[email protected] ~]# ll /etc/libvirt/qemu
3、查看虚拟机状态(list --all)
[[email protected] ~]# virsh list --all
4、虚拟机的开机与关机(start/shutdown)
①开启虚拟机:
[[email protected] ~]# virsh start test-os1
[[email protected] ~]# virsh start test-os2
②关闭虚拟机(优雅关机):
[[email protected] ~]# virsh shutdown test-os1
[[email protected] ~]# virsh shutdown test-os2
5、强制虚拟机系统关闭电源(destroy:摧毁,可以当作直接断电)
[[email protected] ~]# virsh destroy test-os1
6、通过虚拟机的xml配置文件启动虚拟机系统(create)
[[email protected] ~]# virsh create /etc/libvirt/qemu/test-os1.xml
[[email protected] ~]# virsh create /etc/libvirt/qemu/test-os2.xml
7、挂起虚拟机(suspend)
[[email protected] ~]# virsh suspend test-os1
8、恢复虚拟机(resume)
[[email protected] ~]# virsh resume test-os1
9、配置虚拟机伴随宿主机自动启动与关闭自动启动(autostart/autostart --disable)
①伴随宿主机自动启动
[[email protected] ~]# virsh autostart test-os1
[[email protected] ~]# virsh autostart test-os2
②关闭自动启动
[[email protected] ~]# virsh autostart --disable test-os1
[[email protected] ~]# virsh autostart --disable test-os2
10、导出虚拟机配置(dumpxml)
[[email protected] ~]# virsh dumpxml test-os1 > /etc/libvirt/qemu/test-os1_backup.xml
11、虚拟机的删除与添加(undefine/define)
①删除虚拟机
[[email protected] ~]# virsh shutdown test-os1
[[email protected] ~]# virsh undefine test-os1
②通过备份的配置文件重新定义虚拟机:
[[email protected] ~]# mv /etc/libvirt/qemu/test-os1_backup.xml /etc/libvirt/qemu/test-os1.xml
[[email protected] ~]# virsh define /etc/libvirt/qemu/test-os1.xml
12、修改虚拟机的配置信息(vim/edit)
①通过vim命令修改配置文件(不建议使用vim)
[[email protected] ~]# vim /etc/libvirt/qemu/test-os1.xml
②通过virsh命令修改配置文件(建议使用virsh,自带保护机制)
[[email protected] ~]# virsh edit test-os1
13、查看虚拟机配置信息
[[email protected] ~]# virsh dominfo test-os1
[[email protected] ~]# virsh dominfo test-os2
14、连接虚拟机(进入虚拟机后按 Ctrl + ] 退出虚拟机)
[[email protected] ~]# virsh console test-os1
三、KVM虚拟机克隆
查看虚拟机状态:
[[email protected] ~]# virsh list --all
关闭虚拟机:
[[email protected] ~]# virsh shutdown test-os1
[[email protected] ~]# virsh shutdown test-os2
克隆虚拟机:
[[email protected] ~]# virt-clone -o test-os1 -n test-os1_clone -f /kvm-vm/vm1_clone.qcow2
开启克隆虚拟机并登陆:
[[email protected] ~]# virsh start test-os1_clone
[[email protected] ~]# virsh console test-os1_clone
四、KVM虚拟机快照
快照实际上做的是虚拟机的XML配置文件,默认快照XML文件。
在/var/lib/libvirt/qemu/snapshot/虚拟机名/下,快照只支持qcow2磁盘格式的系统。
在虚拟机中创建一个文件:
创建一个虚拟机快照(snapshot-create不指定快照名称):
[[email protected] ~]# virsh snapshot-create test-os1_clone
查看虚拟机的所有快照信息(snapshot-list):
[[email protected] ~]# virsh snapshot-list test-os1_clone
查看当前虚拟机的快照信息(snapshot-current):
[[email protected] ~]# virsh snapshot-current test-os1_clone
在虚拟机中再次创建一个文件:
再次创建一个虚拟机快照(snapshot-create-as指定快照名称):
[[email protected] ~]# virsh snapshot-create-as test-os1_clone create_test
再次查看虚拟机的所有快照信息(snapshot-list):
[[email protected] ~]# virsh snapshot-list test-os1_clone
恢复到虚拟机的快照状态(snapshot-revert):
[[email protected] ~]# virsh snapshot-revert test-os1_clone 1585813971
[[email protected] ~]# virsh snapshot-revert test-os1_clone create_test
删除虚拟机的快照(snapshot-delete):
[[email protected] ~]# virsh snapshot-delete test-os1_clone 1585813971