一、为什么要用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系统虚拟机
- cephnode01 10.151.30.128
- cephnode02 10.151.30.129
- 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