低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

EBS Direct API – 以编程方式访问 EBS 快照内容

2019 年 12 月 11 日

EBS Direct API – 以编程方式访问 EBS 快照内容

EBS 快照酷极了! 您可以从 AWS 管理控制台以交互方式创建它们:


您可以使用命令行 (create-snapshot) 或调用 CreateSnapshot 函数来创建它们,并且可以使用 Data Lifecycle Manager (DLM) 来设置自动快照管理。


关于快照的种种


快照存储在 Amazon Simple Storage Service (S3) 中,可根据需要用于快速创建新的 EBS 卷。卷的第一个快照包含该卷上每个 512K 数据块的副本。后续快照仅包含自上一个快照后发生更改的数据块。快照的增量性质使它们具有很高的成本效益,因为(从统计意义上来说)EBS 卷上的许多数据块不会经常更改。


我们来看一个简单的示例。假设我以 8 个数据块(这小于允许的最小大小,但毕竟这只是个例子)创建和格式化 EBS 卷,并向其中复制一些文件,然后创建我的第一个快照 (Snap1)。快照包含所有数据块,大体如下:


然后我添加更多文件,删除一个文件,创建第二个快照 (Snap2)。快照仅包含我创建第一个快照后修改的数据块,如下所示:


我进行了一些更改,并创建了第三个快照 (Snap3):


请记住,目录、文件和基础数据块之间的关系由文件系统控制,并且在实际情况下通常非常复杂。


好的,现在我有了三个快照,并希望使用它们创建一个新卷。每次创建 EBS 卷的快照时,都会创建对先前快照的内部引用。这样,CreateVolume 可以查找每个数据块的最新副本,如下所示:


EBS 在后台为我管理所有细节。例如,如果我删除 Snap2,则快照中数据块 0 的副本也会被删除,因为 Snap3 中的副本较新,但是 Snap2 中数据块 4 的副本会成为 Snap3 的一部分:


顺便一提,向后引用链(Snap3 到 Snap1,或 Snap3 到 Snap2 再到 Snap1)被称为快照集的世系。


现在,我已经解释了所有内容,我还应该告诉您,您通常不需要了解这些,而是可以专注于创建、使用和删除快照!


但是…


访问快照内容


今天,我们推出了 EBS Direct API,如上所述,它们使您可以访问快照内容。这些 API 专为备份/恢复、灾难恢复以及数据管理产品和服务的开发人员设计,将使他们能够更快、更经济高效地交付成果。


新的 API 使用数据块索引(0、1、2 等)来标识快照中的具体 512K 数据块。索引以加密令牌的形式返回,这仅对 GetSnapshotBlock API 有意义。我在下面将这些令牌表示为 T0、 T1 等。这些 API 当前可处理 512K 字节的数据块,并计划在将来支持更多的块大小。


此类 API 包括:


ListSnapshotBlocks – 将给定快照中的所有数据块标识为加密令牌。对于 Snap1,它将返回 [T0, T1, T2, T3, T4, T5, T6, T7];对于 Snap2,它将返回 [T0, T4]。


GetSnapshotBlock – 返回数据块的内容。如果该数据块是加密快照的一部分,它将以解密形式返回。


ListChangedBlocks – 返回同世系的两个快照之间发生更改的数据块的列表,作为加密令牌。对于 Snap2,它将返回 [T0, T4];对于 Snap3,它将返回 [T0, T5]。


就像我说的那样,这些 API 是为解决一个特殊但非常重要的用例而构建的。话虽如此,我现在非常有信心,48 小时内会有意想不到的新消息弹出(请随时与我分享)!


现已推出


EBS Direct API 现已推出,美国东部(弗吉尼亚北部)、美国西部(俄勒冈),欧洲(爱尔兰)、欧洲(法兰克福)、亚太地区(新加坡)和亚太地区(东京)区域已能使用;未来数周内将推广到其余区域。调用 List 和 Get API 需要付费,而当您调用 GetSnapshotBlock 访问作为加密快照一部分的数据块时,会收取普通 KMS 费用。


– Jeff;


作者介绍:


Jeff Barr


AWS 首席布道师; 2004 年开始发布博客,此后便笔耕不辍。


本文转载自 AWS 技术博客。


原文链接:https://amazonaws-china.com/cn/blogs/china/new-programmatic-access-to-ebs-snapshot-content/


2019 年 12 月 11 日 15:30153

评论

发布
暂无评论
发现更多内容

DevSecOps:好处和挑战

啸天

敏捷开发 运维自动化 DevSecOps 应用安全

快的不止一点点!阿里强推的“Redis速成手册”也太香了吧

互联网架构师小马

Java 数据库 nosql redis 缓存

【小菜学网络】MAC地址详解

fasionchan

网络编程 网络协议 TCP/IP

不要用+""代替强转

BerryMew

【TF2系列笔记】Day01:在VSCode中创建开发环境

IT蜗壳-Tango

七日更 TF2

【计算机内功修炼】五:从小白到高手,你需要理解同步与异步

码农的荒岛求生

异步 同步 回调函数

Spring 源码学习 14:initApplicationEventMulticaster、onRefresh 和 registerListeners

程序员小航

spring 源码 源码阅读

区块链未来三年内将广泛落地

CECBC区块链专委会

区块链

京东搜索排序在线学习的 Flink 优化实践

Apache Flink

flink

Docker真的被Kubernetes放弃了吗?

蔡超

Docker Kubernetes 云原生

城市生态的机器人革命

脑极体

《适用于初学者的Python》

计算机与AI

“直男”审美?不存在的!来看看 “攻城狮”对一款IoT App的UI改造吧!

IoT云工坊

android App 物联网 IoT sdk

【Mysql-InnoDB 系列】锁定读

程序员架构进阶

MySQL innodb 锁机制 28天写作

工信部:推动区块链等与工业互联网的融合技术研究

CECBC区块链专委会

大数据

Kubernetes介绍篇:是什么?为什么要用?

xcbeyond

Docker Kubernetes 容器 28天写作 Kubernetes从入门到精通

HBase 底层原理详解(深度好文,建议收藏)

五分钟学大数据

大数据 HBase

醒醒!Python已经支持中文变量名啦!

Python猫

Python

LeetCode题解:105. 从前序与中序遍历序列构造二叉树,递归+数组切割,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

智慧building之一 智能家居

张老蔫

28天写作

枪手博弈 - 在强者的世界,弱者的生存法则

石云升

博弈论 28天写作 枪手博弈

区块链:行业应用即将“引爆”

CECBC区块链专委会

区块链

三分钟快速掌握 maven插件

田维常

maven

28 天带你玩转 Kubernetes-- 第六天(玩转 Docker命令)

Java全栈封神

Docker k8s 28天写作 docker命令

[4/28]保障产品高质量交付业务价值

俊毅

Spring Boot 中的MVC支持

武哥聊编程

Java mvc springboot SpringBoot 2 28天写作

全网独家首发!—份破解大厂面试官千层套路的算法+数据结构笔记!真是太TM重要了

比伯

Java 架构 面试 程序人生 算法

玩一玩Linux常见命令第二篇

程序员的时光

程序员 28天写作

RocketMQ中的事务消息

废材姑娘

RocketMQ

精选算法面试-数组(二分查找)

李孟

面试 算法 数组 28天写作

案例研究之聊聊 QLExpress 源码 (五)

小诚信驿站

刘晓成 小诚信驿站 28天写作 QLExpress源码 聊聊源码

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

EBS Direct API – 以编程方式访问 EBS 快照内容-InfoQ