Ceph分布式存储

一、为什么要用Ceph

  • 高扩展性
  • 高性能
  • 无单点的分布式文件存储系统
  • 可⽤用于对象存储,块设备存储和文件系统存储
  • 读写速度快利于共享

二、Ceph存储介绍

1、核心组件

  • OSD:Object storage cluster,对象存储集群(将数据和元数据作为对象存 储,执行其他关键职能)
  • Monitor:Cluster monitors,集群监视器(执行监视功能)
  • MDS:Metadata server cluster,元数据服务器(缓存和同步分布式元数据)
  • Mgr:ceph 集群的管理,为外界提供统一的入口
  • Rgw:对象存储网关系统

2、Librados提供的客户端服务

RBD

a.docker容器器、虚拟机远程挂载磁盘存储分配;

b.日志存储;

CephFs

a.⽇日志存储;

b.多个⽤用户有⽬目录结构的⽂文件存储共享, 例如 NTP、NFS;

RadosGw

a.s3、swift接⼝口类型存储;

b.图⽚片、视频、⽂文件、软件安装包等;

3、Pool、PG、OSD

  • Pool是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本分布策略,支持两种类型:副本(replicated)和 纠删码( Erasure Code);
  • PG( placement group)是一个放置策略组,它是对象的集合,该集合里的所有对象都具有相同的放置策略,简单点说就是相同PG内的对象都会放到相同的硬盘上;
  • OSD是负责物理理存储的进程,一般配置成和磁盘一 一对应,一块磁盘启动一个 OSD进程;

三者的关系:

  • 一个Pool里有很多PG;
  • 一个PG里包含一堆对象,一个对象只能属于一个PG;
  • PG有主从之分,一个PG分布在不同的OSD上(针对三副本类型);

4、什么是对象(Object)

  • 最底层的存储单元
  • 包含元数据和原始数据

三、Ceph存储集群部署

1. 安装要求

  • 最少三台Centos7系统虚拟机
  1. cephnode01 10.151.30.128
  2. cephnode02 10.151.30.129
  3. cephnode03 10.151.30.130
  • 硬件配置:2C4G,另外每台机器器最少挂载三块硬盘

2. 环境准备

(1)关闭防火墙:

systemctl stop firewalld

systemctl disable firewalld

(2)关闭selinux:

sed -i 's/enforcing/disabled/' /etc/selinux/config

setenforce 0

3)关闭NetworkManager

systemctl disable NetworkManager && systemctl stop NetworkManager

(4)添加主机名与IP对应关系:

vim /etc/hosts

10.151.30.125 cephnode01

10.151.30.126 cephnode02

10.151.30.127 cephnode03

(5)设置主机名:

hostnamectl set-hostname cephnode01

hostnamectl set-hostname cephnode02

hostnamectl set-hostname cephnode03

(6)同步网络时间和修改时区

echo "server 10.151.30.200 iburst" >> /etc/chrony.conf

systemctl restart chronyd.service && systemctl enable chronyd.service

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

(7)设置文件描述符

echo "ulimit -SHn 102400" >> /etc/rc.local cat >> /etc/security/limits.conf << EOF

* soft nofile 65535

* hard nofile 65535

EOF

(8)内核参数优化

cat >> /etc/sysctl.conf << EOF

kernel.pid_max = 4194303

EOF

sysctl -p

(9)在cephnode01上配置免密登录到cephnode02、cephnode03

ssh-copy-id root@cephnode02

ssh-copy-id root@cephnode03

3. 部署ceph部署⼯工具ceph-deploy

(1)安装EPEL源

# yum install -y https://dl.fedoraproject.org/pub/epel/epel-releaselatest-7.noarch.rpm

(2)编辑ceph yum源

# cat << EOM > /etc/yum.repos.d/ceph.repo

[ceph-noarch]

name=Ceph noarch packages

baseurl=https://download.ceph.com/rpm-luminous/el7/noarch

enabled=1

gpgcheck=1

type=rpm-md

gpgkey=https://download.ceph.com/keys/release.asc EOM

(3)安装ceph-deploy

# yum install ceph-deploy

4. 部署rados集群(mon、mgr、mds、rados)

(1)安装软件包管理器

# yum install yum-plugin-priorities

(2)创建一个my-cluster目录,所有命令在此目录下进行(文件位置和名字可以随意)

mkdir /my-cluster

cd /my-cluster

(3)创建一个ceph集群

ceph-deploy new cephnode01 cephnode02 cephnode03

(4)安装ceph软件

ceph-deploy install cephnode01 cephnode02 cephnode03

(5)修改ceph.repo

[ceph]

name=Ceph packages for $basearch baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/$basearch

enabled=1

priority=2

gpgcheck=1

gpgkey=https://download.ceph.com/keys/release.asc

[ceph-noarch]

name=Ceph noarch packages baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/noarch

enabled=1

priority=2

gpgcheck=1

gpgkey=https://download.ceph.com/keys/release.asc

[ceph-source]

name=Ceph source packages baseurl=http://mirrors.163.com/ceph/rpm-luminous/el7/SRPMS

enabled=0

priority=2

gpgcheck=1

gpgkey=https://download.ceph.com/keys/release.asc

(6)登陆每台机器执行

# yum install -y ceph

(7)生成monitor检测集群所使用的的秘钥

# ceph-deploy mon create-initial

(8)安装ceph CLI,方便执行一些管理命令

# ceph-deploy admin cephnode01 cephnode02 cephnode03

(9)配置mgr,用于管理集群

# ceph-deploy mgr create cephnode01 cephnode02 cephnode03

(10)安装mds

# ceph-deploy mds create cephnode01

(11)部署rgw

# yum install -y ceph-radosgw

5. 添加OSD

ceph-deploy osd create –data /dev/sdb cephnode01

ceph-deploy osd create –data /dev/sdc cephnode02

ceph-deploy osd create –data /dev/sdd cephnode03

6. 配置rgw

ceph-deploy rgw create cephnode01 cephnode02 cephnode03

7. 上传下载测试

生成一个文件

# echo {Test-data} > testfile.txt

创建一个测试pool

# ceph osd pool create mytest

上传一个文件到测试pool

# rados put test-object-1 testfile.txt –pool=mytest

查看测试pool里的文件

# rados -p mytest ls

删除pool中的文件

# rados rm test-object-1 –pool=mytest

删除测试的pool

#ceph osd pool rm mytest

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片