剖析OpenStack存储

作者:陈海洋 来源:IBM

 

Openstack 通过5 年多的发展,变得越来越庞大。这也是为了满足更多不同的需求,体现出开源项目灵活快速的特性。本文不是关于Openstack 存储相关组件的配置,而是以OpenStack H版本为例,介绍存储入门的一些必要理论知识。

 

OpenStack 存储技术

OpenStack 其实有三个与存储相关的组件,这三个组件被人熟知的程度和组件本身出现时间的早晚是相符的,按熟悉程度排列如下:

Swift—提供对象存储(Object Storage),在概念上类似于 Amazon S3 服务,不过 swift 具有很强的扩展性、冗余和持久性,也兼容 S3 API。对象存储支持多种应用,比如复制和存档数据、图像或视频服务,存储次级静态数据,开发数据存储整合的新应用,存储容量难以估计的数据,为Web 应用创建基于云…

详细内容

OpenStack Swift源码导读之——可插拔的后端设备实现

作者:童燕群

Swift作为一个存储的具体实现出现在OpenStack中,与Cinder的定位有差别,这导致Swift的兼容并包性不够强。必须基于XFS 文件系统来存储数据?显然Swift也希望能将数据存储到更多的后端设备中,这样Swift可以与具体的XFS文件系统解耦,作为独立的存储软件存在。这 能使得Swift存储的构建更加灵活,同时也能吸引更多的存储厂商投入到其怀抱中。

Swift提供了一种简单机制来实现后端存储设备的pluggable——可插拔的后端。这篇文章想探讨一下该机制。在亚特兰大峰会上面,这一特性是Swift的热门话题之一,对于亚特兰大OpenStack峰会涉及Swift的话题这里有汇总:链接

 

看起来很有意思的创举,细看起代码来,其实挺简单的。有句话说,代码之外,了无秘密。Swift对于存储介质的要求其实挺简单的,提供读取,写入接口,…

详细内容

对象存储(Object-based Storage)概述

作者:@刘爱贵  博客:http://blog.csdn.net/liuaigui

什么是对象存储?多次在不同场合被问起这个问题,于是就想写篇小综述文章。网上查找资料时,找到几篇不错的资料,简单整理一下,供自己和大家参考。什么是对象存储(OSD)?
存储局域网(SAN)和网络附加存储(NAS)是目前两种主流网络存储架构,而对象存储(Object-based Storage)是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备(Object-based Storage Device)简称OSD1999年成立的全球网络存储工业协会(SNIA)的对象存储设备(Object Storage Device)工作组发布了ANSI的X3T10标准。总体上来讲,对象存储(Object-Based Storage, OBS)综合了NAS和SAN的优点,同时具有SAN的高速直接访问和NAS的分…

详细内容

为 Hadoop 的存储层增加对 OpenStack Swift 的支持

在 Hadoop 中有一个抽象文件系统的概念,它有多个不同的子类实现,由 DistributedFileSystem 类代表的 HDFS 便是其中之一。本文将探讨通过编写 Swift 适配器,将 OpenStack Swift 对象存储作为 Hadoop 的底层存储,为 Hadoop 的存储层增加对 OpenStack Swift 的支持,最终达到功能验证(Functional POC)的目标。本文基于 Hadoop 1.0.4 和 OpenStack Swift 1.7.4。

 

背景

在 Hadoop 中有一个抽象文件系统的概念,它有多个不同的子类实现,由 DistributedFileSystem 类代表的 HDFS 便是其中之一。在 Hadoop 的 1.x 版本中,HDFS 存在 NameNode 单点故障,并且它是为大文件的流式数据访问而设计的,不适…

详细内容

分布式存储系统(GlusterFS,Swift,Cassandra)设计对比

作者:@liuhong1123

几年下来,前前后后接触过几个存储系统了,感觉接触多了,发现不同系统在设计的时候大都采用相似的理论,因此就梳理下。

分布式存储比较

总结:

1、 文件定位:三者均采用hash算法,另外amazon的Dynamo也是采用一致性哈希;还有采用中心路由的定位方式:如HBASE,HDFS。哈希算法的特点是读写速度比较快,但是如果增减机器会造成数据移动,采用一致性哈希算法并引入虚节点的机制可以大大减少数据的移动。中心路由机制增减节点不会造成数据移动(但是为了数据均衡,生产中常常还是会执行负载均衡操作,从而也会引起数据块移动)。

2、 数据恢复方式:GlusterFS采用了与Zookeeper类似选举leader节点的算法方式,一般情况下,该算法没什么问题,但在具体实现中,GlusterFS在某些特殊情况下可能出现脑裂,即GlusterFS不能选举出来哪份…

详细内容

Openstack Swift 原理、架构与 API 介绍

——Openstack Swift 开源云存储技术解析

OpenStack Swift 开源项目提供了弹性可伸缩、高可用的分布式对象存储服务,适合存储大规模非结构化数据。本文将深入介绍 Swift 的基本设计原理、对称式的系统架构和 RESTful API。

背景与概览

Swift 最初是由 Rackspace 公司开发的高可用分布式对象存储服务,并于 2010 年贡献给 OpenStack 开源社区作为其最初的核心子项目之一,为其 Nova 子项目提供虚机镜像存储服务。Swift 构筑在比较便宜的标准硬件存储基础设施之上,无需采用 RAID(磁盘冗余阵列),通过在软件层面引入一致性散列技术和数据冗余性,牺牲一定程度的数据一致性来达到高可用性和可伸缩性,支持多租户模式、容器和对象读写操作,适合解决互联网的应用场景下非结构化数据存储问题。

此项目是…

详细内容

Openstack Cinder创建卷错误排错过程

作者: @熊崽Kevin

 

由于项目中使用的OpenStack一直停留在F版本,因此在操作系统(Ubuntu 12.04 LTS)不断更新的情况下,难免会出现各种莫名其妙的问题。

安装完Openstack,各子模块均运行正常,开始功能测试,发现cinder创建volume命令发起之后后台报错:

 

[python] view plaincopy在CODE上查看代码片派生到我的代码片

  1. 2014-01-04 09:43:10 WARNING cinder.scheduler.manager [req-668ac624-60d5-488c-9e89-5cb915dc6c72 d6c0ca6fec41473f8ac53a8da4c3c38a c804f639bf4c47a29bb9aac195f4744c] Failed to schedule_create_…

详细内容

小试iSCSI多路径

iscsi用于提供块存储,它也是c/s结构的程序,服务端叫target, 客户端叫initator。
服务端:
1,安装, sudo yum install scsi-target-utils
2,模拟一块块设备,注意,直接使用裸设备即可,不需要使用文件系统对其格式化
$ dd if=/dev/zero of=/bak/images/cinder-volume.img bs=1M count=2048
$ sudo losetup -f –show /bak/images/cinder-volume.img
/dev/loop0
3, 配置, iqn(iSCSI Qualified Name)格式是:“iqn”+“年月”+“.”+“域名的颠倒”+“:”+“设备的具体名称”
vi /etc/tgt/targets.conf
<target iqn.2013-10.c…

详细内容

OpenStack里的三种存储

OpenStack有三个与存储相关的组件,这三个组件被人熟知的程度和组件本身出现时间的早晚是相符的,按熟悉程度排列如下:

Swift——提供对象存储 (Object Storage),在概念上类似于Amazon S3服务,不过swift具有很强的扩展性、冗余和持久性,也兼容S3 API

Glance——提供虚机镜像(Image)存储和管理,包括了很多与Amazon AMI catalog相似的功能。(Glance的后台数据从最初的实践来看是存放在Swift的)。

Cinder——提供块存储(Block Storage),类似于Amazon的EBS块存储服务,目前仅给虚机挂载使用。

(Amazon一直是OpenStack设计之初的假象对手和挑战对象,所以基本上关键的功能模块都有对应项目。除了上面提到的三个组件,对于 AWS中的重要的EC2服务,OpenStack中是N…

详细内容

分布式数据库与网络分区

在OpenStack中,数据库是主要系统“状态”的主要来源。大部分Core Projects都使用传统关系型数据库作为系统数据和状态的存储,另外如Ceilometer使用了MongoDB,还有其他Incubator Projects使用了Redis作为队列或者状态存储。数据库给OpenStack提供了状态组件并把状态的“共享”问题交给了数据库,因此解决OpenStack的扩展问题实际上就是解决使用的数据库本身的扩展问题。比如OpenStack HA Solution最令人头疼的就是传统关系数据库或者其他数据存储的扩展问题,数据库扩展问题的根源是其本身不支持分布式和良好的扩展性,而这个根源又会衍生出分布式系统最大的噩梦–“网络分区”。

下面会分析”网络分区“给数据库扩展带来的问题,同时在OpenStack组件中如何规避和解决。

一致性

现代软件系统由一系列“组件”通过异步、不可靠的…

详细内容