ROW/COW 快照技术原理解析

目录

  • 目录
  • 快照与备份的区别
  • Snapshot 快照技术
    • 全量快照
    • 增量快照
      • COW 写时拷贝快照技术
      • ROW 写时重定向快照技术

快照与备份的区别

传统地, 人们一直采用数据复制、备份、恢复等技术来保护重要的数据信息, 定期对数据进行备份或复制。由于数据备份过程会影响应用性能, 并且非常耗时, 因此数据备份通常被安排在系统负载较轻时进行(如夜间). 另外, 为了节省存储空间, 通常结合全量和增量备份技术. 显然, 这种数据备份方式存在一个显著的不足, 即备份窗口问题. 在数据备份期间, 企业业务需要暂时停止对外提供服务. 随着企业数据量和数据增长速度的加快, 这个窗口可能会越来越长, 这对于关键性业务系统来说是无法接受的. 诸如银行、电信等机构, 信息系统要求 24*7 不间断运行, 短时的停机或者少量数据的丢失都会导致巨大的损失. 因此, 就需要将数据备份窗口尽可能地缩小, 甚至缩小为零. 数据快照(Snapshot)、持续数据保护(CDP, Continuous Data Protection)等技术,就是为了满足这样的需求而出现的数据保护技术.

需要注意的是: 目前, 随着对信息系统的依赖程度越来越高, 即使不是银行、电信这类传统关键行业, 在政府、教育、企业也越来越多的系统要求更小的备份窗口和更短的停机时间. 降低数据保护的代价, 提高数据保护过程中的应用感知能力,逐步成为客户的首要需求.

快照的优势:

  • 快照可以在数秒钟内建立拷贝, 供备份应用使用. 利用快照技术, 配合普通的备份软件是这样实现的:

    • 通过图形的管理界面发出做快照的命令
    • 快照功能自动寻找没有数据改变的时刻进行拷贝,几秒钟之后拷贝生成
    • 再使用备份软件对该拷贝进行备份
  • 利用快照的镜像可以在数秒钟内把数据恢复到做快照的时间点, 还允许系统管理员选择性地迅速恢复受损或被删文件
  • 数据快照的功能还有很多用处, 比如现在需要一份最新的生产数据来做新系统的测试或者提供决策支持和数据分析所用, 而系统又不能停机, 使用磁带备份恢复 一份数据时间又很长. 这样的情况可以利用数据快照的备份功能在任一时间点建立快照拷贝, 利用拷贝的数据进行测试和分析, 不会影响系统的正常使用

Snapshot 快照技术

SNIA(存储网络行业协会)对快照的定义是:关于指定数据集合的一个完全可用拷贝, 该拷贝包含了相应数据在某个时间点的镜像.

按照 SNIA 的定义, 快照有 全量快照和增量快照 两种类型, 其中又各自使用了不同的快照技术:

  • 全量快照:

    • 镜像分离 (Split Mirror)
  • 增量快照
    • 写时拷贝 (Copy-On-Write)
    • 写时重定向 (Redirect-On-Write)

其中写时重定向快照方式的灵活性以及使用存储空间的高效性, 加上分布式存储的流行, 使其逐渐成为快照技术的主流.

全量快照

又称全拷贝快照或原样复制, 使用 镜像分离快照技术 在到达预设的快照时间点之前, 首先为源数据卷创建并维护一个完整的镜像卷. 每次写入数据到磁盘时, 都会往源数据卷和镜像卷同时写入, 这样保证了同一份数据的两个副本分别保存在源数据卷和镜像卷上, 并且由两者组成的一个镜像对. 在预设快照时间点到达时, 镜像对的数据写入操作被停止, 镜像卷快速脱离镜像对并转化为快照卷, 这样就获得了一份数据快照. 快照卷在完成数据快照/数据备份等应用后, 将与源数据卷重新进行同步, 成为一盒新的镜像卷.

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

镜像分离快照的好处在于数据隔离性好, 使离线访问数据成为可能, 并且简化了恢复、复制或存档一块硬盘上的所有数据的过程. 最重要的是操作的时间非常短, 仅仅是断开镜像卷对所需的时间, 通常只有几毫秒, 这样小的备份窗口几乎不会对上层应用造成影响. 不存在快照卷和源数据卷的相互影响, 但这种方式的缺点也十分明显, 缺乏灵活性, 无法在任意时间点为任意的数据卷建立快照. 另外, 它需要一个或者多个与源数据卷容量相同的镜像卷, 占用了大量存储空间, 而且写数据时同时写两份, 对写入性能影响比较大, 在同步镜像时还会降低存储系统的整体性能. 为了解决镜像分离快照技术实现的全量快照方式, 引入了差量快照的实现方式以及 COW/ROW 两种差量快照技术.

增量快照

COW 写时拷贝快照技术

如上图, COW 首先会为每个源数据卷都创建一张数据指针表用于保存源数据卷(Base Volume)所有数据的物理指针, 在创建快照时, 存储系统会拷贝出一份源数据卷指针表的副本, 该副本作为快照卷数据指针表. 而且 COW 只有在创建快照时才会建立快照卷, 该快照卷只占用了相对少量的存储空间, 用于保存快照时间点之后源数据卷中被更新的数据. 具体的步骤如下:

  • Step 1: 生成源数据卷数据指针表
  • Step 2: 创建快照
  • Step 3: 从源数据卷数据指针表拷贝出快照卷数据指针表
  • Step 4: 生成快照卷
  • Step 5: 源数据卷中的原始数接收到更新操作指令
  • Step 6: 将源数据卷中的原始数据拷贝到快照卷中(预留空间), 下次针对这一位置的写操作将不再执行写时拷贝操作
  • Step 7: 更新快照卷指针表
  • Step 8: 更新源数据卷的原始数据
  • Step 9: 不断的重复 Step 5~8, 直到执行下一次快照

通过上面的步骤可以看出, 写时拷贝的本意是: 更新源数据卷中的原始数据时, 将原始数据 Copy 到快照卷中. 当我们需要恢复快照时, 只需要按照快照指针表逐一进行寻址就能够完成了. 而且 COW 在使用上非常的灵活, 可以随时为任意源数据卷建立快照.

优势: COW 在进行快照操作之前, 不会占用任何的存储资源, 也不会影响系统性能. 创建快照时由于快照卷与源数据卷通过各自的指针表共享同一份物理数据, 而不需要进行全量拷贝所以快照创建速度非常快, 可以瞬间完成. COW 创建快照时产生的备份窗口长度与源数据卷的 Size 成线性比例, 一般为几秒钟, 相比全量快照要长, 但快照卷占用的存储空间却大大减少.

劣势: COW 因为创建快照后会的每次写入操作都需要先将源数据卷中的原始数据拷贝到快照卷中才能开始写入源数据卷, 所以会降低源数据卷的写性能. 而且很显然, 如果对同一源数据卷做了多次快照之后, 写性能将会更加低下. 再一个就是由于快照卷仅仅保存了源数据卷的部分原始数据, 因此无法得到完整的物理副本, 碰到需要完整物理副本的应用就无能为力了, 而且如果拷贝到快照卷中的数据量超过了保留空间, 快照就将失效.

应用场景: COW 快照技术在创建快照后的一次数据更新操作实际上需要一次读操作(读源数据卷的数据)和两次写操作(写源数据卷与写快照卷). 所以, COW 更适合于应用对存储设备读多写少的场景. 除此之外, 如果一个应用容易出现对存储设备的写入热点(只针对某个有限范围内的数据进行写操作), 也是较较理想的选择. 因为其数据更改都局限在一个范围内, 对同一份数据的多次写操作只会出现一次写时复制操作.

ROW 写时重定向快照技术

如上图, Vd 表示源数据卷, Snap 表示快照卷, 当源数据卷创建一个快照时, Vd 与 snap 是一致的. 如果在创建快照之后, 对源数据卷的数据进行了更新操作的话, 并不会像 COW 似得直接修改源数据卷原始数据, 而是再开辟一个新的空间用于存放用于更新原始数据的新的数据. 具体步骤如下:

  • Step 1: 创建快照
  • Step 2: 将自上次快照以来所有的重定向写数据所对应在源数据卷中的数据复制出来生成这个时间点的快照, 然后再将这些重定向写数据写回到源数据卷中的相应位置

  • Step 3: 源数据卷中的原始数据接收到更新操作指令
  • Step 4: 开辟一个新的数据存储卷(预留空间)
  • Step 5: 将源数据卷数据指针表中被更新原始数据的指针重定向到新开辟的数据存储卷
  • Step 6: 写入更新数据到新开辟的存储空间中
  • Step 7: 重复 Step 3~6, 直到下一次执行快照

NOTE 1: 而读操作是否需要读重定向, 则根据读取数据的位置是否有过自上次快照以来的写重定向, 必须对有过写重定向的位置进行读重定向, 反之就不需要了.

从上述步骤可以看出, 写时重定向的本意是: 更新源数据卷中的原始数据时, 将源数据卷数据指针表中的被更新原始数据指针重定向到新的存储空间. 所以由此至终, 快照卷的数据指针表和其对应的数据是没有被改变过的. 恢复快照的时候, 只需要按照快照卷数据指针表来进行寻址就可以完成恢复了.

优势: 源数据卷创建快照后的写操作会被重定向, 所有的写 IO 都被重定向到新卷中, 而所有快照卷数据(旧数据)均保留在只读的源数据卷中. 这样做的好处是更新源数据卷只需要一次写操作, 解决了 COW 写两次的性能问题. 所以 ROW 最明显的优势就是不会降低源数据卷的写性能.

劣势: ROW 的快照卷数据指针表保存的是源数据卷的原始副本, 而源数据卷数据指针表保存的则是更新后的副本, 这导致在删除快照卷之前需要将快照卷数据指针表指向的数据同步至源数据卷中. 而且当创建了多个快照后, 会产生一个快照链, 使原始数据的访问、快照卷和源数据卷数据的追踪以及快照的删除将变得异常复杂. 例如: 一共执行了 10 次快照, 在快照恢复时, 要恢复到最新的快照点, 则需要合并 10 个快照文件, 最终才能实现恢复. 所以 ROW 的主要缺点是没有一个完整的快照卷, 而是由多个不同时刻的快照卷来组成一个特定的快照时间点. 如果快照层级越多, 进行快照恢复时的系统开销会比较大. 除此之外, 因为源数据卷数据指针指向的数据会很快的被重定向分散, 所以 ROW 另一个主要缺点就是降低了读性能(局部空间原理).

应用场景: 在传统存储设备上, ROW 快照在多次读写后, 源数据卷的数据被分散, 对于连续读写的性能不如COW. 所以 ROW 比较适合 Write-Intensive(写密集) 类型的存储系统. 但是, 在分布式存储设备上, ROW 的连续读写的性能会比 COW 更加好. 一般而言, 读写性能的瓶颈都在磁盘上. 而分布式存储的特性是数据越是分散到不同的存储设备中, 系统性能越高. 所以 ROW 的源数据卷重定向分散性反而带来了好处. 因此, ROW 逐渐成为了业界的主流.

时间: 2024-10-08 08:40:10

ROW/COW 快照技术原理解析的相关文章

快照技术解析(收集)

1 概述 1.1 快照技术产生背景 在过去的20多年中,虽然计算机技术取得了巨大的发展,但是数据备份技术却没有长足进步.数据备份操作代价和成本仍然比较高,并且消耗大量时间和系统资源,数据备份的恢复时间目标和恢复点目标比较长. 传统地,人们一直采用数据复制.备份.恢复等技术来保护重要的数据信息,定期对数据进行备份或复制.由于数据备份过程会影响应用性能,并且非常耗时,因此数据备份通常被安排在系统负载较轻时进行(如夜间).另外,为了节省存储空间,通常结合全量和增量备份技术. 显然,这种数据备份方式存在

JVM CPU Profiler技术原理及源码深度解析

研发人员在遇到线上报警或需要优化系统性能时,常常需要分析程序运行行为和性能瓶颈.Profiling技术是一种在应用运行时收集程序相关信息的动态分析手段,常用的JVM Profiler可以从多个方面对程序进行动态分析,如CPU.Memory.Thread.Classes.GC等,其中CPU Profiling的应用最为广泛.CPU Profiling经常被用于分析代码的执行热点,如“哪个方法占用CPU的执行时间最长”.“每个方法占用CPU的比例是多少”等等,通过CPU Profiling得到上述相

[精华] RDMA技术原理分析、主流实现对比和解析

替换高清大图 请点击此处输入图片描述  摘要: 远程直接内存访问(即Remote Direct Memory Access)是一种直接内存访问技术,它将数据直接从一台计算机的内存传输到另一台计算机,无需双方操作系统的介入,本文旨在技术引导,详细内容请通过文末"阅读原文"参阅<RDMA原理分析.对比和技术实现解析>电子书. RDMA技术最早出现在Infiniband网络,用于HPC高性能计算集群的互联.传统的基于Socket套接字(TCP/IP协议栈)的网络通信,需要经过操作

Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析

Xen,VMware ESXi,Hyper-V和KVM等虚拟化技术的原理解析 2018年04月03日 13:51:55 阅读数:936 XEN 与 VMware ESXi,Hyper-V 以及 KVM 特点比较: XEN 有简化虚拟模式,不需要设备驱动,能够保证每个虚拟用户系统相互独立,依赖于 service domains 来完成一些功能: Vmware ESXI 与 XEN 比较类似,包含设备驱动以及管理栈等基本要素,硬件支持依赖于 VMware 创建的驱动: Hyper-V 是基于 XEN

分布式技术原理与算法解析

分布式技术因其高性能.高可用.高扩展等特点,成为 AI.区块链.云计算.大数据等众多技术的基石,也因其普适性,在经济性裁员的大背景下,仍然成为各公司中间件团队.实验室等基础部门大规模争抢的人才重地. 与火热的需求相比,优秀的分布式技术人才极度短缺.分布式技术概念繁多.知识庞杂.新兴技术层出不穷,令许多新手望而却步.许多满足一定年限的面试者,虽然也能对一些概念滔滔不绝,但追问到实质性问题就变得磕磕巴巴,故左右而言它.究其原因,主要是:知识碎片化,不成体系,见树不见林. 分布式技术之初体验:讲述分布

TOF--TOF相机技术原理深入解析与分享

TOF介绍 TOF, 即time of flight ,直译过来就是飞行时间.TOF的原理与他的名称对应,即,测量光在空间中飞行的时间,通过换算成距离,就可以测得摄像头与物体的距离.通常,TOF摄像头组成有一个发射模块,一个接收模块.发射模块可以是LED.激光等发射元件,它将发射例如850nm的调制红外光,物体经过反射后,由接收模块接收到反射的红外光.由于发射和接收的都是调制波,TOF摄像头可以计算发射和接收的相位差,通过换算得到深度值,即摄像头与物体的深度距离. TOF-单点测距原理 一个简易

Hbase架构原理解析

Hbase架构原理解析 https://developer.51cto.com/art/201904/595698.htm HBase 架构 HBase 的架构似乎也是 master-slave 架构,和 HDFS 有点像,HMaster 是用来管理集群,HRegionServer 是真正存储数据的地方 HBase 在数据查询和写入的时候,其实并不是像 HDFS 那样询问 HMaster. 在 HBase 中,每一张表都会有元信息,这些信息也是被存储为 HBase 表,称为元信息表,也叫 Met

Android中微信抢红包插件原理解析和开发实现

一.前言 自从去年中微信添加抢红包的功能,微信的电商之旅算是正式开始正式火爆起来.但是作为Android开发者来说,我们在抢红包的同时意识到了很多问题,就是手动去抢红包的速度慢了,当然这些有很多原因导致了.或许是网络的原因,而且这个也是最大的原因.但是其他的不可忽略的因素也是要考虑到进去的,比如在手机充电锁屏的时候,我们并不知道有人已经开始发红包了,那么这时候也是让我们丧失了一大批红包的原因.那么关于网络的问题,我们开发者可能用相关技术无法解决(当然在Google和Facebook看来的话,他们

JSONP跨域的原理解析

JSONP跨域的原理解析 一种脚本注入行为 在 2011年10月27日 那天写的     已经有 99238 次阅读了 感谢 参考或原文 JavaScript是一种在Web开发中经常使用的前端动态脚本技术.在JavaScript中,有一个很重要的安全性限制,被称为"Same-Origin Policy"(同源策略).这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容. JavaScript这个安全策略在进