目录
[1.1 KVM工具栈](#1.1 KVM工具栈)
[1.2 libvirt架构概述](#1.2 libvirt架构概述)
[4.1 对虚拟机拍摄快照](#4.1 对虚拟机拍摄快照)
[4.2 查看快照详细信息](#4.2 查看快照详细信息)
[4.3 恢复快照](#4.3 恢复快照)
[4.4 删除快照](#4.4 删除快照)
[4.4 编辑快照文件](#4.4 编辑快照文件)
一、KVM概述
1.1 KVM工具栈
上图所示主要描述了kvm的主要工具栈,从大的类别可以分为libvirt和qemu这两大类,其中libvirt中分virtual machine manager 和 virsh。virtual machine manager中的virt-manager是基于图形界面的管理,其他都是可以在命令行直接使用命令来管理虚拟机。
virsh是基于终端命令行管理。两者都是通过libvirt连接至libvirtd进行管理,对于qemu来说,它管理虚拟机上直接调用kvm内核中模块的API进行管理;
1.2 libvirt架构概述
libvirt是用来管理虚拟机或虚拟化功能的软件集合,主要包括:libvirt API,libvirtd进程和virsh工具集三部分。最初的目的是为不同的hypervisor提供统一的管理接口。
libvirtd该后台进程主要实现以下功能:
(1)远程代理所有remote client发送来的命令,由该进程监测执行;
(2)本地环境初始化libvirt服务的启停,用户connection的响应等;
(3)根据环境注册各种Driver(qemu, xen, storage...)的实现
查看libvirtd服务状态
systemctl status libvirtd
如果libvirtd服务停止运行,那么你将不能管理虚拟机,也就是不能使用virt-manager等工具来管理虚拟机。
查看配置文件
虚拟机的所有配置是放置在一个xml文件中,位置在/etc/libvirt/qemu/目录中
[root@kvm ~]# ll /etc/libvirt/qemu
total 12
drwxr-xr-x. 2 root root 25 Aug 7 10:08 autostart
drwx------. 3 root root 42 Apr 28 2021 networks
-rw-------. 1 root root 3826 Aug 3 20:03 study01.xml
-rw-------. 1 root root 4737 Aug 7 10:08 study02.xml
二、使用virsh管理虚拟机
virsh是使用libvirt management API构建的管理工具,virsh的名称的含义是virtualization shell。
virsh工具功能非常丰富,它可以全生命周期的管理kvm;比如创建虚拟机,查看虚拟机,动态热插拔硬盘,给虚拟机做快照,迁移、启动、停止、挂起、暂停、删除虚拟机等等操作。
它有两种工作模式:
立即模式
交互模式
常用命令参数:
|------------------|---------------------------------------|
| 命令 | 描述 |
| attach-device | 使用XML文件中的设备定义在虚拟机中添加设备 |
| attach-disk | 在虚拟机中附加新磁盘设备 |
| attach-interface | 在虚拟机中附加新网络接口 |
| create | 在XML配置文件生成虚拟机并启动新虚拟机 |
| define | 为虚拟机输出XML配置文件 |
| destroy | 强制关闭虚拟机 |
| detach-device | 从虚拟机中分离设备,使用同样的XML描述作为命令attach-device |
| detach-disk | 从虚拟机中分离磁盘设备 |
| detach-interface | 从虚拟机中分离网络接口 |
| domifstat | 显示正在运行的虚拟机的网络接口统计 |
| dominfo | 显示虚拟机信息 |
| dumpxml | 输出虚拟机XML配置文件 |
| help | 显示帮助命令 |
| list | 列出所有虚拟机 |
| migrate | 列出虚拟机迁移到两外一台主机中 |
| nodeinfo | 有关管理程序的输出信息 |
| edit | 编辑域的XML配置 |
| reboot | 重启虚拟机 |
| restore | 恢复以前保存在文件中的虚拟机 |
| save | 将虚拟机当前状态保存到某个文件中 |
| setmaxmem | 为管理程序设定内存上限 |
| setmem | 为虚拟机设定分配的内存 |
| setvcpus | 修改为虚拟机分配的虚拟cpu数量 |
| shutdown | 关闭虚拟机 |
| undefine | 删除与虚拟机关联的所有文件 |
| vcpuinfo | 显示虚拟机的虚拟cpu信息 |
| vcpupin | 控制虚拟机的虚拟cpu亲和性 |
| start | 启动未激活的虚拟机 |
三、kvm基本功能管理
1.帮助命令
总结:从上面的信息可以看到,virsh命令大概分类:
- Domain Management(域管理)
- Domain Monitoring(域监控)
- Host and Hypervisor(主机及虚拟化)
- Interface(网卡接口)
- Network Filter(网络防火墙)
- Networking(网络)
- Node Device(节点设备驱动)
- Secret(加密)
- Snapshot(快照)
- Storage Pool(存储池或存储策略)
- Storage Volume(存储卷)
- Virsh itself(virsh shell自身相关)
查看某一组帮助信息,我们可以使用virsh help +组名;比如查看storage volume组相关命令有哪些,可以使用virsh help volume;
2.KVM的配置文件存放目录
重启,快照文件,网络文件保存目录
3.查看虚拟机状态
list只能查看启动状态下的虚拟机,加参数--all可以查看全部虚拟机,但未启动的虚拟机不会有id。
4.虚拟机关机与开机
通过上面查看的虚拟机状态,这里把myvm01关闭,myvm02开启。
5.强制虚拟机系统关闭电源
当虚拟机出现故障,通过上面温柔的关机方式,无法关闭时。这时你就需要用到暴力(拔电源)关机了,这种方式关机速度快,但是不推荐!!!
virsh destroy study02
6.通过配置文件启动虚拟机系统
启动方式不止start一种,也可以通过启动配置文件来开启虚拟机。
virsh create /etc/libvirt/qemu/study02.xml
7.修改虚拟机配置文件
vim /etc/libvirt/qemu/stuy01.xml
virsh edit stuy01
8.设置虚拟机自启
设置虚拟机随宿主机开启而开启,执行创建命令时在/etc/libvirt/qemu/autostart/目录里面创建开机自启的系统文件链接。
查看自启动配置文件
9.导出虚拟机配置
下面命令是备份虚拟机myvm01,路径还是放qemu目录下。
virsh dumpxml myvm01 > /etc/libvirt/qemu/study02_bak.xml
10.创建虚拟机(create)
如下准备使用study01.xml 拷贝为 stuby03.xml修改部分配置后运行。
为study03虚拟机创建存储
qemu-img create -f qcow2 /images/kvm/study03.qcow2 40G
提示:qemu-img create 表示使用qemu创建一个磁盘文件,-f指定文件格式,常用的磁盘格式有raw,cow,qcow2;当然qemu-img支持创建很多格式的磁盘文件,这个命令的主要作用就是对磁盘文件的管理,比如创建磁盘,转换磁盘格式,检查磁盘,对磁盘做快照等等操作;
查看磁盘信息
修改study
创建study03虚拟机
用virt-manager验证,看看c1虚拟机是否有系统运行
11.删除和导入虚拟机(define)
删除虚拟机前需要先关闭虚拟机,让虚拟机处于关机状态。需要注意的是,上面已经备份了myvm01的虚拟机,如果没有备份,建议先备份,以便后面的导入操作。
virsh shutdown study02
virsh undefine study02
virsh list --all
通过备份的配置文件stuby02_bak.xml重新定义虚拟机
virsh define /etc/libvirt/qemu/study02_bak.xml
注意:define和creater本质上两者一样的,都是从xml配置文件创建虚拟机
- define 丛xml配置文件创建主机但是不启动
- create 同样是丛xml配置文件创建主机,但是可以指定很多选项,比如是否启动,是否连接控制台等。
12.挂起/恢复虚拟机
# 挂起虚拟机
virsh suspend myvm01
# 恢复虚拟机
virsh resume myvm01
13.连接虚拟机
14.查看虚拟机信息
15.虚拟机克隆
复制一个虚拟机,改变所有独特的主机端配置,如MAC地址,名称等。
虚拟机的内容不会改变:virt-clone不会改变客户操作系统内部的任何东西,它只是复制磁盘和主机端更改。因此,诸如更改密码,更改静态IP地址等都不在此工具的范围内。有关这些类型的更改,请参见virt-sysprep(1)。
查看虚拟机状态
克隆study01的虚拟机,到study01_clong
virt-clone -o study01 -n study01_clong -f /images/kvm/study01_clong.qcow2
参数:
-
-o 需要克隆的虚拟机名称;
-
-n 新虚拟机名称;
-
-f 指定克隆到哪个文件目录并命名
查看状态并启动
virsh start study01_clong
virsh list --all
查看vnc端口号
virsh vncdisplay study01
四、虚拟机快照
快照实际上做的是虚拟机的XML配置文件,默认快照XML文件,在/var/lib/libvirt/qemu/snapshot/虚拟机名/下,快照只支持qcow2磁盘格式的系统。
4.1 对虚拟机拍摄快照
拍摄快照有两种方式,第一种是随机生成名称,第二种是指定名称,最后查看虚拟机快照,生成两个虚拟机快照。
# 随机生成名称方式
virsh snapshot-create study01_snapshot
# 指定名字
virsh snapshot-create-as study01 study01_snapshot
4.2 查看快照详细信息
virsh snapshot-info study01 study01_snapshot
virsh snapshot-current study01
4.3 恢复快照
virsh snapshot-revert study01 study01_snapshot
4.4 删除快照
virsh snapshot-delete study01 study01_snapshot
4.4 编辑快照文件
virsh snapshot-edit study01 study01_snapshot_02
参考原文链接:【KVM虚拟化】· virsh管理命令_virsh 暂停-CSDN博客