1 概述

  1.1 快照技术产生背景

  在过去的20多年中,虽然计算机技术取得了巨大的发展,但是数据备份技术却没有长足进步。数据备份操作代价和成本仍然比较高,并且消耗大量时间和系统资源,数据备份的恢复时间目标和恢复点目标比较长。

  传统地,人们一直采用数据复制、备份、恢复等技术来保护重要的数据信息,定期对数据进行备份或复制。由于数据备份过程会影响应用性能,并且非常耗时,因此数据备份通常被安排在系统负载较轻时进行(如夜间)。另外,为了节省存储空间,通常结合全量和增量备份技术。

  显然,这种数据备份方式存在一个显著的不足,即备份窗口问题。在数据备份期间,企业业务需要暂时停止对外提供服务。随着企业数据量和数据增长速度的加快, 这个窗口可能会要求越来越长,这对于关键性业务系统来说是无法接受的。诸如银行、电信等机构,信息系统要求24x7不间断运行,短时的停机或者少量数据的 丢失都会导致巨大的损失。

  因此,就需要将数据备份窗口尽可能地缩小,甚至缩小为零,数据快照(Snapshot)、持续数据保护(CDP, Continuous Data Protection)等技术,就是为了满足这样的需求而出现的数据保护技术。

  需要注意的是:目前,随着对信息系统的依赖程度越来越高,即使不是银行、电信这类传统关键行业,在政府、教育、企业也越来越多的系统要求更小的备份窗口和更短的停机时间。

  1.2 技术优势

  1、数据快照功能可以在数秒钟内建立拷贝,供备份应用所用。

    举个例子:一个企业的数据量很大,而且应用昼夜不停,作一次磁带备份需要24 个小时。现在要求备份 9 月 18 日 0 点 0 分时的数据。如果用传统的在线备份方法,备份下来的数据开始时是 0 点 0 分时的,最后的数据是 24 点 0 分时的,数据的前后一致性受到了挑战。

    利用数据快照技术,配合普通的备份软件是这样实现的:通过图形的管理界面发出做快照的命令,快照功能会自动寻找没有数据改变的时刻进行拷贝,几秒钟之后拷 贝生成。再使用备份软件对该拷贝进行备份。24 小时后这个备份过程结束。所有的数据都是一个瞬间的,数据的一致性得到了保证。

  2、利用数据快照的映像可以在数秒钟内把数据恢复到做快照的时间点,还允许系统管理员选择性地迅速恢复受损或被删文件。

    例如:张三不小心把一个重要的文件夹彻底删除了,现在想要恢复。利用先前通过快照做的拷贝,把相应的文件夹拷回来即可。

  3、数据快照的功能还有很多用处,比如现在需要一份最新的生产数据来做新系统的测试或者提供决策支持和数据分析所用,而系统又不能停机,使用磁带备份恢复 一份数据时间又很长。这样的情况可以利用数据快照的备份功能在任一时间点建立快照拷贝,利用拷贝的数据进行测试和分析,不会影响系统的正常使用。

2 技术介绍

  2.1 基本概念

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

  快照具有很广泛的应用,例如作为备份的源、作为数据挖掘的源、作为保存应用程序状态的检查点,甚至就是作为单纯的数据复制的一种手段等。创建快照的方法也 有很多种,按照SNIA的定义,快照技术主要分为镜像分离(split mirror) 、指针重映射(pointer remapping)和写时拷贝(copy on write)技术三大类。指针重映射方式的灵活性及使用存储空间的高效性,使得它成为快照技术的主流。

  2.2快照的几种类型

  快照技术能够实现数据的即时影像,快照影像可以支持在线备份。全量快照是实现所有数据的一个完整的只读副本,为了降低快照所占用的存储空间,人们提出了写 时复制(COW ,Copy-On-Write)和写重定向(ROW,Redirect on  Write)快照技术。另外,还出现了其他一些快照技术的实现方式,如日志、持续数据保护等,可以提升快照的相关性能。

  2.2.1 镜像分离(Split Mirror)

  镜像分离快照技术在快照时间点到来之前,首先要为源数据卷创建并维护一个完整的物理镜像卷:同一数据的两个副本分别保存在由源数据卷和镜像卷组成的镜像对 上。在快照时间点到来时,镜像操作被停止,镜像卷转化为快照卷,获得一份数据快照。快照卷在完成数据备份等应用后,将与源数据卷重新同步,重新成为镜像 卷。

  对于要同时保留多个连续时间点快照的源数据卷,必须预先为其创建多个镜像卷,当第一个镜像卷被转化为快照卷作为数据备份后,初始创建的第二个镜像卷立即与源数据卷同步,与源数据卷成为新的镜像对。

  镜像分裂快照操作的时间非常短,仅仅是断开镜像卷对所需的时间,通常只有几毫秒,这样小的备份窗口几乎不会对上层应用造成影响,但是这种快照技术缺乏灵活 性,无法在任意时间点为任意的数据卷建立快照。另外,它需要一个或者多个与源数据卷容量相同的镜像卷,同步镜像时还会降低存储系统的整体性能。

  2.2.2 写时复制(COW, Copy On Write)

  写时复制快照使用预先分配的快照空间进行快照创建,在快照时间点之后,没有物理数据复制发生,仅仅复制了原始数据物理位置的元数据。因此,快照创建非常 快,可以瞬间完成。然后,快照副本跟踪原始卷的数据变化(即原始卷写操作),一旦原始卷数据块发生首次更新,则先将原始卷数据块读出并写入快照卷,然后用 新数据块覆盖原始卷。写时复制,因此而得名。

                   

  这种快照技术在创建快照时才建立快照卷,但只需分配相对少量的存储空间,用于保存快照时间点之后源数据卷中被更新的数据。每个源数据卷都具有一个数据指针表,每条记录保存着指向对应数据块的指针。

  在创建快照时,存储子系统为源数据卷的指针表建立一个副本,作为快照卷的数据指针表。当快照时间点结束时,快照建立了一个可供上层应用访问的逻辑副本,快照卷与源数据卷通过各自的指针表共享同一份物理数据。

  快照创建之后,当源数据卷中某数据将要被更新时,为了保证快照操作的完整性,使用写时复制技术。对快照卷中数据的访问,通过查询数据指针表,根据对应数据块的指针确定所访问数据的物理存储位置。

  写时复制技术确保复制操作发生在更新操作之前,使快照时间点后的数据更新不会出现在快照卷上,保证了快照操作的完整性。写时复制快照在快照时间点之前,不会占用任何的存储资源,也不会影响系统性能;而且它在使用上非常灵活,可以在任意时间点为任意数据卷建立快照。

  在快照时间点产生的“备份窗口”的长度与源数据卷的容量成线性比例,一般为几秒钟,对应用影响甚微,但为快照卷分配的存储空间却大大减少;复制操作只在源数据卷发生更新时才发生,因此系统开销非常小。

  但是由于快照卷仅仅保存了源数据卷被更新的数据,此快照技术无法得到完整的物理副本,碰到需要完整物理副本的应用就无能为力了,而且如果更新的数据数量超过保留空间,快照就将失效。

  2.2.3 指针重映射(Pointer Remapping) 

  指针重映射快照这种实现方式与写时复制非常相似,区别在于对于原始数据卷的首次写操作将被重定向到预留的快照空间。该快照维持的是指向所有源数据的指针和拷贝数据。

  当数据被重写时,将会给更新过的数据选择一个新的位置,同时指向该数据的指针也被重新映射,指向更新后的数据。如果拷贝是只读的,那么指向该数据的指针就根本不会被修改。

  重定向写操作提升了快照I/O性能,只需一次写操作,直接将新数据写入快照卷,同时更新位图映射指针;而写时拷贝需要一次读和两次写操作,即将原始卷数据块读入并写入快照卷,然后将更新数据写入原始卷。

  不难发现,快照卷保存的是原始副本,而原始卷保存的则是快照副本。这导致删除快照前需要将快照卷中的数据同步至原始卷,而且当创建多个快照后,原始数据的 访问、快照卷和原始卷数据的追踪以及快照的删除将变得异常复杂。此外,快照副本依赖与原始副本,原始副本数据集很快变得分散。

     

posted on 2017-08-28 23:03  kosamino  阅读(1560)  评论(0编辑  收藏  举报