以下是针对存储快照技术 COW(Copy-On-Write)和 ROW(Redirect-On-Write)的通俗图解说明:


​一、什么是存储快照?​

存储快照是某一时刻数据的“照片”,记录数据的瞬时状态。它通过指针和元数据管理数据块,而非完整复制所有数据,因此创建速度极快。


​二、COW(写时复制)​

​工作原理​

  1. ​初始状态​

    • 原始数据块(A/B/C)存储在硬盘中。
    • 快照创建时,系统生成一个快照表(空表)。
    [原始数据]      [快照表]
    A → 数据A | 空
    B → 数据B | 空
    C → 数据C | 空
  2. ​修改数据时​

    • 当修改数据块 ​​B​​ → ​​B'​​:

      1. ​复制原始数据​​:将原始B复制到快照表。
      2. ​修改原始数据​​:直接在原位置写入B'。
    [原始数据]      [快照表]
    A → 数据A | B → 数据B(原版)
    B → 数据B' |
    C → 数据C |
  3. ​读取快照​

    • 快照会优先从快照表中读取被修改过的旧数据(如B),未修改的数据(A/C)仍从原位置读取。

​特点​

  • ​优点​​:快照读取性能高(直接读原数据或快照表)。

  • ​缺点​​:频繁写入时性能下降(每次修改都要复制旧数据)。


​三、ROW(写时重定向)​

​工作原理​

  1. ​初始状态​

    • 原始数据块(A/B/C)存储在硬盘中。
    • 快照创建时,系统生成一个快照指针表(指向原数据)。
    [原始数据]      [快照指针表]
    A → 数据A | A → 数据A
    B → 数据B | B → 数据B
    C → 数据C | C → 数据C
  2. ​修改数据时​

    • 当修改数据块 ​​B​​ → ​​B'​​:

      1. ​写入新位置​​:将B'写入到新位置(如D)。
      2. ​更新指针​​:原始数据B保持不变,新数据B'指向新位置。
    [原始数据]      [新数据]      [快照指针表]
    A → 数据A D → 数据B' | A → 数据A
    B → 数据B | B → 数据B
    C → 数据C | C → 数据C
  3. ​读取快照​

    • 快照始终通过指针表读取原始数据(B),而新数据(B')由当前系统直接访问。

​特点​

  • ​优点​​:写入性能高(无需复制旧数据)。

  • ​缺点​​:快照读取可能变慢(需跳转多个指针)。


​四、对比总结​

​特性​ ​COW​ ​ROW​
​写入性能​ 修改时需复制旧数据,性能较低 直接写入新位置,性能高
​读取性能​ 快照读取快(直接访问) 快照读取可能慢(指针跳转)
​适用场景​ 频繁读取快照(如数据库恢复) 频繁写入(如虚拟机磁盘操作)

​五、生活化比喻​

  • ​COW​​:像在图书馆修改一本书,修改前必须复印旧版本存档,新版本在原位置覆盖。

  • ​ROW​​:像在图书馆新增一本书的修订版,旧书保留在原书架,新书放到新位置并更新索引。

通过这种方式,小白也能轻松理解两种技术的核心差异!

存储快照技术 COW(Copy-On-Write)和 ROW(Redirect-On-Write)的更多相关文章

  1. 再谈 COW、ROW 快照技术

    目录 目录 前言 快照与备份的区别 快照技术 增量快照之 COW 增量快照之 row 前言 在经过了一段时间的实践之后,再次回顾 COW/ROW 快照技术的实现原理,温故而知新. 快照与备份的区别 传 ...

  2. ROW/COW 快照技术原理解析

    NOTE:ROW/COW 最新更新请跳转<再谈 COW.ROW 快照技术> 目录 目录 快照与备份的区别 Snapshot 快照技术 全量快照 增量快照 COW 写时拷贝快照技术 ROW ...

  3. 阿里云PolarDB及其共享存储PolarFS技术实现分析(上)

    PolarDB是阿里云基于MySQL推出的云原生数据库(Cloud Native Database)产品,通过将数据库中计算和存储分离,多个计算节点访问同一份存储数据的方式来解决目前MySQL数据库存 ...

  4. vmware vSphere克隆与快照技术

    通过Web vCenter我们可以很容易的对虚拟机进行管理,通过克隆技术或创建模板,我们可以迅速的创建虚拟机,我们也可以通过快照技术去捕获虚拟机的一些状态,比如说虚拟机的内存.设置或者虚拟磁盘的情况等 ...

  5. 从零开始入门 K8s | 应用存储和持久化数据卷:存储快照与拓扑调度

    作者 | 至天 阿里巴巴高级研发工程师 一.基本知识 存储快照产生背景 在使用存储时,为了提高数据操作的容错性,我们通常有需要对线上数据进行 snapshot ,以及能快速 restore 的能力.另 ...

  6. linux杂谈(十七):iscsi存储分离技术

    1.iscsi简单介绍 ​ ​iSCSI利用了TCP/IP的port 860 和 3260 作为沟通的渠道.透过两部计算机之间利用iSCSI的协议来交换SCSI命令,让计算机能够透过快速的局域网集线来 ...

  7. MongoDB Wiredtiger存储引擎实现原理——Copy on write的方式管理修改操作,Btree cache

    转自:http://www.mongoing.com/archives/2540 传统数据库引擎的数据组织方式,一般存储引擎都是采用 btree 或者 lsm tree 来实现索引,但是索引的最小单位 ...

  8. 超级内存NVDIMM:下一代数据中心存储关键技术

    1.背景介绍 连接到互联网的设备数量不断增长,到2015年,将达到150亿之多.而数据中心的压力也随之增加,唯有采用新的技术才能进一步提升其效率和性能. 相比于HDD传统硬盘,固态硬盘大大增加了I/O ...

  9. 存储可靠性技术之 --RAID

    云计算项目交付时,不可避免的需要考虑存储磁盘采用何种RAID.例如:我们的项目工程师可能会建议大家连接克隆虚拟机系统盘组RAID 10,完整复制虚拟机数据盘 使用RAID5或者RAID6等,那么RAI ...

  10. 万亿级日志与行为数据存储查询技术剖析(续)——Tindex是改造的lucene和druid

    五.Tindex 数果智能根据开源的方案自研了一套数据存储的解决方案,该方案的索引层通过改造Lucene实现,数据查询和索引写入框架通过扩展Druid实现.既保证了数据的实时性和指标自由定义的问题,又 ...

随机推荐

  1. MFC窗口闪烁问题

    本文引自:<VC窗口闪烁问题的解决> 概述 一般的windows复杂的界面需要使用多层窗口而且要用贴图来美化,所以不可避免在窗口移动或者改变大小时候出现闪烁. 闪烁产生的原因 原因一: 如 ...

  2. 通义灵码2.5+qwen3——节假日抢票不用愁,基于12306-MCP实现个人火车票智能查询小助手!

    ​ 在日常生活中,12306 是中国铁路售票系统的官方平台.为了提升购票效率.自动化查询余票信息以及获取车站代码等功能,我们希望通过使用智能体编程方式,结合 MCP(Model-as-a-Servic ...

  3. Java中XML相关

    XML的两种解析方式: 1.DOM解析:将标记语言一次性读入内存并在内存中生成一颗DOM树(适用于服务端) 优点:操作方便,可以对文档进行CURD操作 缺点:由于它是一次性全部读入内存的所以占用内存空 ...

  4. 关于java中动态加载字节码的多种方法

    关于java中动态加载字节码的多种方法 在反序列化漏洞中:经常会遇到TemplatesImpl或BCEL相关的代码,它们就是用来动态加载恶意字节码执行任意命令的; 以及理解这些机制也是理解内存马工作原 ...

  5. Kubernetes控制器-Deployment

    Kubernetes控制器-Deployment 我们已经知道ReplicaSet控制器是用来维护集群中运行的Pod数量的,但是往往在实际操作时候,我们反而不去直接使用RS,而是使用更上层的控制器,比 ...

  6. Druid监控页面配置

    springboot的yml配置文件添加如下配置: spring: # 数据库连接相关配置 datasource: druid: filters: stat,wall stat-view-servle ...

  7. kubernetes实用插件管理

    插件链接:https://kubernetes.io/zh-cn/docs/tasks/extend-kubectl/kubectl-plugins/

  8. 使用 SpringBoot 集成 WebService [需要身份验证]

    使用 JDK 自带的 wsimport 工具生成实体类 1.1 创建身份验证文件(用于 Webservice 身份验证-auth.txt # 格式 http://账号:密码@wsdl地址 # 案例 h ...

  9. linux环境下的redis安装

    选择一个安装目录 cd /usr/src/redis/ 下载redis,下载路径的版本号可以改 wget https://download.redis.io/releases/redis-3.2.0. ...

  10. Java源码分析系列笔记-5.AQS

    目录 1. 是什么 2. 如何使用 3. 原理分析 3.1. 构造方法 3.1.1. 由头尾节点和代表锁状态的字段组成 3.1.2. Node是个双向队列节点 3.2. 获取锁的逻辑 3.2.1. 尝 ...