1.虚拟机的快照
1.什么是虚拟机的快照
- 磁盘“快照”是虚拟机磁盘文件(VMDK)在某个点及时的副本
- 系统崩溃或系统异常,可以通过使用恢复到快照来保持磁盘文件系统和系统存储
- 当升级应用和服务器及给它们打补丁的时候,快照是相当于救世主一样的存在
2.快照的原理:相当于照镜子
- 将文件进行快照之后,在这个快照上对文件进行修改,不会损坏源文件
- 并且快照的过程是可逆的
- 目的是为了保护母盘,使母盘不会因为修改而遭到破坏
3.怎样做虚拟机的快照并开启使用这个快照
-
首先在真机中应当有一个下载好的虚拟机
-
建立mxh虚拟机的快照,快照名称为aaa.qcow2 qemu-img create -f qcow2 -b /var/lib/libvirt/images/mxh.qcow2 /var/lib/libvirt/images/aaa.qcow2
-f | 要建立虚拟机快照的硬盘格式 |
---|---|
-b | 备份虚拟机硬盘信息 |
/var/lib/libvirt/images/mxh.qcow2 | 真实虚拟机的硬盘路径 |
/var/lib/libvirt/images/aaa.qcow2 | 虚拟机的快照路径 |
[root@foundation79 ~]# ls /var/lib/libvirt/images/ ##查看虚拟机的硬盘信息,看mxh.qcow2是否存在
mxh.qcow2 rh124-desktop-vdb.qcow2 rh124-server-vdb.ovl
rh124-desktop-vda.ovl rh124-desktop.xml rh124-server-vdb.qcow2
rh124-desktop-vda.qcow2 rh124-server-vda.ovl rh124-server.xml
rh124-desktop-vdb.ovl rh124-server-vda.qcow2
[root@foundation79 ~]# qemu-img create -f qcow2 -b /var/lib/libvirt/images/mxh.qcow2 /var/lib/libvirt/images/aaa.qcow2 ##建立快照
Formatting '/var/lib/libvirt/images/aaa.qcow2', fmt=qcow2 size=10737418240 backing_file='/var/lib/libvirt/images/mxh.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off
[root@foundation79 ~]# ls /var/lib/libvirt/images/ ##查看快照文件aaa.qcow2是否生成
aaa.qcow2 rh124-desktop-vdb.ovl rh124-server-vda.qcow2
mxh.qcow2 rh124-desktop-vdb.qcow2 rh124-server-vdb.ovl
rh124-desktop-vda.ovl rh124-desktop.xml rh124-server-vdb.qcow2
rh124-desktop-vda.qcow2 rh124-server-vda.ovl rh124-server.xml
- 查看快照文件的大小,一般比真实文件要小
[root@foundation79 images]# du -sh aaa.qcow2
196K aaa.qcow2
- 打开虚拟机管理器,开始安装,步骤如下图所示:
- 虚拟机的快照生成后,原虚拟机的信息不改变,不用重新设置
2.虚拟机的复制
- 只有真机cpu匹配的情况下才可以互相复制虚拟机
- 复制的目的是为了方便、快速的安装虚拟机,大大减少工作效率
- 从其他人那复制虚拟机的过程相当于从其他人的主机上下载到我的主机上
操作步骤:
- 先复制对方虚拟机的硬盘信息scp root@172.25.254.79:/var/lib/libvirt/images/mxh.qcow2 /mnt/
[root@foundation79 ~]# scp root@172.25.254.79:/var/lib/libvirt/images/mxh.qcow2 /mnt/
The authenticity of host '172.25.254.79 (172.25.254.79)' can't be established.
ECDSA key fingerprint is b8:a2:3e:c2:23:27:52:59:36:0a:98:5d:e4:3a:26:0b.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.25.254.79' (ECDSA) to the list of known hosts.
root@172.25.254.79's password:
mxh.qcow2 100% 10GB 66.5MB/s 02:34
- 再复制对方虚拟机的硬件信息scp root@172.25.254.79:/etc/libvirt/qemu/mxh.xml /mnt/
[root@foundation79 ~]# scp root@172.25.254.79:/etc/libvirt/qemu/mxh.xml /mnt/
root@172.25.254.79's password:
mxh.xml 100% 4071 4.0KB/s 00:00
- 将硬盘文件移动到默认目录下,若不在,容易出错 mv /mnt/mxh.qcow2 /var/lib/libvirt/images/
[root@foundation79 mnt]# mv /mnt/mxh.qcow2 /var/lib/libvirt/images/
mv: overwrite ‘/var/lib/libvirt/images/mxh.qcow2’? yes
- 一次性使用复制的虚拟机,关掉之后就没有了virsh create /mnt/mxh.xml
[root@foundation79 mnt]# virsh create /mnt/mxh.xml
Domain mxh created from /mnt/mxh.xml
- 永久性使用复制的虚拟机virsh define /mnt/mxh.xml
[root@foundation79 mnt]# virsh define /mnt/mxh.xml
Domain mxh defined from /mnt/mxh.xml
3.快照安装过程自动化
1.用脚本建立虚拟机
[root@foundation79 images]# cd /usr/bin ##切换到该目录下,在此目录下运行脚本
[root@foundation79 bin]# vim /usr/bin/vm_create.sh ##建立生成虚拟机的脚本
[root@foundation79 bin]# chmod +x /usr/bin/vm_create.sh ##给脚本文件加权限,使之可以运行
[root@foundation79 bin]# vm_create.sh bbb ##生成虚拟机bbb
- 编辑 /usr/bin/vm_create.sh脚本内容如下:(换行:空格+ \ +回车)
#!/bin/bash ##该脚本为二进制文件
virt-install \ ##使用命令
--name $1 \ ##设置虚拟机的名称($1表示使用脚本后面根的第一串字符)
--cdrom /home/kiosk/Desktop/rhel-server-7.3-x86_64-dvd.iso \ ##设置已经下载好的镜像地址
--vcpus 1 \ ##设置虚拟机cpu的大小
--memory 1024 \ ##设置虚拟机内存大小
--disk /var/lib/libvirt/images/$1.qcow2,size=10,bus=virtio \ ##设置虚拟机的硬盘信息(包括名称、大小和磁盘总线)
--network bridge=br0,model=virtio &> /dev/null & ##设置虚拟机的网络信息(包括桥接和设备模型),&> /dev/null表示将其他加载的信息放置在无限空设备中,&表示在后台运行
- 结果如下图所示:
2.用脚本建立虚拟机快照
[root@foundation79 mnt]# ls ##查看虚拟机的.xml文件是否存在
mxh.xml
[root@foundation79 mnt]# vim vm_snapshoot.sh ##建立生成虚拟机快照的脚本
[root@foundation79 mnt]# chmod +x vm_snapshoot.sh ##给脚本文件加权限,使之可以运行
[root@foundation79 mnt]# /mnt/vm_snapshoot.sh mxh ccc ##生成虚拟机mxh的快照ccc
- 编辑vm_snapshoot.sh脚本内容如下:
#!/bin/bash ##该脚本为二进制文件
qemu-img create -f qcow2 -b /var/lib/libvirt/images/$1.qcow2 \
/var/lib/libvirt/images/$2.qcow2 &> /dev/null ##建立快照
virt-install \ ##使用命令
--name $2 \ ##设置虚拟机快照的名称
--vcpus 1 \ ##设置虚拟机快照cpu的大小
--memory 1024 \ ##设置虚拟机快照内存大小
--disk /var/lib/libvirt/images/$2.qcow2,size=10,bus=virtio \ ##设置快照的硬盘信息(包括名称和磁盘总线)
--network bridge=br0,model=virtio \ ####设置虚拟机快照的网络信息(包括桥接和设备模型)
--import &> /dev/null & ##导入快照的路径并输出重定向到垃圾桶且在后台运行
- 结果如下图所示: