1. 简介
1.1. 这个在生产中没用上,生产上用的是nfs,不过为了显示咱会,也要写出来
1.2. 官方网站:http://ceph.com/
1.3. 中文网站:http://docs.ceph.org.cn/
1.4. Ceph = Cephalopods ['sefələpɒdz] 头足类软体动物
1.5. 作者是Sage Weil,起源于2006年发表的论文《Ceph: A Scalable, High-Performance Distributed File System》
http://ceph.com/papers/weil-ceph-osdi06.pdf
和2007年发表的论文《CEPH: RELIABLE, SCALABLE, AND HIGH-PERFORMANCE DISTRIBUTED STORAGE》
http://ceph.com/papers/weil-thesis.pdf
1.6. 对象存储,块存储,文件存储的区别:https://www.zhihu.com/question/21536660
对象存储RGW(RADOS GateWay):内置大容量硬盘的分布式服务器
块存储:磁盘阵列,硬盘
文件系统存储:NFS,FTP服务
1.7. 架构设计
客户端(Clients):存储数据的使用者
元数据服务器(Metadata Server,MDS):负责缓存和同步分布式元数据
对象存储集群(Object Storage Cluster):负责以对象的形式存储全部的用户数据和元数据以及实现其他的关键功能
集群监控(Cluster Monitor):负责实现对整个Ceph集群的监控
1.8. 对象存储
底层存储系统(RADOS,Reliable、Autonomic、Distrbuted Object Store):Ceph存储系统的基础,可以无限扩展
底层API库(LIBRADOS):是对底层RADOS逻辑功能的封装API库,支持C/C++,Python,Java,Ruby和PHP等
上层应用接口:RADOS GW(RADOS Gateway)、RBD(RADOS Block Device)和Ceph FS(Ceph File System)
外部应用层:使用Ceph提供的各种应用接口的应用程序,例如云盘
1.9. 架构图
1.10. 数据存储过程:File --> Object --> PG --> OSD
File:最高层次的数据对象,终端用户所能看到和操作的数据对象,也是用户需要存储或者访问的数据文件
Object:从Ceph角度所看到的对象,或者说是RADOS的操作对象,Ceph对象存储中的“对象”通常便是指Object,RADOS规定每个Object的大小为4MB或8MB
PG(Placement Group):逻辑上的Object组织单位或者容器,其主要作用就是对Object的存储进行组织和位置映射
OSD(Object Storage Device):Ceph存储集群中的最终物理存储设备,存储逻辑上的PG,通过运行在OSD上的OSD进程实现不同OSD之间的通信以及与Ceph Monitor的通信。
1.11. 寻址过程:
File -> object映射:其映射十分简单,本质上就是按照object的最大size对file进行切分,相当于RAID中的条带化过程。这种切分的好处有二:一是让大小不限的 file变成最大size一致、可以被RADOS高效管理的object;二是让对单一file实施的串行处理变为对多个object实施的并行化处理。
Object -> PG映射:在file被映射为一个或多个object之后,就需要将每个object独立地映射到一个PG中去。
PG -> OSD映射:第三次映射就是将作为object的逻辑组织单元的PG映射到数据的实际存储单元OSD。
2. 环境
2.1. ceph:0.80.7-0.10.el7
2.2. 机器列表:
3. 安装
3.1. 配置yum源
rpm -ivh https://download.ceph.com/rpm/el7/noarch/ceph-release-1-1.el7.noarch.rpm
3.2. 在管理机(ansible机器)10.30.2.99上安装部署工具
yum install ceph-deploy
3.3. 在mon和block节点上安装相关软件
yum install snappy leveldb gdisk python-argparse gperftools-libs
3.4. 初始化三个监控节点
ceph-deploy forgetkeys
ceph-deploy mon create-initial
ceph-deploy new hctjcephmon01 hctjcephmon02 hctjcephmon03
3.5. 在所有节点上安装ceph相关
ceph-deploy install hctjcephmon01 hctjcephmon02 hctjcephmon03 hctjcephblock01 hctjcephblock02
ansible ceph -m shell -a "yum -y install ceph ceph-radosgw"
3.6. 在监控节点上创建监控
ceph-deploy mon create hctjcephmon01 hctjcephmon02 hctjcephmon03
ceph-deploy gatherkeys hctjcephmon01 hctjcephmon02 hctjcephmon03
3.7. 在块节点上创建三块硬盘,都格式化成xfs格式,并挂载
#Ceph
/dev/sdb /data_ceph/docker/volume xfs defaults 0 0
/dev/sdc /data_ceph/openstack/cinder xfs defaults 0 0
/dev/sdd /data_ceph/openstack/glance xfs defaults 0 0
3.8. 在块节点上
ceph-deploy osd prepare hctjcephblock01:/data_ceph/docker/volume hctjcephblock02:/data_ceph/docker/volume
ceph-deploy osd activate hctjcephblock01:/data_ceph/docker/volume hctjcephblock02:/data_ceph/docker/volume
3.9. 在ansible节点上
ceph-deploy admin hctjcephmon01 hctjcephmon02 hctjcephmon03
3.10. 检查状态
ceph heath
4. 常用命令
#检查ceph状态
ceph -s
ceph status
# 检查集群状态
ceph -w
# 检查仲裁
ceph quorum_status --format json-pretty
# 导出mon信息
ceph mon dump
# 检查集群使用状况
ceph df
# 检查mon状态
ceph mon stat
# 列出pg
ceph pg dump
# 检查存储池
ceph osd lspools
# 检查OSD的hash
ceph osd tree
# 检查key
ceph auth list