浅谈数据保护之快照技术

引 言

随着计算机技术不断发展,各种信息呈爆炸式增长趋势,存储成为信息计算技术的中心。应用对存储系统的要求不断提高,信息数据逐渐成为企业赖以生存的基础,数据损坏或丢失会给企业带来巨大的损失,所以备份容灾技术显得尤为重要。

虽然计算机技术取得了巨大的发展,但是数据备份操作代价和成本仍然比较高,并且消耗大量时间和系统资源,由于数据备份过程会影响应用性能,并且非常耗时,因此数据备份通常被安排在系统负载较轻时进行。显然,这种数据备份方式存在一个缺点,即备份窗口问题。

随着企业数据量飞速增长,对该窗口要求可能会越来越长,这对于关键性业务系统来说是无法接受的。诸如银行、电信等机构,信息系统要求24×7不间断运行,短时的停机或者少量数据的丢失都会导致巨大的损失。因此,就需要将数据备份窗口尽可能地缩小,甚至缩小为零,数据快照(Snapshot)技术,就是为了满足这样的需求而出现的数据保护技术。

什么是快照技术

快照技术主要是在操作系统以及存储技术上实现的一种记录某一时间系统状态的技术。

存储网络行业协会SNIA对快照的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像。快照可以是其所表示的数据的一个副本(duplicate),也可以是数据的一个复制品(replicate)。

近来,Oracle等数据库厂家以及Vmware等虚拟化产品也把这种技术引入各自的数据保护当中。

快照的实现方式

当前实现快照主要有两种技术,一种是是写时复制(Copy On Write,COW)技术,另一种是写时重定向(Redirect On Write,ROW)技术。 

COW技术

存储底层是一个一个数据块,数据块由header和body两部分组成,heder中保存的是元数据,body中保存的是真实数据,header和body是一一指向关系。文件在系统中也由两部分组成,一部分是inode(index node),另一部分是block。inode中保存的也是元数据,block中则是真实数据,它们之间也是一一指向关系。如下图所示:

浅谈数据保护之快照技术

假设在一块磁盘中,我们写入一些数据,例如写入的数据ID分别是1,2,3,4,5;每个数据由inode和block两部分组成,inode和block是一一指向关系。如果这个时候我们来拍快照,我们拍的是什么呢?

其实这个时候我们只是对inode拍了快照,相当于复制了inode,里边同样也会有索引12345,它和block之间也是一一指向关系。如下图所示。通常拍快照的过程很快,就是因为在拍快照的过程中我们只是复制了当前时间点inode中的索引数据,并没有复制block中的真实数据。

浅谈数据保护之快照技术

数据是一直持续变化的,数据改变包括删除、更改、新增三种情况,拍完快照之后,如果数据发生改变,快照会如何变化呢?

数据删除:

假设删除数据inode中的索引5,此时快照不会发生任何改变,因为快照snapshot1中的inode和block还是一一对应关系,根据快照中的索引数据依然可以找到对应block中的真实数据。如下图所示。所以当发生数据删除时,快照不会发生任何变化。

这里要注意的是,当我们没有快照时,我们平常所说的删除文件是把索引和底层block中的真实数据一起删除了,但是当有快照存在时,我们所说的删除数据只是删除了索引数据,真正底层block中的数据是不会被删除的。

浅谈数据保护之快照技术

数据更改

假设把数据5改成6,那么首先inode中的索引5会变成6,然后它会把原来bolck中的5先复制出来,然后在对应位置写入6,覆盖之前的5(这个过程就是写时复制),最后更改快照snapshot1中的索引指针指向复制出来的5。

那么数据5复制到什么地方了呢?

在拍快照的时候,会默认生成一个cow区域,该区域就是用来存放快照中的索引对应的改变的数据的。每拍一个快照,就会生成一个cow区域,数据5就是复制到了cow区域中。

如下图所示。

浅谈数据保护之快照技术

如果我们此时继续修改,把数据inode中的6再改成7,这个时候快照就不会发生改变了。因为cow只关注snapshot中的索引数据,snapshot中有什么,cow才会做什么,所以因为此时快照中没有索引6,即使6在怎么修改,快照也不会有任何变化。

新增

假设新增了数据7,8,此时首先inode中会写入数据7,8,因为inode和block是一一对应关系,所以block中会产生两个空块,然后快照snapshot1会把这两个空快拷贝到cow区域,然后在向这两个空快中写入7,8。空快的作用是当我们还原快照时,因为cow区中没有数据7,8,空块可以直接把block中的78覆盖掉。

浅谈数据保护之快照技术

ROW技术

同COW技术一样,假设在一块磁盘中,我们写入一些数据,例如写入的数据ID分别是1,2,3;每个数据由inode和block两部分组成,inode和block是一一指向关系。如果这个时候我们来拍快照,我们拍的是什么呢?

其实这个时候我们也只是对inode拍了快照,相当于复制了inode,里边同样也会有索引123,它和block之间也是一一指向关系。到此整个过程和COW完全一致。

但是不同的是,COW会生成一个COW区域用来存放和原block不同的数据,但是ROW不会。ROW会在底层生成一个.img形式的磁盘文件,我们称这个文件为ROW差分卷。这里的差分就是指和原来磁盘block所存放数据的区别。当我们拍了一次快照之后,原来的磁盘文件block部分就直接变成了只读。如下图所示:

浅谈数据保护之快照技术

拍完快照之后,如果数据发生改变,快照会如何变化呢? 

数据删除

假设删除数据3,那么inode中的索引3将会被删除,和cow一样,此时快照不会发生任何改变,因为快照snap1中的inode和block还是一一对应关系。所以当发生数据删除时,快照不会发生任何变化。如下图所示:

浅谈数据保护之快照技术

数据修改

假设把数据3改成5,那么首先inode中的索引3会被改成5,因为之前的磁盘block在拍快照之后变成了只读文件,所以没办法写入数据。当inode中的索引3改成5之后,它会把本该写入block中的数据5直接写入row差分卷中,然后修改inode中索引5的指向直接指到差分卷中。如下图所示:

浅谈数据保护之快照技术

数据新增

假设新增了数据6,7,8,因为原block是只读的,所以数据6,7,8也是直接写到了差分卷中。然后修改数据inode中的索引6,7,8直接指到差分卷中。如下图所示:

浅谈数据保护之快照技术

假设此次接着拍了第二个快照,那么它就会产生第二个row差分卷,第一个差分卷就变成了只读。所以只要有新的差分卷生成,之前的差分卷就会变成已读,当有数据写入时,会直接写入到新的差分卷中。新快照中的索引也会一一指向原磁盘block和前边差分卷中的数据。所以如果我们连续拍快照,最后就会形成一个快照链。如下图所示:

浅谈数据保护之快照技术

COW和ROW的区别

可以看出COW在写入时需要拷贝一份数据到COW区域,而ROW是直接重定向到差分卷中写入,所以ROW适合写密集型场景;

相反,由于ROW不断进行指针重定向,源数据变得十分离散,所以对读性能会有较大影响,而COW不会,所以COW适合读密集型。

快照应用场景

1、容灾备份

使用快照技术可以为云盘创建快照,再使用快照创建云盘获取基础数据,实现同城容灾和异地容灾。

2、环境复制

可以使用系统盘快照创建自定义镜像,再使用自定义镜像创建ECS实例,实现环境复制。

3、提高容错率

出现病毒感染、人为误操作、恶意篡改、系统宕机、应用程序BUG、存储系统BUG等情况时,能及时回滚数据,降低操作风险,实现版本回退。

4、提高安全性

通过定期创建快照,可以保证数据的完整性,建立数据安全机制。

5、安全运维

执行常见的重要运维操作包括更换操作系统、应用软件升级或业务数据迁移之前,可以通过创建快照保证数据完整。

 6、解决常碰到的备份问题

例如:需要备份的数据量太大,以至于无法在有限的时间段内完成备份;由于备份时一些文件正在进行写操作,所以有些备份的数据不能使用;热备份严重影响应用系统的性能等。

总 结

快照技术从提出至今,一直被广泛的应用。快照的作用主要是能够进行在线数据备份与恢复。当存储设备发生应用故障或者文件损坏时可以进行快速的数据恢复,将数据恢复某个可用的时间点的状态。快照的另一个作用是为存储用户提供了另外一个数据访问通道,当原数据进行在线应用处理时,用户可以访问快照数据,还可以利用快照进行测试等工作。所有存储系统,不论高中低端,只要应用于在线系统,那么快照就成为一个不可或缺的功能。

文章下划线部分引用自百度百科

—作者:何晓忠—

往期回顾

银行分布式数据库选型分析

翻墙?居家办公?VPN?

云测试平台简介

备份与容灾之CDM技术

欢迎扫码关注我们!

微信公众号:EBCloud

原创文章,作者:EBCloud,如若转载,请注明出处:https://www.sudun.com/ask/32468.html

Like (0)
EBCloud的头像EBCloud
Previous 2024年4月2日 下午3:29
Next 2024年4月2日 下午3:29

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注