[原]OpenStack入门以及一些资料之(一、cinder,swift存储)

2014-4-29阅读1144评论0

注:本文内容均来自网络,我只是在此做了一些摘抄和整理的工作,来源均有注明。


存储入门


存储技术

DAS(Direct Attached Storage):将存储设备通过SCSI线缆或FC(FiberChannel)直接连接到服务器上。

NAS(Network Attached Storage):按照TCP/IP协议进行通信,以文件的I/O方式进行数据传输。它拥有自己的文件系统,通过网络文件系统NFS或通用文件系统CIFS(common Internet file system)对外提供文件访问服务。

SAN(Storage Area Network):SAN是一种通过网络方式连接存储设备和应用服务器的架构,这个网络专用于服务器和媰设备支架的访问。SAN代表的是一种专用于存储的网络架构,与协议和设备类型无关。有FC SAN和IP SAN两种方案。


存储方式

对象存储,基于文件系统,通过文件系统来存储访问数据。

块存储,是以块为基本单元的存储方式,其传输不存在数据打包/解包的过程,可提供更高的传输性能

文件存储设备通过以太网与服务器连接。服务器通过NFS、CIFS、HTTP、FTP等协议进行数据访问。数据通过以太网传输,有打包/解包的过程。


iSCSI

iSCSI是网络存储标准,其核心是在TCP/IP网络上传输SCSI协议,用TCP/IP报文、和ICSI报文封装SCSI报文,使得SCSI命令和数据可以在普通一台网络上进行传输。


Raid(redundantarray of independent disks,独立磁盘冗余数组),不同的raid等级在增加数据可靠性以及增加存储器(群)读写性能间取得平衡。

RAID 0,将数据按磁盘的个数来进行分段。速度最快,没有冗余,如果一个磁盘(物理)损坏,则所有的数据都会丢失。

RAID 1,两组以上的N个磁盘相互作备份,在一些多线程操作系统中能有很好的读取速度,但写入的速度有微小的降低。可靠性最高。

RAID 2,是RAID 0 的改良版,以汉明码的方式将数据进行编码后分区为独立的比特,写入硬盘。因为在数据中加入了错误修正码(ECC,Error Correction Code),所以数据整体的容量会比原始数据大一些,RAID 2至少要三台磁盘驱动器方能运作。

RAID 3,4,5,6

RAID 1+0,先镜射在分区数据,再将所有硬盘分为两组,视为是RAID 0 的最低组合,然后将这两组各视为RAID 1运作。

RAID0+1则是与之相反,先分区再将数据镜射到两组硬盘。它将所有的硬盘分为两组,变成RAID 1的最低组合,而将两组硬盘各自视为RAID 0 运作。

性能上,RAID 0+1比RAID 1+0有着更快的读写速度。

可靠性上,当RAID1+0有一个硬盘受损,其余三个硬盘会继续运作。RAID 0+1 只要有一个硬盘受损,同组RAID 0的另一只硬盘亦会停止运作,只剩下两个硬盘运作,可靠性较低。

因此,RAID 10远较RAID 01常用,零售主板绝大部份支持RAID0/1/5/10,但不支持RAID 01。

LVM(logic volumemanagement)逻辑卷管理:

LVM是建立在磁盘分区和文件系统之间的一个逻辑层,来为文件系统屏蔽下层磁盘文件分区布局,提供一个逻辑的盘卷,再在盘卷上来建立文件系统。

物理卷(physical volume,PV),指硬盘分区,也可以是整个硬盘或已创建的软RAID,是LVM的基本存储设备,与普通物理存储介质的区别是该设备包含有LVM相关的管理参数。

卷组(volume group,VG),卷组是由一个或多个物理卷所组成的存储池,在卷组上能创建一个或多个“LVM分区”(逻辑卷)。

逻辑卷(logical volume,LV),LVM的逻辑卷类似于非LVM系统中的硬盘分区,它建立在卷组智商,是一个标准的块设备,在逻辑卷上可以建立文件系统。

物理块(physical extent,PE),物理卷以大小相等的物理块为存储的基本单位,同时也是LVM寻址的最小单元。

逻辑块(logical extent,LE),逻辑卷以大小相等的逻辑块为存储的基本单位,在同一个卷组中,LE的大小和PE是相等的,并且一一对应。

卷组描述区域(VolumeGroupDescription Area,VGDA),和磁盘将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷的VGDA中。VGDA包括以下内容:PV描述符、VG描述符、LV描述符、和一些PE描述符。系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作室,就会根据VGDA建立的应设计值来访问实际的物理位置。

创建逻辑卷步骤

1, 创建分区

2, 创建物理卷

3, 创建卷组

4, 激活卷组

5, 创建逻辑卷

6, 创建文件系统


虚拟化镜像格式——raw:是一种原生的二进制镜像格式,具备高度可移植性。可以直接挂在到物理机;也可以转换成其他格式的虚拟机镜像(如果其他格式需要转换,有时候还需要它作为中间格式);占用的存储空间可以由记录的数据决定,可以在原盘追加空间;不支持snapshot(可以使用版本管理软件对raw格式的文件做版本管理从而达到snapshot的能力)。

其他一些格式:cow,qcow,qcow2,vmdk(VMware),vdi(virtualBox),ami(amazon)

参考:存储基础入门

虚拟化存储入门

逻辑卷管理(LVM)入门

---------------------------------------------------------------------------

OpenStack块存储服务——cinder:目前,cinder对本地存储和NAS的支持比较不错,可以提供完整的Cinder API V2支持,而对于其他类型的存储设备,Cinder的支持会受到一些限制。

volumetype是卷的一种标识,各个OpenStack的发行者可根据自身对系统的约束来定义卷类型的使用。

参考:Openstack之Cinder服务初探

Cinder(G版)中的volume type

---------------------------------------------------------------------------


计算节点的存储主要用来给虚拟机提供系统盘空间(和cinder的后端存储不同),所以我们一般会把虚拟机的磁盘目录(默认是/var/lib/nova/instances)作为单独的挂载点,提供一个较大的空间,依赖可以满足创建虚拟机对存储空间的需求,而来可以满足虚拟机迁移的需求。关于计算节点上的存储方案;一般有以下三种:

1,使用独立的共享存储

这种方案需要一个独立的共享存储节点,典型的是使用NFS服务器,意味着虚拟机和它的存储不在一个节点上,对应的,对这两类节点的要求也不一样:计算节点可能需要更多地cpu和内存,而存储节点需要关注磁盘IO性能。

优势:

1、降低计算节点维护成本,不影响虚拟机当前的运行状态

2、计算节点的宕机不会引起虚拟机的磁盘数据丢失

3、虚拟机迁移功能效率更高

4、共享存储可以用作他用

劣势:

1、需要额外的存储节点

2、一些重负载的虚拟机可能会影响其他虚拟机的性能,无论是否在同一节点

3、因为需要通过网络访问存储资源,性能不会很好

2,使用统一共享存储

不使用独立的存储节点(典型的如Ceph、sheepdog等),而是将计算节点上的存储连接起来形成一个存储池,提供共享、高可靠、高可用的存储特性。

优势:

1、不需要额外的存储节点

2、充分利用分布式存储的优势

劣势:

1、因为中间层的存在,会失去对磁盘的逻辑管理

2、对虚拟机数据的恢复变得复杂

3、这种方式仍然需要从网络访问存储资源,降低性能

3,本地存储

最常见的方式,不需要额外的配置。

优势:

1、重负载的虚拟机不会对其他节点的虚拟机造成影响

2、因为是直接磁盘IO,性能是最好的(配合SSD效果更好)

劣势:

1、无共享,意味着一个节点宕机会造成该节点上虚拟机数据不可用

2、虚拟机迁移变得复杂

参考:计算节点上的存储

---------------------------------------------------------------------------


Cinder


0、简介及基本概念


OpenStack 到 Folsom 版本有比较大的改变,其中之一就是将之前在 Nova 中的部分持久性块存储功能(Nova-Volume)分离了出来,独立为新的组件 Cinder。主要核心是对卷的管理,允许对卷、卷的类型、卷的快照进行处理。它并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商在 Cinder 中实现其驱动支持以与 OpenStack 进行整合。在CinderSupportMatrix中可以看到众多存储厂商如 NetAPP、IBM、SolidFire、EMC 和众多开源块存储系统对 Cinder 的支持。Havana 版本中 Cinder 新增特性如下:

  • Volume-Resize:在可用情况下调整卷大小。
  • Volume-Backup-To-Ceph:现在卷可以备份到 Ceph 集群中。
  • Volume-Migration:现在不同用户间可以透明地转移和交换卷。
  • QoS:增加限速相关的元信息供 Nova 和其 Hypervisor 使用。
  • More-Drivers:更多的存储厂商加入和完善了自己的 Cinder 驱动,如 Huawei、Vmware、Zadara。

1、架构

图1:


图2:
                                                 /- ( LDAP )
                             [ Auth Manager ] ---
                                    |            \- ( DB )
                                    |
                                    |
                   cinderclient     |
                  /             \   |
[ Web Dashboard ]-               -[ api ] -- < AMQP > -- [ scheduler ] -- [ volume ] -- ( iSCSI )
                  \             /   |
                   novaclient       |
                                    |
                                    |
                                    |
                                 < REST >



2、服务


  • API service:Cinder-api 是主要服务接口,负责接受和处理外界的API请求,并将请求放入RabbitMQ队列,交由后端执行。 Cinder目前提供Volume API V2
  • Scheduler service: 处理任务队列的任务,并根据预定策略选择合适的Volume Service节点来执行任务。目前版本的cinder仅仅提供了一个Simple Scheduler,该调度器选择卷数量最少的一个活跃节点来创建卷。
  • Volume service: 该服务运行在存储节点上,管理存储空间,塔处理cinder数据库的维护状态的读写请求,通过消息队列和直接在块存储设备或软件上与其他进程交互。每个存储节点都有一个Volume Service,若干个这样的存储节点联合起来可以构成一个存储资源池。
  • cinder-backup– Provides a means to back up a Cinder Volume to varIoUs backup targets.
  • 为了支持不同类型和型号的存储,当前版本的Cinder为Volume Service如下drivers。当然在Cinder的blueprints当中还有一些其它的drivers,以后的版本可能会添加进来。
    • 本地存储LVM,Sheepdog
    • 网络存储NFS,RBD (RADOS)
    • IBM:XIV,Storwize V7000, SVC storage systems
    • Netapp:NFS存储;ISCSI存储则需要OnCommand 5.0和Data ONTAP 7-mode storage systems with installed iSCSI licenses
    • EMC:VNX,VMAX/VMAXe
    • Solidfire:Solidfire cluster

Cinder通过添加不同厂商的指定drivers来为了支持不同类型和型号的存储。具体可以参考Cinder官方的支持列表 CinderSupportMatrix。


3、Cinder 如何支持典型存储


从目前的实现来看,Cinder 对本地存储和 NAS 的支持比较不错,可以提供完整的 Cinder API V2 支持,而对于其它类型的存储设备,Cinder 的支持会或多或少的受到限制,下面是 Rackspace 对于 Private Cloud 存储给出的典型配置:

1.本地存储

对于本地存储,cinder-volume 可以使用 LVM 驱动,该驱动当前的实现需要在主机上事先用 LVM 命令创建一个 cinder-volumes 的卷组,当该主机接受到创建卷请求的时候,cinder-volume 在该卷组 上创建一个逻辑卷,并且用 openiscsi 将这个卷当作一个 iscsi tgt 给输出.当然还可以将若干主机的本地存储用 sheepdog 虚拟成一个共享存储,然后使用 sheepdog 驱动。 2.EMC
图 5. EMC 块存储架构
3.Netapp
图 6. Netapp 块存储架构

HuaWei

图 7. HuaWei 块存储架构


传统存储与 OpenStack 云存储对比

表 2.对比
传统存储架构 openstack 云存储架构
海量数据承载能力
扩展方式是通过增加硬件配置实现,属于 Scaleup 方式

存储系统可以达到 PB 级别的扩展空间更适合海量数据的存储、ScaleOut
高可用 昂贵的硬件保证系统的高可用 通过系统自身的机制,即软件完成的自动化、智能机制来保证系统可用性
存储资源动态调配的能力 存储资源分配给应用后,难以回收再分配 计算和存储资源虚拟化,可以按照需求分配,动态调整
低资源利用率,高能耗 35%-75%的 TCO 节省,30%以上的软硬件成本节省,cpu 利用率提升到 60%-80%,70%-80%运营成本节约
运维效率和成本 运维效率低,维护成本高,硬件准备周期长
部署时间缩短到分钟级,减少硬件准备周期

管理复杂度



参考:

  1. OpenStack 存储剖析:http://www.ibm.com/developerworks/cn/cloud/library/1402_chenhy_openstackstorage/
  2. Openstack之Cinder服务初探:http://blog.csdn.net/luo_brian/article/details/8592692
  3. Openstack Havana 块存储服务 Cinder 配置经历:http://www.tuicool.com/articles/mIZrqm

cinder swift的区别的更多相关文章

  1. XCode 5远程调试OS X应用程序

    我正在使用XCode5.0.2在OSX10.9上开发一个应用程序并获得了一个我无法在这台开发机器上重现的错误报告.但是,我有一个10.7虚拟机出现崩溃,所以我想调试那里没有在这个VM中安装XCode.我搜索了有关远程调试的信息,但我没有得到有用的答案.我甚至担心它根本不受支持.但无论如何我还是要问一下.或者,除了执行完整的XCode安装等之外,还有哪些其他选项来调试这样的问题?

  2. openstack swift ring文件解析

    一直以为对swift的ring文件充满好奇,这段时间重新研究swift,正好借此机会好好研究下。

  3. KeyStone安装部署笔记

    KeyStone客户端:OpenStack身份服务API的命令行接口。OpenStack出于扩展性的考虑也支持多个region。下面的命令在regionOne创建了keystone的三种端点:为admin租户和用户申请令牌:最后验证admin租户和用户:输出结果验证了身份服务工作正常,Keystone安装部署成功。

  4. OpenStack对象存储――Swift

    Swift前身是RackspaceCloudFiles项目,随着Rackspace加入到OpenStack社区,于2010年7月贡献给OpenStack,作为该开源项目的一部分。Swift目前的最新版本是OpenStackEssex1.5.1。Swift特性在OpenStack官网中,列举了Swift的20多个特性,其中最引人关注的是以下几点。在OpenStack中还可以与镜像服务Glance结合,为其存储镜像文件。Auth认证服务目前已从Swift中剥离出来,使用OpenStack的认证服务Keysto

  5. OpenStack之swift安装笔记

    安装过程依然参考的是OpenStack的官方安装手册,但补充了一些细节。OpenStack的对象存储是一个多租户的、高可扩展的对象存储系统,通过RESTfulHTTPAPI管理着大量的非结构化数据,在部署对象存储之前必须至少安装了身份服务。首先在KeyStone中创建Swift的用户、服务及endpoint,具体命令及结果如下:然后安装proxy-server,swift客户端、memcached等:yuminstallopenstack-swift-proxypython-swiftclientpyth

  6. OpenStack入门到实战视频教程全集下载罗勇老师经典教程系列

    全网最经典的openstack视频教程,现在免费了!罗老师讲得实在是太好了,目前绝对是全网最好的openstack入门视频,而且讲得特别细,非常适合初学者学习,收集了好久终于齐了,现在贡献给大家。

  7. OpenStack Swift 存储策略

    OpenStackSwift对象存储及其存储策略简介Swift2.0于2014年7月8日发布,其中最重要的新特性是存储策略,该特性改变了以往存储系统中存储策略由设计与实施方决定的做法,让用户能够以Container为粒度,为不同需求的数据指定不同的副本数量、不同参数的纠删码、不同性能的存储介质、不同地理位置、不同的后端存储设备。本文只是对存储策略做了一个简要的介绍,让读者体会存储策略的用途,进一步深入探索可以查看参考资料了解有关OpenStackSwift的更多相关信息。

  8. OpenStack Swift源码导读:业务整体架构和Proxy进程

    OpenStack的源码分析在网上已经非常多了,针对各个部分的解读亦是非常详尽。其中proxy是前端的业务接入进程。account、container和object目录分别是账户、容器和对象的业务处理逻辑进程。各个业务进程或模块之间的逻辑关系可以参考《OpenstackSwift简介》文中的架构图。在《OpenstackSwift简介》从理论上面介绍了具体的节点寻找过程。

  9. cinder swift的区别

    [原]OpenStack入门以及一些资料之2014-4-29阅读1144评论0注:本文内容均来自网络,我只是在此做了一些摘抄和整理的工作,来源均有注明。它拥有自己的文件系统,通过网络文件系统NFS或通用文件系统CIFS对外提供文件访问服务。Raid,不同的raid等级在增加数据可靠性以及增加存储器(群)读写性能间取得平衡。卷组描述区域,和磁盘将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷的VGDA中。

  10. 《转》OpenStack对象存储——Swift

    Swift前身是RackspaceCloudFiles项目,随着Rackspace加入到OpenStack社区,于2010年7月贡献给OpenStack,作为该开源项目的一部分。Swift目前的最新版本是OpenStackEssex1.5.1。Swift特性在OpenStack官网中,列举了Swift的20多个特性,其中最引人关注的是以下几点。在OpenStack中还可以与镜像服务Glance结合,为其存储镜像文件。Auth认证服务目前已从Swift中剥离出来,使用OpenStack的认证服务Keysto

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部