快照技术的基本介绍

目录

一、概述

二、名词解释

三、镜像分离

四、COW

五、ROW

六、参考


一、概述

        全球网络存储工业协会 SNIA(Storage Networking Industry Association)对快照(Snapshot)的定义是:关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像

        快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品。

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

                全量快照:镜像分离

                增量快照:写时拷贝(Copy On Write);写时重定向(Redirect On Write)

        额外的,容灾领域还有一个 CDP(持续数据保护) 快照技术。CDP 分为真 CDP (True CDP) 和准 CDP (Near CDP) 两类。真 CDP 处不间断地监控数据变化,生成瞬间快照,可以恢复到过去任意时间点,缺点是开销大。准 CDP 持续的记录数据变化,按一定时间频率生成快照,优点是开销小,更实用。

二、名词解释

        如下图所示,数据卷由数据索引与实际数据组成。数据索引与数据是逻辑上是独立的,数据索引记录了数据的组织形式及其属性,通过数据索引可以找到数据的实际存储地址,进而对该数据进行读写等操作。

        数据卷分为原始卷与快照卷。原始卷是操作系统内的物理卷或虚拟卷,快照卷是创建快照后生成的原始卷副本。

三、镜像分离

        镜像分离快照技术在快照时间点到来之前,首先要为原始卷创建并维护一个完整的物理镜像卷:同一数据的两个副本分别保存在由原始卷和镜像卷组成的镜像组上。

        打快照时,镜像分离,镜像卷转化为快照卷,获得一份快照。

        注意一个镜像卷自始自终只能生成一个快照,镜像卷转换为快照卷后,与原始卷的数据同步即终止。此时快照时间点就是镜像分离时的时间点。该快照拥有恢复需要的全部数据。

        如果需要创建多个快照,由两种方法:

        (1)镜像卷转快照卷后,将快照卷完整的备份走,备份完成后再换为镜像卷,与原始卷数据同步;

        (2)生成多个镜像卷,每个镜像卷都可生成一个快照。

        分离镜像特征总结:

        (1)空间占用:每一个快照需要与源数据(卷)相同的存储空间;

        (2)创建过程:每一个快照都需要完全的数据同步;

        (3)系统影响:源数据的读操作不受影响,但写操作受数据同步影响;

四、COW

        COW称为“写时复制”快照技术。

        对数据卷打快照之后,快照时间点就是数据卷的可恢复时间点,要能保证该快照时间点数据恢复的幂等性,即无论原始数据卷数据怎么变动、无论该快照恢复多少次,每次都能成功将原始卷恢复到该快照时间点。

        下面具体看 COW 的实现思路。

        1、对原始卷创建快照时,快照卷中只会保存原始卷中的数据索引,不会备份真实的数据。此时原始卷与快照卷的数据索引均指向同一份实际数据,二者数据保持一致。

        2、快照创建完成后,因为快照卷中只保存了索引数据,后期若原始卷发生数据变动,快照时间点就无法恢复到快照时间点了,因为实际数据已经变动了。

        所以为了保证快照时间点数据的一致性,快照卷还需要一个 COW 数据空间,用于保存快照时间点对应的原始数据(只保存原始卷发生修改的实际数据,未修改的可以继续使用数据索引找到),而且在原始卷使用过程中要一直维护快照卷(同一份数据只要维护一次,因为第一次的时候快照卷已经保存了原始数据了, 所以 COW 也经常被描述为 Copy On First Write)。

        3、特别,特别注意,当对原始卷进行修改时,修改前的数据副本会记录在最新的快照卷中,之前旧的快照卷数据不再变动。因为他们已经记录了相对于后一个快照时间点的所有数据变动,只要他们后一个快照卷能够保持快照时间点数据的一致性,旧的快照卷就可以基于前一个快照时间点和自身记录的差异数据恢复到自身的快照时间点。

        4、恢复快照时间点时,通过数据索引,对没有改变过的块直接从原始卷读取;对已经改变并被复制的块则从快照卷读取(可以在快照中设置映射表用于判断数据是否被修改)。存在多个快照时,会最新的快照开始依次恢复到指定的快照时间点。

上面就是基本的实现原理,下面说一说应用场景,也就是 COW 方式的优缺点:

(1)优点:快照操作只备份当前原始卷的数据索引,速度非常快,占用空间小(只保留发生修改的数据);

(2)优点:适用于对读操作频繁的卷快照

(3)中:较适用于对存在写热点的卷快照(首次修改要多一次备份操作)

(4)缺点:原始卷使用过程中,需要一直维护最新快照时间点的数据一致性

(5)缺点:未保留完整数据副本,恢复快照时间点依赖原始卷和之后的快照。

(6)缺点:不适用于写操作过于离散与频繁的卷, IO 开销很大,影响对卷正常的读写性能。而且,如果原始卷修改的数据过多,可能超过快照卷预留的COW空间,此时快照会失效。

五、ROW

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

        如果对一个原始卷做了多次快照,就产生了一个快照链,原始卷始终挂载在快照链的头部,虚拟机的写操作全落盘到最末端的快照卷中。

        该特征导致了一个问题,就是如果一共做了 10 次快照,那么在恢复到最新的快照点时,则需要通过合并 10 个快照卷来得到一个完整的最新快照点数据;如果是恢复到第 8 次快找时间点,那么就需要将前 8 次的快照卷合并成为一个完整的快照点数据。

        从这里可以看出 ROW 的主要缺点是没有一个完整的快照卷,其快照之间的关系是链式的,如果快照层级越多,进行快照恢复时的系统开销会比较大。删除快照链中的快照节点,需要对快照数据进行整合。

        但 ROW 的优势在于其解决了 COW 快照写两次的问题,所以就写性能而言,ROW 无疑是优于 COW 的。

ROW优缺点:

        优势:不会降低源数据卷的写性能。源数据卷创建快照后的写操作会被重定向,所有的写 I/O 都被重定向到新卷中,而所有快照卷数据(旧数据)均保留在只读的源数据卷中。因此更新源数据只需要一个写操作,解决了 COW 写两次的性能问题。对于分布式系统来说,正是由于数据的分散,进而提供了并发读的机会。所以在分布式存储上,ROW的连续读写性能比COW好。

        劣势:没有一个完整的快照卷。ROW 的快照卷数据映射表保存的是源数据卷的原始副本,而源数据卷数据指针表保存的则是更新后的副本。因此,当创建了多个快照时,会产生一个快照链,使原始数据的访问快照卷和源数据卷数据的追踪以及快照的删除将变得异常复杂。在恢复快照时会不断地合并快照文件,造成较大的系统开销。单机读性能下降。由于采用了重定向写,使得原本连续的数据分散到了磁盘中,连续写变成了随机写,造成读性能下降。

        综上,COW的快照方式更适合于读密集型应用,或者对存储设备容易出现写入热点(对于小范围内的数据频繁写入)的应用,因为数据的修改都局限在小范围内,对同一份数据进行多次写只会出现一次复制操作。ROW 适合写密集的应用,同时由于 ROW 重定向写的特性,在分布式存储中,读性能会更高。

六、参考

COW、ROW快照技术原理 - 华为 (huawei.com)

运维日记丨带你了解快照技术 - 墨天轮 (modb.pro)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/809171.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广佛站点导航助手小程序产品使用说明书

一、产品简介 广佛站点导航助手小程序是一款专为广佛地区用户设计的地铁导航工具。通过获取用户的实时位置信息,小程序能够迅速定位并展示离用户最近的三个地铁站点。用户可以通过本小程序轻松查找地铁站点,规划出行路线,提高出行效率。 二、…

Win11 WSL2 install Ubuntu20.04 and Seismic Unix

Win11系统,先启用或关闭Windows功能,勾选“适用于Linux的Windows子系统”和“虚拟机平台”两项 设置wsl默认版本为wsl2,并更新 wsl --list --verbose # 查看安装版本及内容 wsl --set-default-version 2 # 设置wsl默认版本为wsl2 # 已安装…

Debian 安装 Docker

Debian 安装 Docker。 这是官方安装文档 Install Docker Engine on Debian | Docker DocsLearn how to install Docker Engine on Debian. These instructions cover the different installation methods, how to uninstall, and next steps.https://docs.docker.com/engine/i…

计算机网络——抓取icmp包

前言 本博客是博主用于记录计算机网络实验的博客,如果疏忽出现错误,还望各位指正。 抓包 我们是用Wireshark工具来进行抓包的。 ​在安装时候一路打勾安装即可,不过最后那个因为是英文,一定要看清,点了立即重启&am…

mars3d.MaterialType.Image2修改配置面状:图片2的speed数值实现动画效果说明

摘要: mars3d.MaterialType.Image2修改配置面状:图片2的speed数值实现动画效果说明 前提: 1.在示例中,尝试给mars3d.MaterialType.Image2材质的图片加上speed参数,实现动画效果,但是没有看到流动效果说明…

去掉el-date-picker弹窗默认回显当前月份的方法

打开日期弹窗,默认会显示当前月份,如图 会发现加了穿透::v-deep 样式也不生效 .el-month-table .today .cell {color: pink;font-weight: 400;}要让 popper-class“xclass” :append-to-body“false” 这俩配合着使用…

界面设计【1】-项目的UI设计css

引言: 本篇博客对简单的css html界面设计做了简要介绍 这篇博客主要就是介绍了做横向项目中,CSS界面设计与优化。 界面设计【1】-项目的UI设计css 1. 什么是css?2. css编程demo3. 可视化效果 1. 什么是css? CSS是层叠样式表(Cascading S…

每日一题 — 将 x 减到 0 的最小操作数

思路: 题目要求是让我们从数组的最左端和最右端进行操作,这样的话解题的难度大大提升,我们可以用 正难则反 的思想: 题目中要求是减去数组中的数刚好等于X,我们可以转换成 数组中某一段的和等于 数组的总长减去X(sum -…

Godot插值、贝塞尔曲线和Astar寻路

一、插值 线性插值是采用一次多项式上进行的插值计算&#xff0c;任意给定两个值A和B&#xff0c;那么在A和B之间的任意值可以定义为&#xff1a;P(t) A * (1 - t) B * t&#xff0c;0 < t < 1。 数学中用于线性拟合&#xff0c;游戏应用可以做出跟随效果&#xff08;…

vivado FFT IP核使用

matlab生成正弦函数 采样点数为512&#xff0c;每个采样点位宽为16位&#xff0c;其中最高位为符号为&#xff08;0正&#xff0c;1负&#xff09;。换句话说&#xff0c;如果用ROM存储正弦函数的coe文件的话&#xff0c;ROM ip核的位宽设置为16&#xff0c;深度为512. clear…

Vue ElementUI el-input-number 改变控制按钮 icon 箭头为三角形

el-input-number 属性 controls-position 值为 right 时&#xff1b; <el-input-number v-model"num" controls-position"right" :min"1" :max"10"></el-input-number>原生效果 修改后效果 CSS 修改 .el-input-number…

STM32电机控制SDK介绍

目录 一、STM32 MC SDK包含以下项目&#xff1a; 二、电机控制应用流程 三、 MC 软件应用程序设计工作流程 四、STM32 MC固件 五、PMSM FOC 库 一、STM32 MC SDK包含以下项目&#xff1a; STM32 MC firmwareSTM32 MC WorkbenchSTM32 MC Board ManagerSTM32 Motor PilotTh…

项目从 Mysql切换 PostgreSQL 改造及踩坑记录

0、前言 原项目框架 SpringBoot MybatisPlus Mysql 1、切换流程 1.1、项目引入postgresql驱动包 由于我们要连接新的数据库&#xff0c;理所当然的要引入该数据库的驱动包&#xff0c;这与mysql驱动包类似 <dependency><groupId>org.postgresql</groupId…

MongoDB常用命令总结

《【快捷部署】017_MongoDB&#xff08;6.0.14&#xff09;》 讲述了如何快捷部署MongoDB&#xff0c;今天我们来总结一下MongoDB常用的shell命令。 一、基本操作&#xff08;CRUD&#xff09; #创建集合&#xff0c;名为 users db.createCollection("users")# 插入…

免费搭建幻兽帕鲁服务器(Palworld免费开服教程)

随着互联网技术的不断发展和普及&#xff0c;网络游戏已经成为了人们休闲娱乐的重要方式之一。而在众多网络游戏中&#xff0c;幻兽帕鲁以其独特的游戏设定和玩法&#xff0c;吸引了大量玩家的关注。为了满足广大玩家的需求&#xff0c;本文将介绍如何免费搭建幻兽帕鲁服务器&a…

Green Hills 自带的MULTI调试器查看R7芯片寄存器

Green Hills在查看芯片寄存器时需要导入 .grd文件。下面以R7为例&#xff0c;演示一下过程。 首先打开MULTI调试器&#xff0c;如下所示View->Registers&#xff1a; 进入如下界面&#xff0c;选择导入寄存器定义文件.grd&#xff1a; 以当前R7芯片举例&#xff08;dr7f7013…

Python+Appium自动化测试(ios+Android)

一、软件安装 安装清单&#xff1a; JDKPythonnode.jsandroid-sdk(作者通过Android Studio安装)iOS-deploybrewlibimobiledevice依赖库ideviceinstallercarthage依赖库 appium-doctor&#xff08;安装后可在命令行中通过命令:appium-doctor检查还少啥&#xff09; WebDriverAg…

应急响应-战中反制对抗上线CSGoby蚁剑Sqlmap等安全工具

知识点 战中-反制-安全工具篇CS反制(有版本限制) Goby反制&#xff08;有版本限制&#xff0c;新版goby已修复&#xff09; Antsword反制(有版本限制&#xff0c;别人也不一定用蚁剑) AWVS反制(有版本限制&#xff0c;在awvs 10版本存在&#xff09; BURP反制(有版本限制&…

基于python的天气数据可视化系统、Flask框架,爬虫采集天气数据,可视化分析

系统介绍 基于Python的天气预测可视化分析系统&#xff0c;该项目的主要流程和功能包括&#xff1a; 数据获取&#xff1a; 使用Python的pandas库从2345天气网&#xff08;http://tianqi.2345.com/Pc/GetHistory&#xff09;抓取山东省各市区县在2021年至2023年间的天气历史数…

C语言 | Leetcode C语言题解之第21题合并两个有序链表

题目&#xff1a; 题解&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/typedef struct ListNode ListNode; struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {/…