[原]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)
参考:存储基础入门
---------------------------------------------------------------------------
OpenStack块存储服务——cinder:目前,cinder对本地存储和NAS的支持比较不错,可以提供完整的Cinder API V2支持,而对于其他类型的存储设备,Cinder的支持会受到一些限制。
volumetype是卷的一种标识,各个OpenStack的发行者可根据自身对系统的约束来定义卷类型的使用。
---------------------------------------------------------------------------
计算节点的存储主要用来给虚拟机提供系统盘空间(和cinder的后端存储不同),所以我们一般会把虚拟机的磁盘目录(默认是/var/lib/nova/instances)作为单独的挂载点,提供一个较大的空间,依赖可以满足创建虚拟机对存储空间的需求,而来可以满足虚拟机迁移的需求。关于计算节点上的存储方案;一般有以下三种:
1,使用独立的共享存储
这种方案需要一个独立的共享存储节点,典型的是使用NFS服务器,意味着虚拟机和它的存储不在一个节点上,对应的,对这两类节点的要求也不一样:计算节点可能需要更多地cpu和内存,而存储节点需要关注磁盘IO性能。
优势:
1、降低计算节点维护成本,不影响虚拟机当前的运行状态
2、计算节点的宕机不会引起虚拟机的磁盘数据丢失
3、虚拟机迁移功能效率更高
4、共享存储可以用作他用
劣势:
1、需要额外的存储节点
2、一些重负载的虚拟机可能会影响其他虚拟机的性能,无论是否在同一节点
2,使用统一共享存储
不使用独立的存储节点(典型的如Ceph、sheepdog等),而是将计算节点上的存储连接起来形成一个存储池,提供共享、高可靠、高可用的存储特性。
优势:
1、不需要额外的存储节点
2、充分利用分布式存储的优势
劣势:
1、因为中间层的存在,会失去对磁盘的逻辑管理
2、对虚拟机数据的恢复变得复杂
3,本地存储
最常见的方式,不需要额外的配置。
优势:
1、重负载的虚拟机不会对其他节点的虚拟机造成影响
劣势:
1、无共享,意味着一个节点宕机会造成该节点上虚拟机数据不可用
2、虚拟机迁移变得复杂
参考:计算节点上的存储
---------------------------------------------------------------------------
Cinder
0、简介及基本概念
OpenStack 到 Folsom 版本有比较大的改变,其中之一就是将之前在 Nova 中的部分持久性块存储功能(Nova-Volume)分离了出来,独立为新的组件 Cinder。主要核心是对卷的管理,允许对卷、卷的类型、卷的快照进行处理。它并没有实现对块设备的管理和实际服务,而是为后端不同的存储结构提供了统一的接口,不同的块设备服务厂商在 Cinder 中实现其驱动支持以与 OpenStack 进行整合。在CinderSupportMatrix中可以看到众多存储厂商如 NetAPP、IBM、SolidFire、EMC 和众多开源块存储系统对 Cinder 的支持。Havana 版本中 Cinder 新增特性如下:
/- ( 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
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 云存储架构 | |
---|---|---|
海量数据承载能力 |
@H_870_502@ 存储系统可以达到 PB 级别的扩展空间更适合海量数据的存储、ScaleOut | |
高可用 | 昂贵的硬件保证系统的高可用 | 通过系统自身的机制,即软件完成的自动化、智能机制来保证系统可用性 |
存储资源动态调配的能力 | 存储资源分配给应用后,难以回收再分配 | 计算和存储资源虚拟化,可以按照需求分配,动态调整 |
低资源利用率,高能耗 | 35%-75%的 TCO 节省,30%以上的软硬件成本节省,cpu 利用率提升到 60%-80%,70%-80%运营成本节约 | |
运维效率和成本 | 运维效率低,维护成本高,硬件准备周期长部署时间缩短到分钟级,减少硬件准备周期
|
|
管理复杂度 | 高 | 低 |
参考:
- OpenStack 存储剖析:http://www.ibm.com/developerworks/cn/cloud/library/1402_chenhy_openstackstorage/
- Openstack之Cinder服务初探:http://blog.csdn.net/luo_brian/article/details/8592692
- Openstack Havana 块存储服务 Cinder 配置经历:http://www.tuicool.com/articles/mIZrqm