以下是针对存储快照技术 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. B1006 换个格式输出整数

    让我们用字母 B 来表示"百".字母 S 表示"十",用 12-n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数.例如 ...

  2. 利用Word制作Kindle用的6寸PDF电纸书

      在word中以自己喜好的字体.字形和行间距等排版,完成后设置布局: 页面(纸张)大小自定义为宽X高=9cm X 12cm 页边距设为4个0.5cm 不要插入页码,占空间 另存为PDF 导入kind ...

  3. .Net Web API 002 Program和WeatherForecastController

    创建工程后,工程主要包含了Program.cs和WeatherForecastController.cs两个代码文件,还有一个WeatherForecast.cs文件,该文件定义的天气情况数据结构替, ...

  4. 18-利用GPU训练

    1. 利用GPU训练(方式一) ① GPU训练主要有三部分,网络模型.数据(输入.标注).损失函数,这三部分放到GPU上. import torchvision import torch from t ...

  5. 快速创建SQL Server 链接服务器

    SQL Server链接服务器简介 SQL Server提供链接到另一个服务器的选项.这通常被用来连接到其他SQL Server数据库,但它也可以被用来连接到一个Microsoft Access数据库 ...

  6. 【图书预售】清华大学出版社出版的《JMeter核心技术、性能测试与性能分析》开始预售了

    <JMeter核心技术.性能测试与性能分析>是一本由清华大学出版社出版的图书,JMeter是一款基于Java的压力测试工具,可用于对服务器.网络或对象模拟巨大的负载,在不同压力类别下测试它 ...

  7. Java源码分析系列笔记-17.ReentrantReadWriteLock

    目录 1. ReentrantReadWriteLock是什么 2. 非公平ReentrantReadWriteLock 2.1. 是什么 2.2. 怎么使用 2.3. 源码分析 2.3.1. uml ...

  8. 【攻防世界】Web | wife_wife 详细题解WP

    [攻防世界] | Web | wife_wife详细题解WP 进入题目环境,首先进入sign up创建一个admin用户,下方有勾选 is admin,打上勾 随便填写Invite Code,进行抓包 ...

  9. Windows Server 2025激活教程

    Windows Server 如何把评估版升级改为正式版本并激活 微软官方并不提供server系统的正式版本,只提供测试的评估版本,那么我们怎么修改为正式版本呢? 1.确认版本 开始----运行--- ...

  10. 解决Xamarin.Android 软键盘弹出挡住Edittext的问题

    Window.SetSoftInputMode(SoftInput.AdjustPan);