cow 与 row 快照技术

参考文章

    https://blog.csdn.net/m0_49864110/article/details/123989551
    https://support.huawei.com/enterprise/zh/doc/EDOC1100196336/
    https://www.cnblogs.com/ryan1999/p/16526145.html

系统性概述

快照的特点:
    1、瞬时生成:存储系统可以在几秒钟内生成一个快照,获取元数据的一致性副本。
    2、占用空间少:所以即使源数据量很大,也只会占用很少的存储空间(增量的)。
    3、快照依赖于源数据:当源数据损坏后,快照就不能正常使用了(镜像不依赖于源数据,是独立存在的)。

快照常用术语:(文件可以分为元数据和源数据)
    元数据:meta data 存放对文件的描述信息(文件属性、权限、标识数据块的位置等)。
    源数据:存放实际的数据。

file

COW快照介绍

COW快照工作原理

# COW|COFW:
    1、名词解释:(copy on write| copy on first write)写时拷贝|首次写时拷贝。
    2、主要应用场景:存储LUN、裸设备等。
    3、简要工作逻辑:先将要更改的数据,读取并复制到快照卷中,再对源卷进行改写操作。(快照卷只依赖源卷)

# COW涉及的表项概念
1、快照LUN(快照卷)
    对源LUN创建快照后,逻辑上生成的数据副本。

2、COW数据空间
    2.1、何时生成:快照生成并激活后,存储系统会在源LUN所在的存储资源池中动态划分出来的一部分空间
    2.2、作用:该空间用来保存写前拷贝数据(也就是快照的数据);
    2.3、COW分为两个区域
        COW Mate区域:同一个源LUN下所有快照共用的元数据区(存放元数据的更改情况-通过共享映射表实现)
        COW Data区域:用于存放写源LUN时产生的写前拷贝数据(即存放快照时的源数据)

3、共享映射表
    3.1、何时回用到:在数据写入/修改和数据回滚的时候需要用到(用于存放元数据的更改情况)
    3.2、共享映射表存放位置:COW Meta区域中
    3.3、作用:记录源LUN上关于快照的数据是否更改
    3.3、在数据写入时:
            为1表示此数据相比于快照数据有所更改,等到再次写入数据时就可以直接覆盖;
            为0表示当前数据与快照数据相比无更改,在下次写入数据时需要进行写时复制。
    3.4、在数据回滚时:
            为0表示无更改,就不需要恢复;
            为1表示更改了,需要进行恢复。

4、独享映射表
    4.1、作用:记录快照LUN的数据是否有更改.(写快照LUN时所产生的源数据与其在快照LUN中存放元数据位置的映射关系)
    4.2、存放位置:存放在每个快照LUN的Meta区域中.

COW快照初始化状态

file

COW快照-源卷写入过程(第一次新增数据)

file

COW快照-源卷写入过程(第一次删除数据)

file

COW快照-源卷写入过程(第一次|第二次变更数据)

file

COW快照-快照卷写入过程(修改数据)

file

COW快照-快照卷写入过程(新增数据)

file

COW快照-快照卷读取过程(分快照卷无数据|快照有数据)

file
file

COW快照-回滚过程(读数据过程)、删除过程

file

COW快照卷演示实验

# 创建20G的lvm卷,并挂载
    lvcreate -n data -L 20G test
    mkfs.ext4 /dev/test/data
    mount /dev/test/data /root/data/

# 为该lvm卷创建一个20M的快照,并查看COW空间大小
    lvcreate -s -n snaphost01 -L 20M /dev/test/data

    [root@C20240311019468 ~]# lvdisplay /dev/test/snaphost01 
    --- Logical volume ---
    LV Path                /dev/test/snaphost01
    LV Name                snaphost01
    VG Name                test
    LV UUID                Y2EiGz-4TS1-hZGt-tkVW-3LcA-YhWi-BzjjMk
    LV Write Access        read/write
    LV Creation host, time C20240311019468, 2024-03-11 11:54:03 +0800
    LV snapshot status     active destination for data
    LV Status              available
    # open                 0
    LV Size                20.00 GiB
    Current LE             5120
    COW-table size         20.00 MiB  # 注意这里COW只有20M,一旦用尽,快照就失效了
    COW-table LE           5
    Allocated to snapshot  0.06%      # 快照卷本身只占COW空间的0.06%(因为快照卷本身也在cow空间内)
    Snapshot chunk size    4.00 KiB
    Segments               1
    Allocation             inherit
    Read ahead sectors     auto
    - currently set to     8192
    Block device           252:3

# 再创建一个30G的快照(源卷本身才20G空间),并查看cow空间大小
    lvcreate -s -n snaphost02 -L 30G /dev/test/data

    [root@C20240311019468 ~]# lvdisplay /dev/test/snaphost02
    --- Logical volume ---
    LV Path                /dev/test/snaphost02
    LV Name                snaphost02
    VG Name                test
    LV UUID                7tKPBh-PEVr-VdYg-leR9-ewEB-kWNX-D9f4eK
    LV Write Access        read/write
    LV Creation host, time C20240311019468, 2024-03-11 12:59:00 +0800
    LV snapshot status     active destination for data
    LV Status              available
    # open                 0
    LV Size                20.00 GiB
    Current LE             5120
    COW-table size         20.08 GiB    # COW空间最大只能是源卷大小(我们多给10G没用的)
    COW-table LE           5141
    Allocated to snapshot  0.01%
    Snapshot chunk size    4.00 KiB
    Segments               1
    Allocation             inherit
    Read ahead sectors     auto
    - currently set to     8192
    Block device           252:5

ROW快照介绍

ROW快照工作原理

ROW:
    1、名词解释:(redirect on write)写时重定向。
    2、主要应用场景:虚拟机磁盘、数据库增量备份(适用于分布式场景下的写密集型--业界普遍采用  分布式存储+ROW)
    3、简要工作逻辑:将源卷数据保护起来,将更改的新数据写入快照卷,有链式依赖。

file

ROW快照初始化状态

file

ROW快照-数据写入过程

file

ROW快照-数据读取过程

file

ROW快照-快照删除、快照回滚过程

file

ROW和COW的区别

# COW的优缺点
    优点:COW在进行快照操作之前不会占用任何的存储资源
    缺点:
        1、当修改源数据时,会发生三次读写操作(读源数据、将源数据写入到快照卷、将新数据写入到源数据卷);
        2、无法得到完成的物理副本,快照卷的COW可能只保留了源数据卷的部分原始数据;
        3、当快照卷的数据(也就是COW的数据)超过创建快照时的数据,该快照就会失效(通常会设置自动扩容阈值,避免该问题)

# ROW的优缺点
    优点:
        1、不会降低源数据卷的写性能(源数据卷创建快照后的写操作会被重定向,所有的写操作都被重定向到新卷中;
        2、所有的快照卷数据都保留在只读的源数据卷中)
    缺点:
        1、没有一个完整的快照卷(ROW的快照卷数据映射表保存的是源数据卷的原始副本);
        2、单机读写性能下降。
COW写时拷贝 ROW写时重定向
读区别 一次(源卷记录的是最新的数据,可以直接读源卷) 查映射表(根据需求选择是读源卷还是快照卷)
写区别 二次(先拷贝再写入) 一次(直接写入到快照存储空间)
删除快照区别 直接删除快照空间即可 需要进行回滚操作
存储空间大小 源卷1G,使用300M,COW空间最大只能是1G,快照卷空间最大也只能是1G, 不设限
适合场景 读密集型应用,或者对存储设备容易出现写热点的应用 写密集型应用,在分布式存储中,读性能会更高
声明:本文为原创,作者为 辣条①号,转载时请保留本声明及附带文章链接:https://boke.wsfnk.com/archives/1302.html
谢谢你请我吃辣条谢谢你请我吃辣条

如果文章对你有帮助,欢迎点击上方按钮打赏作者

最后编辑于:2024/3/11作者: 辣条①号

目标:网络规划设计师、系统工程师、ceph存储工程师、云计算工程师。 不负遇见,不谈亏欠!

暂无评论

发表回复

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

arrow grin ! ? cool roll eek evil razz mrgreen smile oops lol mad twisted wink idea cry shock neutral sad ???

文章目录