何为KVM克隆和快照

本文介绍了KVM虚拟机的克隆和快照操作。克隆虚拟机可避免重复安装,但可能占用大量磁盘IO。快照分为两种创建方式,推荐使用virsh snapshot以避免数据丢失。原始raw格式磁盘需转换为qcow2以支持快照。快照创建后,可关闭虚拟机恢复至快照状态,实现数据回滚。
KVM的克隆、快照都是老生常谈的问题,资料也非常多,这里只是针对个人实验的记录,方便以后查阅。

虚拟机克隆

虚拟机的克隆操作是再频繁不过了,安装好第一台虚拟机后就可以进行基础设置,已此虚拟机为模板,以后直接克隆,而不需要重复进行系统安装工作。

克隆虚拟机首先需要关闭或者挂起虚拟机

[root@kvm7 vps] virsh shutdown vm01

克隆vm01虚拟机为vm02

virt-clone -o vm01 -n vm02 -f /home/vps/vm02.img

克隆会非常占用磁盘IO ,如果是在虚拟机里面做实验,又是机械硬盘的话本地电脑都会很卡。

如果之前创建的虚拟机vm01 是配置了固定VNC端口,那么就需要修改一下vm02的配置文件,将VNC端口改为其他,避免冲突,当然如果是autoport=’yes’ 状态则无需调整。

虚拟机快照

kvm快照有两种方式创建,分别是:

qemu-img snapshot 命令进行生成快照
virsh snapshot 相关命令进行生成快照

查询了下qemu-img 生成快照需要关机,而且很多网友反应数据丢失,相对来讲大家都推荐virsh snapshot 创建快照。

磁盘转换

如果是raw格式的磁盘是不支持快照的,如果是raw磁盘格式,需要转换为qcow2

[root@kvm7 vps] qemu-img info vm01.img
image: vm01.img
file format: raw
virtual size: 10G (10737418240 bytes)
disk size: 2.5G
[root@kvm7 vps] qemu-img convert -f raw -O qcow2  vm01.img  vm01.qcow2  #在虚拟机磁盘文件目录下复制并转换为qcow2格式
[root@kvm7 vps] qemu-img info vm01.qcow2 
image: vm01.qcow2
file format: qcow2
virtual size: 10G (10737418240 bytes)
disk size: 2.3G
cluster_size: 65536

创建快照

给虚拟机vm01创建快照:

[root@localhost vps] virsh snapshot-create vm01

查看快照:

[root@kvm7 vps] virsh snapshot-list vm01
 名称               Creation Time             状态
------------------------------------------------------------
 1481193249           2016-12-08 18:34:09 +0800 running

当前虚拟机对应的快照是存储在/var/lib/libvirt/qemu/snapshot/vm01 目录下,也就是一个xml文件,查看快照配置可以使用命令:

[root@kvm7 vps] virsh snapshot-current  vm01

恢复快照

在vm01中生成几个文件,然后恢复快照简单测试一下:
何为KVM克隆和快照何为KVM克隆和快照

恢复快照是需要关闭虚拟机的,所以先关闭vm01主机:

[root@kvm7 vps] virsh shutdown vm01

域vm01被关闭

查看虚拟机状态:

[root@kvm7 vps] virsh domstate vm01

关闭

执行恢复快照:查看到vm01快照时间为1481193249

https://www.admin5.com/article/20191125/935050.shtml
https://tech.ifeng.com/c/7rsI0Yr6Spz
https://www.51cto.com/it/news/2019/1125/16914.html
https://article.pchome.net/content-2104480.html

[root@kvm7 vps] virsh snapshot-revert vm01 1481193249

对比下之前创建的三个文件,已经没有了,快照恢复成功。
何为KVM克隆和快照何为KVM克隆和快照

查看对应的磁盘是否存在快照也很简单,创建了快照的磁盘通过info 查看会显示出快照信息:

[root@kvm7 vps] qemu-img info vm01.img 
image: vm01.img
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 2.7G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         1481193249             212M 2016-12-08 18:34:09   00:00:25.775

删除快照

[root@kvm7 vps] virsh snapshot-delete vm01 1481193249
### JavaScript单线程多线程的定义 JavaScript单线程指的是在同一时间内,JavaScript只能执行一个任务。这是JavaScript语言设计之初的特性,主要是为了避免多个线程同时操作DOM时出现的竞态条件,因为如果多个线程同时修改DOM,可能会导致页面渲染出现不可预期的错误。例如,在浏览器环境中,当执行一段JavaScript代码时,代码会按照顺序依次执行,只有当前任务完成后,才会执行下一个任务。 JavaScript多线程并非指JavaScript本身具备多线程能力,而是在其运行环境(如浏览器或Node.js)中,提供了一些机制来实现类似多线程的功能。在浏览器中,Web Workers API允许创建独立于主线程的Worker线程,这些线程可以在后台运行JavaScript代码,并且通过消息传递机制与主线程进行通信。在Node.js中,可以使用`worker_threads`模块来创建工作线程,实现多线程处理。 ### 从单线程引出异步 由于JavaScript是单线程的,如果执行一个耗时的任务,会阻塞后续代码的执行。例如,在浏览器中进行一个大量数据的计算,会导致页面卡顿,用户无法进行其他操作。为了解决这个问题,JavaScript引入了异步编程的概念。 异步操作允许在执行耗时任务时,不阻塞主线程的执行,而是将任务放入任务队列中,当主线程空闲时,再从任务队列中取出任务执行。常见的异步操作包括定时器(`setTimeout`、`setInterval`)、Ajax请求、事件监听等。以下是一个定时器的示例代码: ```javascript console.log('开始'); setTimeout(() => { console.log('定时器任务执行'); }, 2000); console.log('结束'); ``` 在上述代码中,`setTimeout`是一个异步操作,当代码执行到`setTimeout`时,会将回调函数放入任务队列中,然后继续执行后续的代码,直到主线程空闲时,才会从任务队列中取出定时器的回调函数执行。 ### 从多线程引出异步 在多线程环境中,不同线程之间的执行是相互独立的,为了实现线程之间的协作数据交互,也需要使用异步机制。例如,在使用Web Workers时,主线程向Worker线程发送任务后,不会等待Worker线程的处理结果,而是继续执行后续的代码。当Worker线程完成任务后,会通过消息传递的方式将结果返回给主线程,主线程通过监听消息事件来获取结果。以下是一个使用Web Workers的示例代码: ```javascript // main.js const worker = new Worker('worker.js'); worker.postMessage('开始任务'); worker.onmessage = function(event) { console.log('接收到Worker线程的结果:', event.data); }; console.log('主线程继续执行其他任务'); // worker.js self.onmessage = function(event) { // 模拟耗时任务 setTimeout(() => { const result = '任务完成'; self.postMessage(result); }, 2000); }; ``` 在上述代码中,主线程向Worker线程发送任务后,不会等待Worker线程的处理结果,而是继续执行后续的代码。Worker线程接收到任务后,模拟一个耗时任务,完成后将结果返回给主线程,主线程通过`onmessage`事件监听结果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值