虚拟机的快照及快照脚本

#############快照(reset虚拟机的原理)#########

什么是快照:快照就相当于在虚拟机的硬件信息前放了一块’玻璃’,透过’玻璃’进行操作,所有的操作痕迹作用在‘玻璃’上,但是呈现出来的效果就是‘玻璃’上的痕迹加‘玻璃’后的内容,操作失误还原只需拿走‘玻璃’更换新的即可(因为母盘没有任何改变)。
【1】:

(1)cd /var/lib/libvirt/images/ ##进入虚拟机硬件信息存放的位置

ls ##找出自己所需要的母盘硬件信息(这里用westos虚拟机的硬件信息做母盘,westos1.qcow2)

(2)qemu-img create -f qcow2 -b westos1.qcow2 node1.qcow2 ## 以westos.qcow2为 母盘进行快照,生成node1.qcow2即成功
在安装虚拟机时选取硬件信息node1.qcow2进行安装。
在这里插入图片描述
(3)virt-manager,点电视进行如下操作,在安装虚拟机时选取硬件信息node1.qcow2进行安装。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
测试: 1) 在硬件信息node1.qcow2安装的虚拟机node1中,
rm -fr /* (或rm -fr /etc/) 使其系统崩溃不能重启,关闭(reboot)虚拟机node1。
2)删除/var/lib/libvirt/images/里面快照出来的文件node1.qcow2。
3)重复以westos.qcow2为母盘进行快照一个新的node1.qcow2。
4)再次打开虚拟机node1即可正常运行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
【2】:
*

*快照的脚本编辑

(以快照出来的硬件信息进行虚拟机的后台安装)
vim /mnt/vm_create_snopshot.sh
在这里插入图片描述
命令行调用虚拟机
在这里插入图片描述

1:qemu-img creat \
2: -f qcow \
3:-b /var/lib/libvirt/images/$1.qcow2 /var/lib/libvirt/images/$2.qcow2 (&> /dev/null) ($1:已有的虚拟机名称 ;$2:注意没有”\")
4: (空白)
5:virt-install \ (安装命令)
6:-- name $2 \ (新虚拟机的名称)
7:-- memory 1042 \
8:-- vcpus 1 \
9:-- disk /var/lib/libvirt/images/$2.qcow2,bus=virtio \
10:-- network source=br0,model=virtio \
11:-- import (&> /dev/null &)
在这里插入图片描述
在这里插入图片描述

虚拟机启动时自动加载特定快照通常需要通过一些脚本语言,如PowerShell、bash或Windows批处理文件(bat)来实现。这里是一个基本的概念: 1. **PowerShell示例**: ```powershell # 定义一个脚本 function Start-FromSnapshot { $snapshotName = "YourSnapshotName" Get-VMSnapshot -vmName "YourVMName" | Where-Object {$_.Name -eq $snapshotName} | Restore-VMSnapshot -Confirm:$false Start-ScriptBlock {Start-FromSnapshot} -Trigger (New-ScheduledTaskTrigger -AtStartup) -Action {Start-Process powershell.exe -ArgumentList "-ExecutionPolicy Bypass -File 'path\to\your\script.ps1'"} ``` 记得将`YourSnapshotName`, `YourVMName`, 和脚本路径替换为实际值。 2. **Bash/Linux示例**: ```sh #!/bin/bash snapshot_name="YourSnapshotName" vm_name="YourVMName" vmsnapshot=$(virsh list --all | grep "$vm_name" | awk '/\[.*\]/{print $NF}') if [[ $vmsnapshot == "$snapshot_name" ]]; then virsh snapshot restore $vm_name $snapshot_name fi virsh start $vm_name ``` 保存此脚本为`.sh`文件,然后配置cron job使其在系统启动时运行。 3. **Windows批处理示例**: ```batch @echo off setlocal enabledelayedexpansion set snapshotName=YourSnapshotName for /f "tokens=*" %%i in ('powercmd.exe list-snapshots YourVMName') do ( if "%%~i"=="%snapshotName%" ( powercmd.exe restore-snapshot YourVMName %snapshotName% powercmd.exe start-vm YourVMName exit /b ) ) ``` 请将`YourSnapshotName`和`YourVMName`替换为实际的快照名和虚拟机名称,并确保安装了相应的命令行工具来管理虚拟机(如VirtualBox的VBoxManage或VMware的PowerCLI等)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值