你真的会 snapshot 吗? - 每天5分钟玩转 OpenStack(163)

​这是 OpenStack 实施经验分享系列的第 13 篇。

 

instance snapshot 操作可用于备份或者将 instance 保存为新的 image。如果在生产系统中执行 snapshot 操作,必须确保此操作快速且安全。这里有两个关键点:

 

  1. 快速。 
    为保证数据的一致性,snapshot 时需要 pause instance,操作完后再 resume。在这个过程中 instance 是无法对外服务的,为了减少对业务的影响,我们希望 snapshot 越快越好。
     

  2. 安全。 
    即数据一致性,snapshot 出来的 image 不能有没落盘的数据,能够正常启动。所以通常在执行 snapshot 前要 pause instance,暂停所有的 IO 操作。

 

默认的 snapshot

 

默认配置下的 snapshot 操作是否能满足快速和安全这两个条件呢?

 

snapshot 是对 instance 的镜像文件(系统盘)做快照,镜像文件位于计算节点 /var/lib/nova/instances/<instance id>/disk。在第036篇中我们详细讨论了 snapshot 的执行步骤:

 

  1. pause instance
     

  2. 执行 qemu-img convert 命令复制 disk 文件,生成快照文件
     

  3. resume instance
     

  4. 将快照文件上传到 Glance

其中第 1 步保证了 安全,而是否 快速 取决于第 2 步要花多长时间。qemu-img convert 的执行时间取决于 disk 及其 backing 文件的大小,通常 instance 系统盘都以 G 为单位,所以第 2 步花费的时间是分钟级别的。

 

让生产系统暂停几分钟通常是不能被接受的,所以默认的 snapshot 操作没法做到 快速。

 

解决方案是什么呢?

 

不靠谱的 live snapshot

 

Nova 很早就提出了 live snapshot 的替代方案,具体见官网 http://docs.openstack.org/ops-guide/ops-user-facing-operations.html#live-snapshots

 

live snapshot 的原理是:做快照时不 pause instance,直接执行 qemu-img convert。也就是去掉第 1 和 第 3 步。

 

这样虽然 快速 条件满足了,业务不会受到影响。但由于没有 pause instance,有可能出现快照过程中不断有新数据写进 disk 文件的情况,很难保证数据的一致性,结果 安全 又成了问题。

 

官网文档建议:如果要做 live snapshot,用户必须自己保证数据的一致性,比如做快照前确保所有数据已经落盘,并且不会有新数据写进来。个人觉得,live snapshot 基本上没法在生产中使用。

 

那到底有没有既 安全 又 快速 的方案呢?

 

真正的解决方案

 

默认 snapshot 的问题在于 qemu-img convert 耗时太长,而耗时太长的原因是 instance 的系统盘是文件,拷贝文件本身就是一个耗时的操作。真正的解决方案是:

 

让 instance 从 cinder volume 启动,利用 storage provider 自己的 snapshot 技术实现快速复制。

 

现代存储系统(无论开源还是商业存储)基本上都提供了 volume 的 snapshot 功能,而这个 snapshot 是基于指针的,不会真正拷贝数据,所以非常快,通常一瞬间就完成,对业务几乎没有影响。所以如果 instance 是从 cinder volume 启动的,那么做快照的时候 OpenStack 就会使用 storage provider 的 snapshot 完成操作。这就实现了既 安全 又 快速。

 

下面我们使用流行的分布式存储系统 ceph 来演示这个过程。这里省略了 ceph 作为 cinder backend 的配置方法,如果有兴趣可以参考官网 http://docs.ceph.com/docs/master/rbd/rbd-openstack/

 

boot from volume

 

部署 instance 时指定创建 volume。
 

 

 

 

这里我们选择的 image 是 xenial(Ubuntu 16.04),大小为 2.20 GB。确保 Create New Volume 选项为 Yes。Volume Size 为 3(大于 image 2.20 GB)。执行部署后,OpenStack 会完成如下工作:

 

  1. 在 ceph 中创建一个 3 GB 的 volume。

  2. 将 image 数据拷贝到该 volume。

  3. instance 从该 volume 启动。

在 volume 管理界面可以看到这个新创建的 volume。
 

 

 

ubuntu-test 就是我们部署的 instance。接下来对 ubuntu-test 执行 snapshot 操作。

 

 

 

 

 

操作瞬间完成!

 

 

 

注意到快照 snap-test 的 Size 是 0 字节,这是因为它真正的存放位置在 cehp。通过 snap-test 部署出来的 instance 直接就是 boot from volume 的。

 

boot from volume 其实是 OpenStack 部署 instance 的最佳实践,instance 的启动盘和数据盘都由 cinder 管理,而且做快照和做备份都很方便。

 

下期预告

 

到这里,实施经验分享部分就先告一段落。按照之前的计划,接下来是容器技术的内容。不过最近收到很多同学的留言,希望讲一讲 cloud-init 的工作原理和相关应用。

 

instance 定制化其实是个非常重要的内容,在生产环境中的需求很大。目前最主流的方案就是 cloud-init,当然仅仅 cloud-init 是不够的,还得需要 OpenStack 服务的支持。前面之所以没有讨论,主要是因为这个主题会同时涉及 nova 和 neutron 两大模块,要求的知识和技能比较综合,不过现在则是个非常好的时机。

 

接下来 CloudMan 会系统讲解 instance 定制化这个主题,从原理到实践力求把它讲透。只是容器部分不得不再多等一下了,见谅见谅。

 

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

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

相关文章

输入序列连续的序列检测

输入序列连续的序列检测 题目描述 请编写一个序列检测模块&#xff0c;检测输入信号a是否满足01110001序列&#xff0c;当信号满足该序列&#xff0c;给出指示信号match。 模块的接口信号图如下&#xff1a; 模块的时序图如下&#xff1a; timescale 1ns/1ns module seque…

哪些信用卡取现0手续费?

经常使用信用卡的朋友都知道&#xff0c;信用卡取现一般是要手续费的&#xff0c;而且取现之后不能享受免息期&#xff0c;这点让人很不爽。有时候我们经常会急用钱&#xff0c;这时候用信用卡取现确实很方便&#xff0c;可以解决燃眉之急&#xff0c;能帮上不少忙&#xff0c;…

如何申请到利息低的贷款?

经常有朋友问我&#xff0c;如何才能申请到利息低的贷款&#xff1f;针对这个问题&#xff0c;很多时候我不能给予一个明确的回答。很多朋友之前可能都没有接触过贷款&#xff0c;所以对贷款本身并不是很了解&#xff0c;更有的朋友以为贷款利息可以像商品一样讨价还价&#xf…

含有无关项的序列检测

含有无关项的序列检测 题目描述 请编写一个序列检测模块&#xff0c;检测输入信号a是否满足011XXX110序列&#xff08;长度为9位数据&#xff0c;前三位是011&#xff0c;后三位是110&#xff0c;中间三位不做要求&#xff09;&#xff0c;当信号满足该序列&#xff0c;给出指…

Metadata Service 最高频的应用 - 每天5分钟玩转 OpenStack(164)

实现 instance 定制化&#xff0c;cloud-init&#xff08;或 cloudbase-init&#xff09;只是故事的一半&#xff0c;metadata service 则是故事的的另一半。两者的分工是&#xff1a;metadata service 为 cloud-init 提供自定义配置数据&#xff0c;cloud-init 完成配置工作。…

如何获取并分析Bluetooth HCI层Command Packet和Event Packet包

首先&#xff0c;如何来确定什么样的包为Command/Event Packet呢&#xff1f; 我们知道&#xff0c;通过HCI Packet包括四种&#xff0c;即Command&#xff0c;Event&#xff0c;ACL和SCO/eSCO&#xff0c;对应到MS-Stack中的定义&#xff0c;即为COMMAND_PACKET &#xff0c;E…

Metadata Service 架构详解 - 每天5分钟玩转 OpenStack(165)

下面是 Metadata Service 的架构图&#xff0c;本节我们详细讨论各个组件以及它们之间的关系。 nova-api-metadata nova-api-metadata 是 nova-api 的一个子服务&#xff0c;它是 metadata 的提供者&#xff0c;instance 可以通过 nova-api-metadata 的 REST API 来获取 metada…

hi3531交叉编译环境arm-hisiv100nptl-linux搭建过程

安装SDK 1、Hi3531 SDK包位置 在"Hi3531_V100R001***/01.software/board"目录下&#xff0c;您可以看到一个 Hi3531_SDK_Vx.x.x.x.tgz 的文件&#xff0c; 该文件就是Hi3531的软件开发包。 2、解压缩SDK包 在linux服务器上&#xff08;或者一台装有linux的PC上&…

不重叠序列检测

不重叠序列检测 题目描述 请编写一个序列检测模块&#xff0c;检测输入信号&#xff08;a&#xff09;是否满足011100序列&#xff0c; 要求以每六个输入为一组&#xff0c;不检测重复序列&#xff0c;例如第一位数据不符合&#xff0c;则不考虑后五位。一直到第七位数据即下一…

首付贷换了马甲,又重现江湖了

据《每日经济新闻》报道&#xff0c;广州某小贷公司通过无抵押信用贷款&#xff0c;一个月入万元左右的普通市民可以获得30万元贷款&#xff0c;高者可获得50万元无抵押信用贷款用于垫付首付款。首付贷以“消费贷”的名义&#xff0c;换了马甲又重现江湖了。根据《每日经济新闻…

获取 metadata 的完整例子 - 每天5分钟玩转 OpenStack(166)

我们将通过实验详细分析 instance 从 nova-api-metadata 获取信息的完整过程。 环境介绍 1. 一个 all-in-one 环境&#xff08;多节点类似&#xff09;。 2. 已创建 neutron 网络 test_net&#xff0c;DHCP 已启动。在这个 metadata 实验中&#xff0c; test_net 的 type 不重…

输入序列不连续的序列检测

输入序列不连续的序列检测 题目描述 请编写一个序列检测模块&#xff0c;输入信号端口为data&#xff0c;表示数据有效的指示信号端口为data_valid。当data_valid信号为高时&#xff0c;表示此刻的输入信号data有效&#xff0c;参与序列检测&#xff1b;当data_valid为低时&am…

这些贷款合同陷阱你知道多少?

贷款合同可以是正式的贷款协议书&#xff0c;可以包括收条&#xff0c;也可以是个人借条。无论是哪一种方式&#xff0c;都有可能存在陷阱。我们先来看一个案例&#xff1a;王先生去找一家贷款机构办理贷款&#xff0c;因为王先生的资质比较好&#xff0c;很多贷款机构都希望能…

一个人到底申请几张信用卡最合适?

一个到底有几张信用卡最合适呢&#xff1f;这个问题估计很多朋友都没有好好的想过&#xff0c;以至于信用卡办办办&#xff0c;结果信用卡一大推&#xff0c;一不小心就走上了不归路。我们先来看下一个网友的真实情况&#xff1a;“每个月信用卡利息都要还好多&#xff0c;工资…

Fedora20配置tftp服务器

http://bbs.52dtv.com/thread-25392-1-1.html TFTP&#xff08;Trivial File Transfer Protocol&#xff0c;简单文件传输协议&#xff09;是TCP/IP协议族中的一个用来在客户机与服务器之间进行简单文件传输的协议&#xff0c;提供不复杂、开销不大的文件传输服务。端口号为69…

数据串转并电路

数据串转并电路 题目描述 实现串并转换电路&#xff0c;输入端输入单bit数据&#xff0c;每当本模块接收到6个输入数据后&#xff0c;输出端输出拼接后的6bit数据。本模块输入端与上游的采用valid-ready双向握手机制&#xff0c;输出端与下游采用valid-only握手机制。数据拼接…

获取 metadata 过程详解 - 每天5分钟玩转 OpenStack(167)

接上节&#xff0c;启动 neutron router 后 instance c1 终于拿到了 metadata, 从下面 c1 的启动日志可知&#xff1a; c1 所认为的 metadata 服务地址是 169.254.169.254&#xff0c;端口为 80。我们在 c1 中尝试访问一下 metadata。 确实能够拿到 metadata。但我们知道 nova-…

月息2%的贷款算高利贷吗?

对于贷款的朋友来说&#xff0c;贷款利息应该是最关心的一个话题了&#xff0c;大家都希望贷款的利息越低越好&#xff0c;如果免息那当然是最好的了&#xff01;但是市面上大部分接触到的小贷公司利息基本都是在月息2%以上&#xff0c;有高的甚至可以达到月息5%以上。这个利息…

数据累加输出

数据累加输出 题目描述 实现串行输入数据累加输出&#xff0c;输入端输入8bit数据&#xff0c;每当模块接收到4个输入数据后&#xff0c;输出端输出4个接收到数据的累加结果。输入端和输出端与上下游的交互采用valid-ready双向握手机制。要求上下游均能满速传输时&#xff0c;…

第一张信用卡,该选哪家的?

网友A:贷款教授你好&#xff0c;说一下我的情况&#xff0c;本人25岁工作2年&#xff0c;没有信用卡想办一张。但是现在的信用卡五花八门&#xff0c;也不知道怎么选择。所以请你帮我支支招。网友A:再说一下要求吧&#xff1a;1.不想第一张信用卡就给年费2.超市、购物、看电影、…