Ceph-Openstack学习笔记
来源:互联网 发布:网络安全技术与实践 编辑:程序博客网 时间:2024/05/01 09:52
1、Ceph是集对象存储,块存储,文件存储为一体的开源存储系统
2、Cluster map实现“无需查表,算算就好”的去中心设计思想
RADOS集群主要由两种节点组成。一种是为数众多的、负责完成数据存储和维护功能的OSD(Object Storage Device),另一种则是若干个负责完成系统状态检测和维护的monitor,OSD和monitor之间相互传输节点状态信息,共同得出系统的总体工作状态,并形成一个全局系统状态记录数据结构。这种数据结构被称之为Cluster MAP。
大量的客户端程序通过与OSD或者monitor的交互获取cluster map,然后直接在本地进行计算,得出对象的存储位置后,便直接与对应的OSD通信,完成数据的各种操作。
cluster map的更新完全取决于系统的状态变化:OSD出现故障,或者RADOS规模扩大
3、透过librados API,应用不仅能够实现对数据对象的操作,还能够实现对RADOS系统的管理和配置:
Ceph提供基础库librados API,对RDAOS系统进行检测盒策略优化等管理功能;RADOS GW(RADOS Gateway)、 RBD(Reliable Block Device)和Ceph FS(Ceph File System),在librados库的基础上提供抽象层次更高、更便于应用或客户端使用的上层接口
4、Ceph中file,object,PGs(Placement Group),OSD映射关系:
(1)文件到对象映射:一对多关系。objectid 由fileid和file被切割成object的份数确定(如file aa.txt的fileid是aa,切割成10份,oid则为aa1,aa2,.....aa10);
(2)对象到PG映射:多对一关系。pgid:objectid的静态hash与pg的数量m-1按位相与产生pgid
(3)PG到OSD映射:对对多关系。将pgid做CRUSH算法得到N个OSD,N个OSD共同负责存储和维护一个PG中的所有object,N根据可靠性需求进行配置(2或者3)。pg和OSD的映射关系由OSD扩容或者设备损坏/维护才会发生变化
5、写机制优化:
两次写过程:一次为OSD讲数据写入内存缓冲区,便向客户端发出确认信息,客户端可以继续执行下一步操作;第二次,当数据从缓存写入磁盘,再向Client发送一次确认信息,Client根据需要可将缓存数据删除。
6、集群维护
OSD上报状态信息,monitor负责整个Ceph集群中所有OSD状态的发现与记录,形成cluster map的master版本,并扩散至全体OSD以及client。OSD使用cluster map进行数据的维护,client使用cluster map进行数据寻址。
7、cluster map信息是以异步且lazy的形式扩散
monitor并不会在每一次cluster map版本更新后都将新版本广播至全体OSD,而是在有OSD向自己上报信息时,将更新回复给对方。类似的,各个OSD也是在和其他OSD通信时,将更新发送给版本低于自己的对方。
更多精彩请参考:http://www.infoq.com/cn/news/2014/01/ceph-overview
- Ceph-Openstack学习笔记
- ceph学习笔记
- ceph学习笔记
- ceph 学习笔记
- 《ceph源码分析》 学习笔记
- Openstack+Ceph安装与配置(收集整理笔记)
- Introducing Ceph to OpenStack
- CEPH与OPENSTACK
- ceph与OpenStack整合
- openstack 支持ceph
- openstack 与 ceph (架构)
- OpenStack+Ceph存储空间回收
- ceph openstack联系
- OpenStack 和 Ceph 集成
- openstack ceph故障排查
- openstack集成ceph
- OpenStack 学习笔记一
- OpenStack Swift学习笔记
- 11111
- 一步步学习微软InfoPath2010和SP2010--第十一章节--创建批准流程
- Vector和ArrayList的区别
- java开发环境配置
- 第15章:数字,字符串和集合
- Ceph-Openstack学习笔记
- ubuntu13.10 安装rpm包
- 第九届湖南省ACM—ICPC程序设计大赛 搞笑版费马大定理
- 【layout】fill_parent和wrap_content的区别
- open/read/write和fopen/fread/fwrite的区别
- C# 获取窗口句柄并且关闭应用程序
- gcc 和g++编译选项详解
- usc@1002:项目投标
- Jogl2.0 jogamp-all-platforms 在eclipse 中的配置