ceph分布式存储

目录

前言

一、概述

(一)、特点

(二)、组件

(三)、架构图

二、搭建

(一)、基础环境

(二)、准备工作

(三)、ceph安装

(四)、集群构建

(五)、dashboard安装

(六)、ceph文件系统创建

(七)、客户端挂载

总结


前言

Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。


一、概述

是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。

(一)、特点

1. 统一存储

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

2. 高扩展性

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

3. 可靠性强

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

4. 高性能

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

(二)、组件

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对外提供的文件系统服务。

(三)、架构图

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

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

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

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

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

二、搭建

(一)、基础环境

192.168.238.11 sentos1(osd)网关192.168.238.2

192.168.238.12 sentos2(osd)网关192.168.238.2

192.168.238.13 sentos3(osd)网关192.168.238.2

192.168.238.14 sentos4(client)网关192.168.238.2

(二)、准备工作

全部关闭防火墙、关闭图形网络管理器、关闭Selinux

分别修改至上面IP和主机名、添加hosts文件

进行免密登录然后测试

添加一块磁盘(分别重启或热扫描)

cd /sys/class/scsi_host/
for i in `ls`;do echo "- - -" > $i/scan;done

对添加的磁盘进行格式化 mkfs.xfs /dev/sdb

修改ssh配置

sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config
systemctl restart sshd

时间同步

在sentos1上开启时间同步服务器

yum install -y ntp
vim /etc/ntp.conf

systemctl start ntpd
systemctl enable ntpd
for i in 11 12 13 14;do ssh 192.168.238.$i ntpdate 192.168.238.11;done

(三)、ceph安装

只在sentos1执行

yum install epel-release -y
yum install lttng-ust -y

添加ceph安装源

vim /etc/yum.repo.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

 yum -y install ceph ceph-deploy 

(四)、集群构建

只在sentos1执行,集群操作都在**/usr/local/soft/cephcluste**r目录下操作

创建集群目录

mkdir -p /usr/local/soft/cephcluster
cd /usr/local/soft/cephcluster

创建集群

ceph-deploy new sentos1 sentos2 sentos3

修改配置文件

vim ceph.conf

#对外开放网段
public network = 192.168.238.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 install sentos1 sentos2 sentos3

确保网络流畅,否则会报错

初始化monitor

ceph-deploy mon create-initial

同步管理信息

ceph-deploy admin sentos1 sentos2 sentos3

安装mgr(管理守护进程)

ceph-deploy mgr create  sentos1 sentos2 sentos3

安装rgw

ceph-deploy rgw create sentos1 sentos2 sentos3

创建mds服务

ceph-deploy mds create sentos1 sentos2 sentos3

OSD安装

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

创建OSD

ceph-deploy osd create --data /dev/sdb sentos1
ceph-deploy osd create --data /dev/sdb sentos2
ceph-deploy osd create --data /dev/sdb sentos3

查看集群状态 ceph -s

(五)、dashboard安装

开启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

启动服务(先关再起)

ceph mgr module disable dashboard
ceph mgr module enable dashboard

设置访问地址与端口

ceph config set mgr mgr/dashboard/server_addr 192.168.238.11
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 jx123 123.com

访问

https://192.168.238.11:8443

(六)、ceph文件系统创建

创建存储池

ceph osd pool create cephfs_data 128
ceph osd pool create cephfs_metadata 64

查看存储池

ceph osd lspools

创建文件系统、查看文件系统、查看mds状态

ceph fs new  fs_test  cephfs_metadata cephfs_data
ceph fs ls
ceph mds stat

(七)、客户端挂载

在centos1中安装 ceph-deploy install centos4

同步管理信息

cd /usr/local//soft/cephcluster
ceph-deploy admin sentos4

在centos4中安装 yum install -y ceph-fuse

查看信息

ls /etc/ceph

创建挂载目录

mkdir /ceph

挂载ceph文件系统

ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.238.11:6789 /ceph

再访问查看


总结

搭建中最大的问题莫过于网络的流畅度,不然安装失败,安装过程失败导致后续所有操作都无法进行,需要注意的是ceph安装到客户端挂载之前都是在1台主机上操作的(sentos1)。

相关推荐
一名路过的小码农5 天前
ceph 18.2.4二次开发,docker镜像制作
ceph·docker·容器
墨水\\9 天前
分布式----Ceph应用(下)
分布式·ceph
大G哥9 天前
基于K8S1.28.2实验rook部署ceph
java·ceph·云原生·容器·kubernetes
石兴稳11 天前
Ceph PG(归置组)的状态说明
ceph
石兴稳11 天前
Ceph层次架构分析
ceph
活老鬼11 天前
Ceph分布式存储
linux·运维·服务器·分布式·ceph
石兴稳12 天前
Ceph client 写入osd 数据的两种方式librbd 和kernel rbd
linux·ceph
石兴稳12 天前
Ceph的pool有两种类型
ceph
运维小文12 天前
ceph的集群管理
ceph·对象存储·存储·ceph集群管理·ceph节点管理
石兴稳13 天前
iSCSI 和SCSI的概述
ceph