Cinder数据卷备份原理与实践

一、背景 1.1 数据保护技术概述 快照(Snapshot)、复制(Replication)、备份(Backup)是存储领域中最为常见的数据保护技术。快照用于捕捉数据卷在某一个时刻的状态,用户可以随时回滚到这个状态,也可以基于该快照创建新的数据卷。备份就是对数据进行导出拷贝并传输到远程存储设备中。当数据损坏时,用户可以从远端下载备份的数据,手动从备份数据中恢复,从而避免了数据损失。快照类似于git的commit操作,我们可以随时reset/checkout到任意历史commit中,但一旦保存git仓库的磁盘损坏,提交的commit信息将永久丢失,不能恢复。而备份则类似于git的push操作,即使本地的数据损坏,我们也能从远端的git仓库中恢复。简而言之,快照主要用于快速回溯,而备份则用于容灾,还能避免误删除操作造成数据丢失。数据复制则类似于mysql的master/slave主从同步,通常只有master支持写操作,slave不允许用户直接写数据,它只负责自动同步master的数据,但一旦master出现故障,slave能够提升为master接管写操作。因此复制不仅提供了实时备份的功能,还实现了故障自动恢复(即高可用)。 ...

March 30, 2017 · 17 min · 8370 words · Ringi Lee

cinder-volume服务如何实现AA高可用

1 何谓"锁" 锁是操作系统用来实现进程同步和数据一致性的常用手段之一,能够保证同一时刻只有一个进程访问互斥资源以及数据的完整性。计算机中的锁,根据运行环境可以大体分为以下三类: ...

March 16, 2017 · 11 min · 5324 words · Ringi Lee

Ceph RBD mirror功能介绍

1.Ceph RBD mirror简介 Ceph采用的是强一致性同步模型,所有副本都必须完成写操作才算一次写入成功,这就导致不能很好地支持跨域部署,因为如果副本在异地,网络延迟就会很大,拖垮整个集群的写性能。因此,Ceph集群很少有跨域部署的,也就缺乏异地容灾。Ceph RBD mirror是Ceph Jewel版本引入的新功能,支持两个Ceph集群数据同步,其原理非常类似mysql的主从同步机制,前者基于journaling,后者基于binlog,二者都是基于日志回放完成主从同步的。 ...

January 24, 2017 · 7 min · 3113 words · Ringi Lee

聊聊Nova Compute Driver的那些趣事

OpenStack设计准则 OpenStack是一个开源云计算平台项目,旨在为公共及私有云的建设与管理提供软件的开源实现。可扩展性和弹性是OpenStack设计的准则之一,即OpenStack的各个组件以及组件内部的模块都应该是可插拔的,并且可以随意的增加插件而不需要修改已有的接口。Driver机制就是其中的一个很好的例子,Nova通过不同的driver支持不同的hypervisor,Cinder通过不同的driver支持不同的存储后端,Neutron通过各种agent支持不同的网络类型,Sahara通过各种plugin支持不同的Hadoop发行版等等,在OpenStack几乎处处存在这样的影子。所有的driver都是可配置的,通过配置不同的driver,各个组件就能注册不同的驱动,从而支持不同的资源类型。 ...

January 07, 2017 · 8 min · 3540 words · Ringi Lee

深圳黑客松之旅

OpenStack黑客松活动是我一直神往的活动,因为这个活动不仅能够让自己在黑客味笼罩的环境中全身心融入bug fix状态,还能有机会与OpenStack各个项目的PTL、Core等大牛面对面交流(平时只能通过IRC或者邮件联系)。 ...

December 03, 2016 · 4 min · 1828 words · Ringi Lee

OpenStack虚拟机保护的几种方法

1.虚拟机保护的重要性 虚拟机是OpenStack中最重要的角色之一,我们接触比较多的Nova服务就是通过虚拟机方式提供计算虚拟化服务。除此之外,还有很多高层服务也是完全依赖于Nova服务提供的虚拟机,比如Sahara大数据服务、Magnum容器编排服务、Manila文件共享服务以及Trove数据库服务等,这些服务底层都是基于虚拟机实现的。虚拟机的保护至关重要,不仅承载着用户活动的业务,还保存着用户的重要数据。虚拟机意外丢失不仅可能导致用户业务中止,还可能导致重要数据的丢失,甚至造成重大生产事故,虚拟机的保护不容忽视! ...

November 09, 2016 · 5 min · 2397 words · Ringi Lee

OpenStack Nova组件对象模型以及数据库访问机制

1. 背景介绍 在OpenStack G版以前,Nova的所有服务(包括nova-compute服务)都是直接访问数据库的,数据库访问接口在nova/db/api.py模块中实现,而该模块只是调用了IMPL的方法,即该模块只是一个代理,真正实现由IMPL实现,IMPL是一个可配置的动态加载驱动模块,通常使用Python sqlalchemy库实现,对应的代码为nova.db.sqlalchemy.api: ...

November 01, 2016 · 8 min · 3704 words · Ringi Lee

OpenStack使用Ceph存储后端创建虚拟机快照原理剖析

1.背景知识 1.1 Ceph基础知识 Ceph是一个开源的统一分布式存储系统,最初由Sage Weill于2007年开发,其目标是设计基于POSIX的无单点故障的分布式存储系统,同时提了统一存储系统下的高可扩展的对象存储、块存储以及文件系统存储。其中rbd块存储目前最常见的应用场景之一是作为OpenStack的共享分布式存储后端,为OpenStack计算服务Nova、镜像服务Glance以及块存储服务Cinder提供共享的统一存储服务。RBD官方描述为: ...

October 25, 2016 · 8 min · 3759 words · Ringi Lee

OpenStack服务心跳机制和状态监控

1. 背景介绍 众所周知OpenStack是一个分布式系统,由分布在不同主机的各个服务组成来共同协同完成各项工作。以计算服务Nova为例,包括的基本组件为: ...

October 24, 2016 · 10 min · 4569 words · Ringi Lee

配置高效科学Linux开发环境

记得2010年刚读大二,在大神@btw的指导下折腾Linux,从那时开始一直使用Linux学习和工作,折腾了不少Linux发行版,其中包括Ubuntu、Debian、Mint、Gentoo、LFS、CentOS等,现在已经完全离不开Linux环境,沉陷在Linux的工作方式中,思维方式也完全Linux化,遇到问题时第一直觉是想有没有什么命令加上管道组合或者正则匹配来解决,而不是想到需要打开什么面板点击什么按钮。当然我并不是终端命令的偏执狂,同时也喜欢酷炫的UI界面,比如Java开发,我个人偏向于使用一款方便友好的IDE,而没有选择在终端下调用vim,尽管可以通过各种vim插件实现类似IDE的功能。但C、python我却更偏向于使用vim,而没有使用任何IDE,即使用了也会想想能不能调成vim模式,比如pycharm、sublime等。 ...

October 03, 2016 · 19 min · 9105 words · Ringi Lee