ceph分布式存储

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,恶意文件检测 1000次 1年
对象存储 OSS,内容安全 1000次 1年
简介: ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。


一、概述

ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储


1、特点


   1. 统一存储

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

   2. 高扩展性

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

   3. 可靠性强

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

   4. 高性能

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


2、组件

1. Monitor

   一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。

2. OSD

   OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。

3. MDS

   MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。

4. Object

   Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。

5. PG

   PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。

6. RADOS

   RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。

7. Libradio

   Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。

8. CRUSH

   CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。

9. RBD

   RBD全称RADOS block device,是Ceph对外提供的块设备服务。

10. RGW

   RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。

11. CephFS

   CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。


3、架构图


   1:文件上传,先将文件切片成N个object(如果开启了cephFS,可以使用MDS缓存)

   2:切片后的文件object会存入到Ceph中

   3:文件存储前,会经过CRUSH算法,计算当前文件存储归结于哪个PG

   4:PG是逻辑概念上对文件存储范围划分的索引

   5:根据PG索引将文件存储到指定服务器的OSD中

二、分布式部署

1、环境拓扑

实验拓扑

 centos1 :192.168.115.100  monitor  osd
centos2 :192.168.115.101   osd 
centos3 :192.168.115.102    osd
centos4:192.168.115.103  osd   Client
2、实验准备
##在所有的主机上进行如下操作
systemctl stop firewalld.service 
systemctl disable firewalld.service 
systemctl stop NetworkManager
systemctl disable NetworkManager
systemctl restart network
systemctl stop NetworkManager
setenforce 0 
sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config
systemctl restart sshd
##分别修改主机名
hostnamectl set-hostname centos1 && bash
hostnamectl set-hostname centos2 && bash
hostnamectl set-hostname centos3 && bash
hostnamectl set-hostname centos4 && bash
###每台主机修改hosts文件
vim /etc/hosts
192.168.115.100 centos1
###添加磁盘
echo "- - -" > /sys/class/scsi_host/host0/scan
for i in 101 102;do ssh 192.168.115.$i echo "- - -" > /sys/class/scsi_host/host0/scan && lsblk;done
###格式化
mkfs.xfs /dev/sdb
192.168.115.101 centos2
192.168.115.102 centos3
192.168.115.103 centos4
###每台主机配置ssh免密
#centos1
  ssh-keygen
  for i in 100 101 102 103; do ssh-copy-id root@192.168.115.$i;done
#centos2
  ssh-keygen
  for i in 100 101 102 103; do ssh-copy-id root@192.168.115.$i;done
#centos3
  ssh-keygen
  for i in 100 101 102 103; do ssh-copy-id root@192.168.115.$i;done
#centos4
  ssh-keygen
  for i in 100 101 102 103; do ssh-copy-id root@192.168.115.$i;done
##########在centos1上设置同步时间
yum install -y ntp
vim /etc/ntp.conf
注释
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
插入
server 127.127.1.0           #定义时间服务器
fudge 127.127.1.0 stratum 8  #定义时间层次
############
启动
systemctl start ntpd
systemctl enable ntpd
###################
客户端对时
for i in 100 101 102;do ssh 192.168.115.$i  ntpdate 192.168.115.100;done

3、ceph安装

在centos1上安装

yum install epel-release -y
yum install lttng-ust -y
###添加源
vim /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/x86_64/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[Ceph-noarch]
name=Ceph noarch packages
# 清华源
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/SRPMS/
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
##########拷贝源
scp /etc/yum.repos.d/ceph.repo 192.168.115.101:/etc/yum.repos.d
scp /etc/yum.repos.d/ceph.repo 192.168.115.102:/etc/yum.repos.d
scp /etc/yum.repos.d/ceph.repo 192.168.115.103:/etc/yum.repos.d
####安装
yum -y install ceph ceph-deploy 
##创建集群目录
mkdir -p /usr/local/soft/cephcluster
cd /usr/local/soft/cephcluster
##创建集群
ceph-deploy new centos1 centos2 centos3
##修改配置文件
/usr/local/soft/cephcluster/ceph.conf
插入
#对外开放网段
public network = 192.168.115.0/24
# 设置pool池默认分配数量
osd pool default size = 2
# 容忍更多的时钟误差
mon clock drift allowed = 2
mon clock drift warn backoff = 30
# 允许删除pool
mon_allow_pool_delete = true
[mgr] 
# 开启WEB仪表盘 
mgr modules = dashboard 

安装
如果安装失败需要:
ceph-deploy purge centos1 centos2 centos3
ceph-deploy purgedata centos1 centos2 centos3
ceph-deploy forgetkeys
将三台节点的mon信息也删除:
rm -rf /var/run/ceph/

ceph-deploy install centos1 centos2 centos3

初始化monitor

ceph-deploy mon create-initial

同步管理信息

ceph-deploy admin  centos1 centos2 centos3

安装mgr(管理守护进程)

ceph-deploy mgr create  centos1 centos2 centos3

安装rgw

ceph-deploy rgw create centos1 centos2 centos3

创建mds服务

ceph-deploy mds create centos1 centos2 centos3

OSD安装

OSD服务是对象存储守护进程, 负责把对象存储到本地文件系统, 必须要有一块独立的磁盘作为存储。如果没有独立磁盘,怎么办? 可以在Linux下面创建一个虚拟磁盘进行挂载。

##创建OSD
ceph-deploy osd create --data /dev/sdb centos1

ceph-deploy osd create --data /dev/sdb centos2

ceph-deploy osd create --data /dev/sdb centos3


查看集群状态

ceph -s

4、dashboard安装

只在centos1上操作

开启dashboard模块
ceph mgr module enable dashboard
生成签名
ceph dashboard create-self-signed-cert


创建目录
mkdir -p /usr/local/jx/cephcluster/mgr-dashboard
cd /usr/local/jx/cephcluster/mgr-dashboard
openssl req -new -nodes -x509   -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650   -keyout dashboard.key -out dashboard.crt -extensions v3_ca

启动服务
1. ceph mgr module disable dashboard
2. ceph mgr module enable dashboard
设置访问地址与端口
1. ceph config set mgr mgr/dashboard/server_addr 192.168.115.100
2. ceph config set mgr mgr/dashboard/server_port 9001

关闭https
ceph config set mgr mgr/dashboard/ssl false
ceph mgr services
ceph dashboard set-login-credentials hy123 123.com

访问

https://192.168.115.100:8443

5、ceph文件系统创建

centos1上操作

创建存储池
ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 64
####################
少于5个OSD可把pg_num设置为128
OSD数量在5到10,可以设置pg_num为512
OSD数量在10到50,可以设置pg_num为4096
OSD数量大于50,需要计算pg_num的值

查看存储池
ceph osd lspools

创建文件系统
ceph fs new  fs_test  cephfs_metadata cephfs_data


查看文件系统
ceph fs ls

查看mds状态
ceph mds stat

三、在客户端挂载


在centos1上操作:

在centos1中:安装
    ceph-deploy install centos4
  同步管理信息
    ceph-deploy admin  centos4
  非集群节点,/var/run/ceph 无内容

在centos4上操作

yum install -y ceph-fuse
##如果安装不上请尝试:
在这种情况下,建议您使用 EPEL(Extra Packages for Enterprise Linux)源。首先,需要确保您的 CentOS 系统已启用 EPEL 源。如果尚未启用,请执行以下命令启用 EPEL 源:
sudo yum install epel-release  
安装完成后,请执行以下命令安装 ceph-fuse:
sudo yum install -y ceph-fuse  
安装完成后,您可以继续按照之前的回答中的步骤进行操作。如果仍然遇到问题,请确保您的 CentOS 系统已更新,并尝试使用以下命令安装 ceph-fuse:
sudo yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm  
sudo yum install -y ceph-fuse  
###############################
查看信息
ls /etc/ceph
ceph.client.admin.keyring
创建挂载目录
  mkdir /ceph
挂载ceph文件系统
  ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.115.100:6789 /ceph


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
存储 网络安全
分布式存储glusterfs详解
1.什么是glusterfs glusterfs是一个开源分布式文件系统,具有强大的横向扩展能力,可支持数pb存储容量和数千客户端,通过网络互联成一个并行的网络文件系统,具有可扩展性、高性能、高可用等特点 常用资源:
790 0
分布式存储glusterfs详解
|
存储 关系型数据库 API
Ceph分布式存储初步认识(一)(下)
Ceph分布式存储初步认识(一)(下)
253 0
Ceph分布式存储初步认识(一)(下)
|
存储 分布式计算 算法
Ceph分布式存储初步认识(一)(上)
Ceph分布式存储初步认识(一)(上)
281 0
Ceph分布式存储初步认识(一)(上)
|
存储 关系型数据库 网络安全
分布式存储ceph入门介绍
ceph是当前最热门的分布式存储系统之一,是软件定义存储(SDS,SoftwareDefinedStorage)解决方案中的典范,本文对ceph的基础情况进行介绍。
785 0
分布式存储ceph入门介绍
|
存储 关系型数据库 块存储