一、概述

  随着OpenStack日渐成为开源云计算的标准软件栈,Ceph也已经成为OpenStack的首选后端存储。Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统。
  ceph官方文档 http://docs.ceph.org.cn/
  ceph中文开源社区 http://ceph.org.cn/

  Ceph是一个开源的分布式文件系统。因为它还支持块存储、对象存储,所以很自然的被用做云计算框架openstack或cloudstack整个存储后端。当然也可以单独作为存储,例如部署一套集群作为对象存储、SAN存储、NAS存储等。

ceph支持
  1、对象存储:即radosgw,兼容S3接口。通过rest api上传、下载文件。

  2、文件系统:posix接口。可以将ceph集群看做一个共享文件系统挂载到本地。

  3、块存储:即rbd。有kernel rbd和librbd两种使用方式。支持快照、克隆。相当于一块硬盘挂到本地,用法和用途和硬盘一样。比如在OpenStack项目里,Ceph的块设备存储可以对接OpenStack的后端存储

Ceph相比其它分布式存储有哪些优点?

  1、统一存储
    虽然ceph底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。至于能不能千秋万代,就不知了。

  2、高扩展性
    扩容方便、容量大。能够管理上千台服务器、EB级的容量。

  3、可靠性强
    支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自管理、自动修复。无单点故障,容错性强。

  4、高性能
    因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的IOPS和吞吐量越高。另外一点ceph客户端读写数据直接与存储设备(osd) 交互。

Ceph各组件介绍:
  •Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但你可以调整副本数)。
  •Monitors:  Ceph Monitor维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch )。
  •MDSs:  Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 ls、find 等基本命令。

二、Ceph实验集群部署

1. 主机准备 (禁用selinux, 关闭防火墙)

  xuegod67    10.10.10.67    admin,osd, mon   作为管理和监控节点
  xuegod68    10.10.10.68    osd,mds
  xuegod69    10.10.10.69    osd,mds
  xuegod70    10.10.10.70    client

  #xuegod67作管理. osd. mon节点;   xuegod68和69作osd mds;  xuegod70客户端
  前三台服务器增加一块硬盘/dev/sdb实验, 创建目录并挂载到/var/local/osd{0,1,2}

[root@xuegod67 ~]# mkfs.xfs  /dev/sdb
[root@xuegod67 ~]# mkdir -p /var/local/osd0
[root@xuegod67 ~]# mount /dev/sdb /var/local/osd0/
[root@xuegod68 ~]# mkfs.xfs /dev/sdb
[root@xuegod68 ~]# mount /dev/sdb /var/local/osd1/
[root@xuegod69 ~]# mkfs.xfs /dev/sdb
[root@xuegod69 ~]# mount /dev/sdb /var/local/osd2/

2. 编辑hosts文件

(规范系统主机名添加hosts文件实现集群主机名与主机名之间相互能够解析(host 文件添加主机名不要使用fqdn方式)可用hostnamectl set-hostname name设置
分别打开各节点的/etc/hosts文件,加入这四个节点ip与名称的对应关系
  10.10.10.67    xuegod67
  10.10.10.68    xuegod68
  10.10.10.69    xuegod69
  10.10.10.70    xuegod70
SSH免密码登录
在管理节点使用ssh-keygen 生成ssh keys 发布到各节点

[root@xuegod67 ~]# ssh-keygen #所有的输入选项都直接回车生成。

[root@xuegod67 ~]# ssh-copy-id xuegod67
[root@xuegod67 ~]# ssh-copy-id xuegod68
[root@xuegod67 ~]# ssh-copy-id xuegod69
[root@xuegod67 ~]# ssh-copy-id xuegod70

3. 管理节点安装ceph-deploy工具

第一步:增加 yum配置文件(各个节点都需要增加yum源)

[root@xuegod67 ~]#vim /etc/yum.repos.d/ceph.repo

添加以下内容:(ceph国内163源)
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/x86_64
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1 [Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1 [ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1 第二步:更新软件源并安装ceph-deploy 管理工具
[root@xuegod67 ~]# yum clean all && yum list
[root@xuegod67 ~]# yum -y install ceph-deploy

4.创建monitor服务

[root@xuegod67 ~]# mkdir /etc/ceph && cd /etc/ceph
[root@xuegod67 ceph]# ceph-deploy new xuegod67 #mon安装在xuegod67节点
[root@xuegod67 ceph]# ls #生成配置文件在当前目录下
ceph.conf ceph.log ceph.mon.keyring
Ceph配置文件、一个monitor密钥环和一个日志文件

5.修改副本数

[root@xuegod67 ceph]# vim ceph.conf 配置文件的默认副本数从3改成2,这样只有两个osd也能达到active+clean状态,把下面这行加入到[global]段(可选配置)
[global]
fsid = 92f5581d-79d2-4c9f-a523-4965eedc846b
mon_initial_members = xuegod67
mon_host = 10.10.10.67
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 2

6.在所有节点安装ceph

(如果网络源安装失败,手工安装epel-release 然后安装yum –yinstall cep-release再yum –y install ceph ceph-radosgw)

错误参考:https://blog.csdn.net/yenai2008/article/details/72457463

[root@xuegod67 ceph]# ceph-deploy install xuegod67 xuegod68 xuegod69 xuegod70
安装ceph monitor
[root@xuegod67 ceph]# ceph-deploy mon create xuegod67 收集节点的keyring文件
[root@xuegod67 ceph]# ceph-deploy gatherkeys xuegod67

7.部署osd服务

添加osd节点 (所有osd节点执行)

我们实验准备时已经创建目录/var/local/osd{id}

8.创建激活osd

#创建osd
[root@xuegod67 ceph]# ceph-deploy osd prepare xuegod67:/var/local/osd0 xuegod68:/var/local/osd1 xuegod69:/var/local/osd2
#激活osd
[root@xuegod67 ceph]# ceph-deploy osd activate xuegod67:/var/local/osd0 xuegod68:/var/local/osd1 xuegod69:/var/local/osd2
如果报错

解决:在各个节点上给/var/local/osd1/和/var/local/osd2/添加权限
如下:
  chmod 777 -R /var/local/osd1/
  chmod 777 -R /var/local/osd2/*

查看状态:
[root@xuegod67 ceph]# ceph-deploy osd list xuegod67 xuegod68 xuegod69

9.统一配置

(用ceph-deploy把配置文件和admin密钥拷贝到所有节点,这样每次执行Ceph命令行时就无需指定monitor地址和ceph.client.admin.keyring了)
[root@xuegod67 ceph]# ceph-deploy admin xuegod67 xuegod68 xuegod69 各节点修改ceph.client.admin.keyring权限:
[root@xuegod67 ceph]#chmod +r /etc/ceph/ceph.client.admin.keyring

10.查看osd状态

[root@xuegod67 ceph]# ceph health 或 ceph -s
HEALTH_OK

11.部署mds服务

[root@xuegod67 ceph]# ceph-deploy mds create xuegod68 xuegod69 #我们MDS安装2台
[root@xuegod67 ceph]# ceph mds stat #查看状态

12.集群状态

[root@xuegod67 ceph]# ceph -s

以上基本上完成了ceph存储集群的搭建。

三 、创建ceph文件系统

[root@xuegod67 ceph]# ceph fs ls   #创建之前
No filesystems enabled
创建存储池
[root@xuegod67 ceph]# ceph osd pool create cephfs_data <pg_num>
[root@xuegod67 ceph]# ceph osd pool create cephfs_metadata <pg_num>

其中:<pg_num> = 128 ,
关于创建存储池
确定 pg_num 取值是强制性的,因为不能自动计算。下面是几个常用的值:
  *少于 5 个 OSD 时可把 pg_num 设置为 128
  *OSD 数量在 5 到 10 个时,可把 pg_num 设置为 512
  *OSD 数量在 10 到 50 个时,可把 pg_num 设置为 4096
  *OSD 数量大于 50 时,你得理解权衡方法、以及如何自己计算 pg_num 取值
  *自己计算 pg_num 取值时可借助 pgcalc 工具
随着 OSD 数量的增加,正确的 pg_num 取值变得更加重要,因为它显著地影响着集群的行为、以及出错时的数据持久性(即灾难性事件导致数据丢失的概率)。

1. 创建文件系统

创建好存储池后,你就可以用 fs new 命令创建文件系统了

[root@xuegod67 ceph]# ceph fs new <fs_name> cephfs_metadata cephfs_data
其中:<fs_name> = cephfs 可自定义 [root@xuegod67 ceph]# ceph fs ls #查看创建后的cephfs
[root@xuegod67 ceph]# ceph mds stat #查看mds节点状态
e6: 1/1/1 up {0=xuegod69=up:active}, 1 up:standby
active是活跃的,另1个是处于热备份的状态

2.挂载Ceph文件系统

有不同挂载方式

A.内核驱动挂载Ceph文件系统

[root@xuegod70 ceph]# mkdir /opt #创建挂载点
存储密钥(如果没有在管理节点使用ceph-deploy拷贝ceph配置文件)
cat /etc/ceph/ceph.client.admin.keyring
将key对应的值复制下来保存到文件:/etc/ceph/admin.secret中。
挂载
[root@xuegod70 ceph]# mount -t ceph 10.10.10.67:6789:/ /opt -o name=admin,secretfile=/etc/ceph/admin.secret
取消挂载
[root@xuegod70 ceph]# umount /opt

B.用户控件挂载Ceph文件系统

安装ceph-fuse
[root@xuegod70 ceph]# yum install -y ceph-fuse
挂载
[root@xuegod70 ceph]# ceph-fuse -m 10.10.10.67:6789 /opt
取消挂载
[root@xuegod70 ceph]# fusermount -u /opt

  ceph在开源社区还是比较热门的,但是更多的是应用于云计算的后端存储。所以大多数在生产环境中使用ceph的公司都会有专门的团队对ceph进行二次开发,ceph的运维难度也比较大。但是经过合理的优化之后,ceph的性能和稳定性都是值得期待的。

关于其他:
  清理机器上的ceph相关配置:
  停止所有进程: stop ceph-all
  卸载所有ceph程序:ceph-deploy uninstall [{ceph-node}]
  删除ceph相关的安装包:ceph-deploy purge {ceph-node} [{ceph-data}]
  删除ceph相关的配置:ceph-deploy purgedata {ceph-node} [{ceph-data}]
  删除key:ceph-deploy forgetkeys

  卸载ceph-deploy管理:yum -y remove ceph-deploy

可以参考内容:http://blog.51cto.com/12270625/1887648

CentOS 7部署 Ceph分布式存储架构的更多相关文章

  1. Ceph 分布式存储架构解析与工作原理

    目录 文章目录 目录 Ceph 简介 Ceph 的架构:分布式服务进程 Ceph Monitor(MON) Ceph Object Storage Device Daemon(OSD) Ceph Me ...

  2. Linux运维---1.Ceph分布式存储架构及工作原理

    Ceph理论 Ceph 简介 Ceph 是一个开源项目,它提供软件定义的.统一的存储解决方案 .Ceph 是一个具有高性能.高度可伸缩性.可大规模扩展并且无单点故障的分布式存储系统 . Ceph 是软 ...

  3. Centos7下使用Ceph-deploy快速部署Ceph分布式存储-操作记录

    之前已详细介绍了Ceph分布式存储基础知识,下面简单记录下Centos7使用Ceph-deploy快速部署Ceph环境: 1)基本环境 192.168.10.220 ceph-admin(ceph-d ...

  4. Centos7下使用Ceph-deploy快速部署Ceph分布式存储-操作记录(转)

    之前已详细介绍了Ceph分布式存储基础知识,下面简单记录下Centos7使用Ceph-deploy快速部署Ceph环境:1)基本环境 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  5. CentOS7下搭建Ceph分布式存储架构

    (1).Ceph概述 Ceph是为了优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统,并且还是一个开源的分布式文件系统.因为其支持块存储.对象存储,所以很自然的被用做云计算框架opensta ...

  6. docker部署Ceph分布式存储集群

    1.环境准备 3台virtualbox虚拟机,用来安装ceph集群,已用docker-machine安装上了docker,每台虚拟机虚拟创建一个5G的硬盘,用于存储osd数据,例如:/dev/sdb ...

  7. CentOS7.2 部署Ceph分布式存储

    1.1 环境准备 主机名 IP地址 ceph-admin 192.168.16.220 ceph-node1,ceph-mon 192.168.16.221 ceph-node2,ceph-mon 1 ...

  8. 手动部署 Ceph Mimic 三节点

    目录 文章目录 目录 前文列表 部署拓扑 存储设备拓扑 网络拓扑 基础系统环境 安装 ceph-deploy 半自动化部署工具 部署 MON 部署 Manager 部署 OSD 部署 MDS 部署 R ...

  9. Ceph分布式存储-运维操作笔记

    一.Ceph简单介绍1)OSDs: Ceph的OSD守护进程(OSD)存储数据,处理数据复制,恢复,回填,重新调整,并通过检查其它Ceph OSD守护程序作为一个心跳 向Ceph的监视器报告一些检测信 ...

随机推荐

  1. AfxBeginThread深入解析

    看过<深入浅出MFC>书中,j.j.hou提到在创建新的线程时,最好不要直接使用CreateThread,虽然AfxBeginThread也是对CreateThread的封装,但是AfxB ...

  2. js字符串解析与转换成数字

    解析允许字符串中含有非法数字字符,解析按从左至右的顺序,如果遇到非数字字符就停止.而转换不允许出现非数字字符,否则会失败并返回NaN

  3. idea插件开发

    用过的group ProjectViewPopupMenu 项目.目录的右键弹出菜单 EditorPopupMenu 编辑器里面的右键弹出菜单 调出右键菜单的关键字 show context menu

  4. 洛谷P2221 高速公路【线段树】

    题目:https://www.luogu.org/problemnew/show/P2221 题意:有n个节点排成一条链,相邻节点之间有一条路. C u v val表示从u到v的路径上的每条边权值都加 ...

  5. 使用tfrecord建立自己的数据集

    注意事项: 1.关于输入图像格式的问题     使用io.imread()的时,根据输入图像确定as_grey的参数值. 转化为字符串之后(image.tostring) ,最后输出看下image_r ...

  6. FOI 冬令营 Day6

    目录 T1.堆(heap) 传送门 Code T2.密文(secret) 传送门 Code T3.树(tree) 传送门 Code 别问Day5到底去哪里了,咕咕咕 T1.堆(heap) 传送门 Co ...

  7. luogu_P3345[zjoi2015]幻想乡战略游戏

    传送门 Description 傲娇少女幽香正在玩一个非常有趣的战略类游戏,本来这个游戏的地图其实还不算太大,幽香还能管得过来,但是不知道为什么现在的网游厂商把游戏的地图越做越大,以至于幽香一眼根本看 ...

  8. 牛客训练21674——牛牛与LCM

    Problem 链接:https://ac.nowcoder.com/acm/problem/21674 来源:牛客网 牛牛最近在学习初等数论,他的数学老师给他出了一道题,他觉得太简单了, 懒得做,于 ...

  9. 同一个类里@Cacheable缓存不起作用

    问题原因: 注解@Cacheable是使用AOP代理实现的 ,通过创建内部类来代理缓存方法,类内部的方法调用类内部的缓存方法不会走代理,所以就不能正常创建缓存,所以每次都需要去调用数据库. 解决方法: ...

  10. 如何设置xshell代理?

    场景:我想在公司内部用一台服务器A访问客户内网的机器C.在公司和客户之间有一台中间服务器B,我只能先连接到中间服务器,然后通过中间服务器跳转才能到客户C机器. 上面场景的连接策略:A->B-&g ...