storage, especially cinder(2)

来源:互联网 发布:建站公司网站源码 编辑:程序博客网 时间:2024/05/20 19:14

前面说到并非所有的存储都是文件存储,一般说存储类型分为三种,文件存储,块存储,对象存储。

在mark link 1中有个不错的讲解,我的理解是,

块存储:

将没有格式化过的裸盘映射给server(虚拟的,物理的)使用,而这里所谓的“裸盘”,可以是物理概念上的一块硬盘,也可以是逻辑上的一块硬盘(实际上由若干

部分组成,每一部分都在不同的物理硬盘上),对server来说二者没有区分,server要使用时,必须要对映射的裸盘格式化,比较大的弊端是不利于数据共享,因为

一个裸盘分给某个server后,就像是该server的一个磁盘,其他server无法共享。


文件存储:

一般意义上的文件系统都属于文件存储,FTP,NFS服务器都属于文件存储的应用,非常适合做共享,我们平时从FTP server上下载数据即是如此,由于文件系统组织

数据的方法,大量读写时效率低下(分布式时有较大提升)。


对象存储:

不清楚这个是什么时候开始火起来的,接触到这个概念也是从openstack的swift之后,存储读写快,不利于共享,文件存储读写慢,利于共享,对象存储为了取二者

优点,去其缺点而存在,文件存储中,一个文件被放在不同的块中,链表结构,通过上一个块知道下一个块的位置,并行读写效率差,而对象存储将元数据放在元数据

服务器上,通过访问元数据服务器知道数据存在哪些OSD上(object storage device),可以并发读写。

btw:实际上swift在xfs(不是绝对在xfs之上,但官方说明对xfs支持最好)基础之上提供对象存储的能力,严格意义上swift不是文件系统,它没有目录结构(虽然容器

数目可以无限),同时以rest 方式提供服务,没有文件系统传统意义的POSIX接口(read,write,open等语法)


在Cinder中,默认的driver是LVMVolumeDriver提供块存储,LVM在每个主机创建Volume Group,虚机选定compute node之后,使用使用lvcreate创建一个块设备供

虚机使用,查看LVMDriver,最后都是调用lvm的命令。

mark link 2有一段话说的很好,引用一下:

在面对极具弹性的存储需求和性能要求下,单机或者独立的SAN越来越不能满足企业的需要。如同数据库系统一样,块存储在scale up的瓶颈下也面临着scale out的

需要。我们可以用以下几个特点来描述分布式块存储系统的概念:

分布式块存储可以为任何物理机或者虚拟机提供持久化的块存储设

分布式块存储系统管理块设备的创建、删除和attach/deattach

分布式块存储支持强大的快照功能,快照可以用来恢复或者创建新的块设备

分布式存储系统能够提供不同IO性能要求的块设备


于是从不同的存储类型说到分布式块存储,分布式块存储目前最火的项目应该是Ceph莫属,事实上Ceph对外接口也支持提供文件存储,对象存储,还是很强大的。

由于Ceph也提供对象存储,一定程度上不想专门配置swift的情况下,可以使用Ceph作为替代。(使用Ceph做drive人在cinder/volume/rbd.py中RADOS)


btw,创建flavor时候,我们需要指定RAM,root disk,swap disk, Ephemeral disk

RAM是内存

root disk: 提供boot loader,根分区,这个是一个系统必须的,将base image拷贝到root disk,如果是boot from volume时,不需要用到此root disk

swap disk:交换空间,内存不够了用这个;

Ephemeral disk:这个不知道怎么翻译合适,(切换openstack到中文)临时磁盘,临时磁盘中的东西随着instance关机会丢失;

实际上这三种disk上的数据都是临时的,instance关机后都没了,mark link 4有说明。

如果想要持久化的数据,两种,一是创建volume,boot from volume,二是attach volume给instance,即使instance没了,创建新instance,可以将volume重新attach。


指定root,swap,ephemeral后,从image启动instance,我们在/var/lib/nova/instance/xxxx对应的instance下可以看到:

disk, disk.local, disk.swap

分别对应root disk,ephemeral disk和swap disk,使用"qemu-img info "命令查看详情可以更加了解。

而如果是boot from image,我们就看不到disk(即root disk),而是在libvirt.xml中看到device:vda对应的是一个volume




mark link:

1.http://www.zhihu.com/question/21536660

2.https://www.ustack.com/block-storage-overview/

3.http://m.blog.csdn.net/blog/juvxiao/22614663

4.http://s3.51cto.com/wyfs02/M00/58/81/wKiom1SzO_yx7eeKAAHZ-kM_WKU929.jpg

0 0
原创粉丝点击