存储系统--快照技术:
1 快照定义
SNIA对快照的定义是:关于指定数据集合的一个完全可以拷贝,该拷贝包括相应数据在某个时间点的映像。
快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。
快照有全量快照和增量快照两种类型。
2 全量快照:
镜像分离(Split Mirror)
3 增量快照
3.1 COW: Copy On Write 写时拷贝
a 创建COW数据空间
快照生成后,存储系统在源LUN所在的存储池子里动态划分一部分存储空间,用于保存写前copy数据。同一个源lun所对应的所有快照共享同一个cow空间。包括cow meta和cow data。
b 原理
COW称为写时拷贝快照技术,创建快照后,如果source端有IO和新数据进来,那快照系统会首先将原始数据拷贝到快照卷上对应的数据块中,然后再对源卷进行写覆盖。
注:下次主机针对同一位置的写操作将不再执行写时拷贝。
即:首次写入时要完成:
一个读(读取源位置的数据);
两个写(写原位置和写快照预留空间)。
c 优缺点
优点:
快照操作之前,不会占用任何存储资源;不会影响系统性能。
快照卷只需要保留发生过数据变化的数据块,与数据卷相比小很多。
缺点:
1) 降低源数据卷的写性能。当修改source时,会发生三次读写:
a: 读取源数据
b: 将源数据写入快照卷中
c: 将新数据写入源数据卷中
如果写入频繁,将会非常消耗IO,因此适合写操作较少的场景。
2) 无法得到完整的物理副本,快照卷仅保存了source卷的部分原始数据。
3) 如果拷贝到快照卷的数据量超过cow保留空间,快照将会失效。
3.2 ROW: Riredect On Write 写时重定向
Snapshot创建后,快照系统把对源数据卷的写IO重定向到快照预留空间,直接将新数据写到快照卷。当需要读取source数据时,快照前的数据从源端读取,快照后的数据(新数据)从快照卷读取。
写操作:
快照创建以后,若上层业务对源卷写数据X,X在缓存中排队,快照系统判断X即将写入源卷的逻辑地址,然后将数据X写入快照卷中预留的对应逻辑地址中,同时,将源卷和快照卷的逻辑地址写入映射表,即写重定向。上层针对源卷写入一个数据块X,存储上只发生一次写操作,只是写之前进行了重定向。
读操作:
若快照创建以后,上层业务对源卷进行读,则有两种情况:1)若读取的数据,在创建快照前产生,数据是保存在源卷上的,那么,上层就从源卷进行读取;2)若需要读取的数据是创建快照以后才产生的,那么上层就查询映射表,从快照卷进行读取(即读重定向)。
若快照创建以后,上层业务对快照卷进行读,同样也有两种情况:1)若读取的数据,在创建快照前产生,数据是保存在源卷上的,那么上层就查询映射表,从源卷进行读取;2)若需要读取的数据是创建快照以后才产生的,那么上层就直接从快照卷进行读取。
ROW优缺点:
优点:
不会降低源卷的写性能;因为快照后更新源数据,只需要一个重定向的写操作,解决COW两次写的性能问题;
对分布式存储系统,正是由于数据的分散,进而提供了并发读的机会
缺点:
没有一个完整的快照卷。
ROW的快照卷数据映射表保存的是源数据卷的原始副本,而源数据卷指针表保存的是更新后的副本。因此,当创建了多个快照时,会产生一个快照链,使得原始数据的访问快照卷和源数据卷数据的追踪;以及对快照的删除将变得异常复杂。
而且,在恢复快照时会不断的合并快照文件,会造成较大的系统开销。
单机读性能下降:因为是重定向写,使得原本连续的数据,现在变的分散;连续写变成了分散写,造成读性能下降。
4 总结:
COW快照更适合于读密集型应用;
或者对存储设备容易出现写入热点(小范围内的数据频繁写入)的应用,因为数据的修改都局限在小范围内,对同一份数据进行多次写只会出现一次复制操作;
ROW快照更适合于写密集型应用;
由于ROW重定向的特性,在分布式存储中,读性能会更高。
参考文档:
2 快照是什么?揭秘存储快照的实现_row快照占用空间吗-优快云博客
也欢迎大家点赞关注我的微信公众号:大滨读书健身(全网同名)
1万+

被折叠的 条评论
为什么被折叠?



