ceph分布式存储

目录

一、概述

1、特点

2、组件

3、架构图

二、分布式部署

1、环境拓扑

2、实验准备

3、ceph安装

安装

初始化monitor

同步管理信息

安装mgr(管理守护进程)

安装rgw

创建mds服务

OSD安装

4、dashboard安装

开启dashboard模块

生成签名

创建目录

启动服务

设置访问地址与端口

关闭https

访问

5、ceph文件系统创建

创建存储池

查看存储池

创建文件系统

查看文件系统

查看mds状态

三、在客户端挂载


一、概述

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

1、特点
  1. 统一存储

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

  1. 高扩展性

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

  1. 可靠性强

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

  1. 高性能

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

2、组件
  1. Monitor

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

  1. OSD

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

  1. MDS

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

  1. Object

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

  1. PG

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

  1. RADOS

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

  1. Libradio

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

  1. CRUSH

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

  1. RBD

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

  1. RGW

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

  1. 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
启动服务
复制代码
ceph mgr module disable dashboard
ceph mgr module enable dashboard
设置访问地址与端口
复制代码
ceph config set mgr mgr/dashboard/server_addr 192.168.115.100
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
相关推荐
王小王-12321 分钟前
基于Hadoop的公共自行车数据分布式存储和计算平台的设计与实现
大数据·hive·hadoop·分布式·hadoop公共自行车·共享单车大数据分析·hadoop共享单车
要开心吖ZSH2 小时前
《Spring 中上下文传递的那些事儿》Part 4:分布式链路追踪 —— Sleuth + Zipkin 实践
java·分布式·spring
幼稚园的山代王3 小时前
RabbitMQ 4.1.1初体验
分布式·rabbitmq·ruby
百锦再3 小时前
RabbitMQ用法的6种核心模式全面解析
分布式·rabbitmq·路由·消息·通道·交换机·代理
一路向北North3 小时前
RabbitMQ简单消息监听和确认
分布式·rabbitmq·ruby
一路向北North10 小时前
使用reactor-rabbitmq库监听Rabbitmq
分布式·rabbitmq·ruby
Amy1870211182316 小时前
赋能低压分布式光伏“四可”建设,筑牢电网安全新防线
分布式
June bug20 小时前
【软考中级·软件评测师】下午题·面向对象测试之架构考点全析:分层、分布式、微内核与事件驱动
经验分享·分布式·职场和发展·架构·学习方法·测试·软考
阿波罗.201221 小时前
Zookeeper 客户端 .net访问框架 ZookeeperNetEx项目开发编译
分布式·zookeeper
Bug退退退12321 小时前
RabbitMQ 工作模式
java·分布式·rabbitmq