快照技术(COW与ROW技术)

目录

快照技术

Copy-On-Write (COW) 写时拷贝快照技术

写操作

读操作:

COW的优缺点

Redirect-on-write (ROW) 重定向写快照

写操作:

读操作:

ROW优劣势


快照技术

关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。按照 SNIA 的定义, 快照有全量快照和增量快照两种类型, 其中又各自使用了不同的快照技术:

全量快照:镜像分离(Split Mirror)。

增量快照:

写时拷贝(Copy-On-Write)

写时重定向(Redirect-On-Write)

Copy-On-Write (COW) 写时拷贝快照技术

COW称为写时拷贝,或者写前拷贝。创建快照以后,如果源卷的数据发生了变化,那么快照系统会首先将原始数据拷贝到快照卷上对应的数据块中,然后再对源卷进行改写。

首次写入时需要完成:

一个读操作(读取源位置的数据)

两个写操作(写原位置和写快照预留空间)。

写操作

如下图所示,快照创建以后,上层业务每下发一个数据块,存储上,发生了两次写操作:一次是源卷将数据写入快照卷(即图中Y),一次是上层业务将数据写入源卷(即图中X)。同时,生成一张映射表,表中一列记录源卷上数据变化的逻辑地址,另一列记录快照卷上数据变化的逻辑地址。

 图1 COW写操作

读操作:

如下图,针对快照进行读操作时,首先由快照系统判断,上层业务需要读取的数据是否在快照卷中,若在,直接从快照卷读取,若不在,则查询映射表,去对应源卷的逻辑地中读取(读重定向)。针对源卷进行读操作时,与快照卷没有数据交互。

图2 COW读操作

COW的优缺点

优势:COW 在进行快照操作之前,不会占用任何的存储资源,也不会影响系统性能。因为快照卷只需要保留发生过变化的数据块,与数据卷相比要小得多。

劣势:

降低源数据卷的写性能。当修改源数据时,会发生三次读写操作;

如果主机写入数据频繁,那么这种方式将非常消耗I/O。

无法得到完整的物理副本。快照卷仅仅保存了源数据卷的部分原始数据。

拷贝到快照卷中的数据量超过了保留空间,快照就将失效。

Redirect-on-write (ROW) 重定向写快照

“ROW重定向写”与“COW复制写”是相对的概念,创建快照以后,快照系统把对数据卷的写请求重定向给了快照预留的存储空间,直接将新的数据写入快照卷。上层业务读源卷时,创建快照前的数据从源卷读,创建快照后产生的数据,从快照卷读。它可以避免两次写操作引起的性能损失

ROW 快照中的原始数据依旧保留在源数据卷中,并且为了保证快照数据的完整性,在创建快照时,源数据卷状态会由读写变成只读的。

图3 ROW的写读操作

写操作:

快照创建以后,若上层业务对源卷写数据X,X在缓存中排队,快照系统判断X即将写入源卷的逻辑地址,然后将数据X写入快照卷中预留的对应逻辑地址中,同时,将源卷和快照卷的逻辑地址写入映射表,即写重定向。上层针对源卷写入一个数据块X,存储上只发生一次写操作,只是写之前进行了重定向。

读操作:

若快照创建以后,上层业务对源卷进行读,则有两种情况:1)若读取的数据,在创建快照前产生,数据是保存在源卷上的,那么,上层就从源卷进行读取;2)若需要读取的数据是创建快照以后才产生的,那么上层就查询映射表,从快照卷进行读取(即读重定向)。

若快照创建以后,上层业务对快照卷进行读,同样也有两种情况:1)若读取的数据,在创建快照前产生,数据是保存在源卷上的,那么上层就查询映射表,从源卷进行读取;2)若需要读取的数据是创建快照以后才产生的,那么上层就直接从快照卷进行读取。

ROW优劣势

劣势:没有一个完整的快照卷。ROW 的快照卷数据映射表保存的是源数据卷的原始副本,而源数据卷数据指针表保存的则是更新后的副本。因此,当创建了多个快照时,会产生一个快照链,使原始数据的访问快照卷和源数据卷数据的追踪以及快照的删除将变得异常复杂。在恢复快照时会不断地合并快照文件,造成较大的系统开销。

单机读性能下降。由于采用了重定向写,使得原本连续的数据分散到了磁盘中,连续写变成了随机写,造成读性能下降。

势:不会降低源数据卷的写性能。源数据卷创建快照后的写操作会被重定向,所有的写 I/O 都被重定向到新卷中,而所有快照卷数据(旧数据)均保留在只读的源数据卷中。因此更新源数据只需要一个写操作,解决了 COW 写两次的性能问题。对于分布式系统来说,正是由于数据的分散,进而提供了并发读的机会。所以在分布式存储上,ROW的连续读写性能比COW好。

综上,COW的快照方式更适合于读密集型应用,或者对存储设备容易出现写入热点(对于小范围内的数据频繁写入)的应用,因为数据的修改都局限在小范围内,对同一份数据进行多次写只会出现一次复制操作。ROW适合写密集的应用,同时由于ROW重定向写的特性,在分布式存储中,读性能会更高。

摘抄原地址:

快照是什么?揭秘存储快照的实现_Trival_dream的博客-CSDN博客

COW、ROW快照技术原理 - 华为

猜你喜欢

转载自blog.csdn.net/qq_34474071/article/details/125199163