目录
1、虚机基本管理
2、虚机的克隆
3、增量镜像
4、虚机快照
1、虚机基本管理
查看正在运行的虚机
[root@localhost ~]# virsh list
Id Name State
----------------------------------------------------
查看所有的虚机
[root@localhost ~]# virsh list --all
Id Name State
----------------------------------------------------
- win2k12r2 shut off
查看KVM虚拟机配置文件
[root@localhost ~]# virsh dumppxml win2k12r2
如果直接用vim编辑器修改配置文件的话,需要重启libvirtd服务
启动/暂停/恢复虚拟
[root@localhost ~]# virsh start win2k12r2
[root@localhost ~]# virsh suspend win2k12r2
[root@localhost ~]# virsh resume win2k12r2
关闭虚机
[root@localhost ~]# virsh shutdown win2k12r2
或者
[root@localhost ~]# virsh destroy win2k12r2
重启虚机
[root@localhost ~]# virsh reboot win2k12r2
重置虚机
[root@localhost ~]# virsh reset win2k12r2
删除虚机
[root@localhost ~]# virsh undefined win2k12r2
注意:虚拟机在开启的情况下undefine是无法删除的,但是如果再destroy会直接被删除掉
设置虚机开机自启
[root@localhost ~]# virsh autostart win2k12r2
Domain win2k12r2 marked as autostarted
或者 /etc/libvirt/qemu/autostart/ //此目承默认不存在,
取消开机自启
[root@localhost ~]# virsh autostart --disable win2k12r2
Domain win2k12r2 unmarked as autostarted
查看所有开机自启的虚机
[root@localhost autostart]# virsh list --all --autostart
Id Name State
----------------------------------------------------
2、虚机的克隆
图形界面
[root@localhost ~]# virt-manager
- Applications(左角) ----> System Tools -.---->Virtual Machine Manager关闭要克降的虚拟机,右键点击虚拟机选择Clone
命令模式
[root@localhost autostart]# virt-clone -o win2k12r2 --auto-clone
- -o:origin
[root@localhost autostart]# virt-clone -o win2k12r2 -n vm2 --auto-clone
- 设置图形设置端口为自动端口,以避免相互冲突
[root@localhost autostart]# virt-clone -o win2k12r2 -n vm2 -f /var/lib/libvirt/image/vm2.img
- -f : --file 为虚拟机使用新的磁盘镜像文件
3、增量镜像
概述:
实验目的:
- 通过一个基础镜像(node.img),里面把各个虚拟机都需要的环境都搭建好,然后基于这个镜像建立起一个个增量镜像,每个增量镜像对应一个虚拟机,虚拟机对镜像中所有的改变都记录在增量镜像里面,基础镜像始等保持不变。
功能:
- 节省磁盘空间,快速复制虚拟机。
环境:
- 基本镜像文件: node.img 虚拟机ID: node
- 增量镜像文件: node4.img 虚拟机ID: node4
要求:
- 以基本镜像文件node.img为基础,创建一个镜像文件node4.img,以此创建一个虚拟机node4,虚拟机node4的改变将存储于node4.img中。
开始实验:
【1】创建增量镜像文件
[root@localhost qemu]# qemu-img create -b /var/lib/libvirt/images/win2k12r2.img -f qcow2 /var/lib/libvirt/images/node4.img
Formatting '/var/lib/libvirt/images/node4.img', fmt=qcow2 size=10737418240 backing_file='/var/lib/libvirt/images/win2k12r2.img' encryption=off cluster_size=65536 lazy_refcounts=off
【2】检查一下增量镜像文件的详细信息
[root@localhost qemu]# qemu-img info /var/lib/libvirt/images/node4.img
image: /var/lib/libvirt/images/node4.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 196K
cluster_size: 65536
backing file: /var/lib/libvirt/images/win2k12r2.img
Format specific information:
compat: 1.1
lazy refcounts: false
【3】创建虚拟机node4的XML配置文件
[root@localhost qemu]# cp /etc/libvirt/qemu/win2k12r2.xml /etc/libvirt/qemu/node4.xml
【4】修改配置文件
[root@localhost qemu]# vi /etc/libvirt/qemu/node4.xml
需要修改的地方
#名字
<name>node4</name>
#唯一的uuid
<uuid>b7777618-f76e-4fa2-8da6-b2733a6ae501</uuid>
#镜像地址
<source file='/var/lib/libvirt/images/node4.img'/>
#修改mac地址
<mac address='52:54:00:82:de:d5'/>
【5】根据xml配置定义虚拟机node4并开启虚机
[root@localhost ~]# virsh define /etc/libvirt/qemu/node4.xml
Domain node4 defined from /etc/libvirt/qemu/node4.xml
[root@localhost ~]# virsh start node4
Domain node4 started
【6】测试
看一下原始镜像和增量的增量的大小
[root@localhost ~]# du -h /var/lib/libvirt/images/win2k12r2.img
11G /var/lib/libvirt/images/win2k12r2.img
[root@localhost ~]# du -h /var/lib/libvirt/images/node4.img
8.0M /var/lib/libvirt/images/node4.img
4、虚机快照
为虚拟机创建一个快照
可以通过图形化界面:
[root@localhost ~]# virt-manager
也可以通过命令行的方式:
[root@localhost ~]# virsh snapshot-create-as node4 node4.snap
Domain snapshot node4.snap created
[root@localhost ~]# qemu-img info /var/lib/libvirt/images/node4.img
image: /var/lib/libvirt/images/node4.img
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 428M
cluster_size: 65536
backing file: /var/lib/libvirt/images/win2k12r2.img
Snapshot list:
ID TAG VM SIZE DATE VM CLOCK
1 node4.snap 397M 2023-02-04 03:23:07 00:08:15.403
Format specific information:
compat: 1.1
lazy refcounts: false
查看虚机快照
[root@localhost ~]# virsh snapshot-list node4
Name Creation Time State
------------------------------------------------------------
node4.snap 2023-02-04 03:23:07 -0500 running
raw
使用文件来模拟实际的硬盘(当然也可以使用一块真实的硬盘或一个分区)。由于原生的裸格式,不支持snapshot也是很正常的。但如果你使用LVM的裸设备,那就另当别论。说到LVM还是十分的犀利的目前来LVM的snapshot.性能、可扩展性方面都还是有相当的效果的。目前来看的话,备份的话也问题不大。就是在虚拟机迁移方面还是有很大的限制。但目前虚拟化的现状来看,真正需要热迁移的情况目前需求还不是是否的强烈。虽然使用LVM做虚拟机镜像的相关公开资料比较少,但目前来看牺牲一点灵活性,换取性能和便于管理还是不错的选择。
qcow2
现在比较主流的一种虚拟化镜像格式,经过一代的优化,目前qCow2的性能上接近raw裸格式的性能,这个也算是redhat的官方渠道了
对于qcow2的格式,几点还是比较突出的,qcow2的snapshot,可以在镜像上做N多个快照:
- 更小的存储空间
- Copy-on-write support
- 支持多个snapshot,对历史snapshot进行管理
- 支持zlib的磁盘压缩
- 支持AES的加警
恢复快照
[root@localhost ~]# virsh snapshot-revert node4 node4.snap
删除快照
[root@localhost ~]# virsh snapshot-delete --snapshotname node4
error: command 'snapshot-delete' requires <domain> option
[root@localhost ~]# virsh snapshot-delete --snapshotname node4.snap node4
Domain snapshot node4.snap deleted
[root@localhost ~]# virsh snapshot-list node4
Name Creation Time State
------------------------------------------------------------