你能看懂的cow和row快照原理

快照的类型:

1、全量快照:为源数据创建并维护一个完整的镜像卷。

2、增量快照:利用COW或ROW的方式实现增加快照(差量)。

快照的原理

快照不是拷贝,它是指向保存在存储设备中的数据的引用标记或指针。(就是保存的数据的元数据,可以通过这些元数据索引到实际的数据,不是拷贝原数据,所以速度很快),但是只是保存“指针”会有一个问题,如果原数据发生变化怎么变???因为你只是保存的指针,这个时候有两种解决方案。一种是COW(copy-on-write), 一种是ROW(redirect-on-write)。下面我们来看它们具体是怎么实现的。

COW

先说一下背景,现在有两个指针表,一个是快照的指针表,一个是原卷的指针表,在数据没有发生任何改变的时候,它们是一样的。

在这里插入图片描述

现在有一个块的数据发生了变化。然后这个时候如果直接在磁盘上改的话。之前打的快照就不能恢复成原来的数据(打快照时的),所以cow的方案是将原数据的某一块(比如3)先写到快照卷中,然后把快照卷里的指向修改(修改到快照卷里的3),然后再对数据里的3进行修改。所以这样就保留了快照的信息。

ROW

同样的背景(同上),ROW的方案是把新数据写到快照卷里,然后把原卷指针卷的指针指向改变(改到快照卷的那个新数据),这比CO的好处是不用多做那一次拷贝,(cow需要把原数据拷贝到快照卷)。但是它的问题是如果存在多个快照,就存在很恶心的链式关系(最新一次的快照原始数据存在就存在了上一次快照创建的快照卷中)

解释:很多文档都说了当第一次写入数据时,会做cow和row操作。这个第一次是什么意思,就是当原数据第一次发生变化的时候,因为快照记录的是原数据,然后当它第一次改变的时候,做这个操作能保证它记录的还是原数据,但当第二(第n次)次改变的时候,与我无瓜了,因为我已经记录下来了,这就是这个第一次的意思。

url

ROW/COW 快照技术原理解析_tiankong_的博客-CSDN博客_row快照

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
qcow2是一种用于磁盘镜像的格式,它采用了row/cow(Read-Only / Copy-On-Write)快照技术。 首先,我们来解释一下row/cow的概念。当创建一个基础镜像时,qcow2使用row模式,即只读模式。这意味着任何修改都不会直接应用在基础镜像上,而是在cow镜像中进行。 当需要对镜像进行修改时,会创建一个cow镜像作为基础镜像的副本。cow镜像会记录所有修改的数据块。在读取数据时,qcow2首先检查cow镜像中是否存在所需的数据块,如果存在,则直接从cow镜像读取。如果不存在,则从基础镜像中读取。 当需要保存修改后的镜像时,qcow2会将cow镜像中的数据块合并到基础镜像中,这样就完成了修改的永久保存。 使用row/cow快照技术的好处是节省了存储空间。由于只记录了修改的数据块,所以cow镜像通常只占用少量空间,而且可以共享基础镜像的不变部分。这意味着可以同时创建多个cow镜像,在相同的基础镜像上进行不同的修改,并且只需要存储修改的差异部分,节省了存储空间。 此外,row/cow快照技术还具有更好的性能。由于只有数据块发生变化的部分需要读写,因此可以大大提高传输速度和磁盘操作效率。 总之,qcow2的row/cow快照技术通过读取基础镜像和cow镜像的方式,实现了节省存储空间和提高性能的效果。它在虚拟化环境中被广泛应用,并且有利于提高资源利用率和系统性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值