行业资讯

快照的定义

     对指定数据集合的一个完全可用拷贝,该拷贝包含源数据在拷贝时间点的静态影像。快照可以是数据再现的一个副本或者复制。


7个不同类型的快照:

  1. 基于文件系统的快照

    很多文件系统都支持快照功能,免费是文件系统快照的优势之一,因为它集成在文件系统内部;另一个优点是非常好用,最新版文件系统的快照功能通常使用起来很简单。但存在的劣势是每个文件系统都必须独立进行管理,当系统数量激增时,管理工作会变得非常繁重

  2. 基于LVM逻辑卷管理器快照

    我们可以创建跨多个文件系统的LVM快照。像赛门铁克的Veritas Volume Manager可以支持大多数常见的操作系统和文件系统。LVM通常还包括存储多路径和存储虚拟化等功能。

  3. 基于NAS的快照

    NAS本质上就是一个经过优化的、或是专门定制的文件系统,运行在特定的设备上,或集成在存储设备里。通过网络连接到NAS的计算机系统都可以使用这种标准的通用快照,包括物理服务器、虚拟机、台式机和笔记本电脑。它也非常容易操作和管理

  4. 基于磁盘阵列的快照基

    磁盘阵列的快照与基于NAS的快照有非常相似的优点,即所有与磁盘阵列相连的计算机系统都可以使用这种标准的通用快照功能。

  5. 基于存储设备的快照

    这里所说的存储虚拟化设备主要用于SAN光纤网络环境,不同于基于文件(NFS)应用的网络设备,像F5 Network公司的Acopia ARX产品就是排除在这个范畴之外的。主要的存储虚拟化软硬件存储设备(或融合了虚拟化功能的存储系统)都支持快照能力。

  6. 基于主机虚拟化软件的快照

    随着服务器虚拟化应用的普及,基于主机虚拟化管理软件(Hypervisor)的快照技术也逐渐流行起来。像Citrix公司的 XenServer、微软的Hyper – V、SUN的xVM Ops Center、以及VMware的ESX和vSphere4等主机虚拟化产品都支持快照功能。

  7. 基于数据库的快照

    在数据库中,快照动作被称为“SnapShot Isolation(快照隔离)”,这点在SQL Server中应用比较多(其6个事物隔离级别中的一个就是snapshot isolation)

快照的分类

按照是全量还是增量来区分为全量快照、增量快照

也可以分为物理快照和逻辑快照

快照技术分类:

  • Clone or split mirror 克隆或镜像分离

  • Copy-on-write with background copy 后台拷贝的复制写

  • 写时拷贝 (Copy-On-Write),COW

  • 写时重定向 (Redirect-On-Write),ROW

快照实现原理

  • Clone or split mirror 克隆或镜像分离

    Clone(或Split-Mirror)快照所创建的是数据的完整副本。clone:顾名思义,就是完整复制数据,需要在没有写入的时候复制,这样数据才具有一致性。split mirror:先创建一个原始卷的镜像卷,每次写磁盘的时候,都会往原始卷和快照卷同时写入内容,当启动快照时,则镜像卷能快速脱离,生成一个快照卷。然后重新创建一个原始卷的镜像卷,等待下次快照。

    缺点:很费磁盘空间,每个快照都需要占用和原始卷同样的空间,而且写数据时同时写两份,对写入性能影响比较大。

    优点:快照生成和恢复都方便,而且数据隔离很好,不存在快照卷和原始卷的相互影响。


640wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.jpg

  • Copy-on-write with background copy 后台拷贝的复制写

    该快照有两个生成步骤,首先创建一个瞬时即可生成的COW快照,然后利用后台进程将数据卷的数据复制到快照空间,最后生成一份数据卷的克隆或镜像。创建这种快照的目的是发挥COW快照的优势,同时尽量屏蔽它的不足。因此,这种快照常常被形容为COW和Clone快照的混合体

  •  COW
    每个源数据卷都具有一张数据指针表(元数据),简称源数据指针表,表记录就是指向相应源数据块的地址指针。在创建快照时,存储子系统会建立源数据指针表的一个副本(元数据拷贝),作为快照卷的数据指针表,简称快照数据指针表。在创建快照之后,这个快照就相当于一个可供上层应用访问的存储逻辑副本,快照卷与源数据卷通过各自的指针表共享同一份物理数据。当源数据卷中任意数据将要被改写时,COW会在原始数据修改之前进行拷贝到快照卷中,然后将新数据写入到源数据块中覆盖原始数据,并且将原始数据在快照卷中的新地址更新到快照数据指针表记录中,使快照时间点后更新的数据不会出现在快照卷中.


640wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.jpg

  1. 在创建快照时,会同时创建快照卷和快照数据指针表。快照卷只需要很少的存储空间;

  2. 更改数据时,会拷贝旧数据到快照卷,源数据会被覆盖,快照指针表的地址会更新;插入新数据,自然是不会对快照卷有影响。

  3. 再次创建快照,会再次拷贝源数据指针表,新的修改会记录到旧的快照卷和新的快照卷。

  • ROW

    ROW 的实现原理与 COW 非常相似,区别在于ROW 对原始数据卷的首次写操作,会将新数据重定向到预留的快照卷中,而非 COW 一般会使用新数据将原始数据覆盖。所以,ROW 快照中的原始数据依旧保留在源数据卷中,并且为了保证快照数据的完整性,在创建快照时,源数据卷状态会由读写变成只读的。

640wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1.jpg

  1. 创建快照时,也会copy一份源数据指针表作为快照数据指针表,此时两张表的指针记录都相同;

  2. 发生了写操作,那么新数据会直接被写入到快照卷中,然后再更新源数据指针表的记录,使其指向新数据所在的快照卷地址;

  3. 再次创建快照,会再次copy一份源数据指针表,新的修改会写入到新的快照卷;

  4. 因为源数据指针表上有上次快照的修改和新增数据,所以显然快照之间的关系是链式,恢复后面的快照需要源数据以及全面的快照作为基础

    优点:写性能基本没有损耗,只是修改指针

    缺点:没有一个完整的快照卷,其快照之间的关系是链式,如果快照层级越多,进行快照恢复时的系统开销会比较大;

COW和ROW优缺点及使用场景

  1. COW最大的问题是对写性能有影响。第一次修改原卷,需要复制数据,因此需要多一次读写的数据块迁移过程。这个就比较要命,应用需要等待时间比较长。但原卷数据的布局没有任何改变,因此对读性能没有任何影响。

  2. ROW在传统存储情况下最大的问题是对读性能影响比较大。ROW写的时候性能基本没有损耗,只是修改指针,实现效率很高。但多次读写后,原卷的数据就分散到各个地方,对于连续读写的性能不如COW。这种方式比较适合Write-Intensive(写密集)类型的存储系统

  3. 但是,在分布式存储的情况下,ROW的连续读写的性能会比COW差吗?就不一定了。正常情况下,读写性能的瓶颈一般是在磁盘上。分布式存储情况下,业务层看到连续存储,实际上是分布在不同的服务器的不同硬盘中,数据越是分散,系统性能越高。而ROW把原数据打散之后,对性能反而有好处。

  4. 因此,整体情况下ROW基本上是对读写性能影响较小,因此是业界发展方向。

快照另外一个非常重要的特性是快照一致性组(Consistency Group),这个功能就是支持多个LUN或者叫卷volume同时做快照,保证数据的一致性。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: