ceph分布式存储

2023-09-21 19:53:14

目录

一、概述

二、组件

三、架构图

四、搭建


一、概述

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中

四、搭建

关闭防火墙、关闭图形网络管理器、配置IP、关闭Selinux

1、环境拓扑

centos1:192.168.115.3

centos2:192.168.115.4

centos3:192.168.115.5

centos4:192.168.115.6(Client)

2、主机名修改

192.168.115.3

192.168.115.4

192.168.115.5

192.168.115.6

3、hosts文件修改

每个节点主机都需要操作

vim /etc/hosts

192.168.115.3 centos1
192.168.115.4 centos2
192.168.115.5 centos3
192.168.115.6 centos4

for i in 4 5 6; do scp /etc/hosts 192.168.115.$i:/etc;done

其它节点查看

ping测试一下(只展现一个节点其它的节点省略)

5、ssh免密配置

每个节点都要配置

ssh-keygen

for i in 3 4 5 6; do ssh-copy-id root@192.168.115.$i;done

每个节点查看

测试免密登录(只展现一个节点其它的节点省略)

6、在centos1上开启时间同步服务器

安装  yum install -y ntp

配置

vim /etc/ntp.conf

server 127.127.1.0  定义时间服务器

fudge 127.127.1.0 stratum 8 定义时间层次

启动   systemctl start ntpd

客户端对时   for i in 4 5; do ssh 192.168.115.$i  ntpdate 192.168.115.3;done

7、添加磁盘

热扫描磁盘

echo "- - -" > /sys/class/scsi_host/host0/scan

for i in 4 5;do ssh 192.168.115.$i echo "- - -" > /sys/class/scsi_host/host0/scan && lsblk;done

格式化 mkfs.xfs /dev/sdb

8、ceph安装

只在centos1执行

yum install epel-release -y

yum install lttng-ust -y

添加ceph安装源

 yum -y install ceph ceph-deploy 

2、集群构建

创建集群目录

mkdir -p /usr/local/soft/cephcluster

cd /usr/local/soft/cephcluster

创建集群    ceph-deploy new centos1 centos2 centos3

修改配置文件 vim ceph.conf

安装    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

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

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.115.3

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 hf123 123.com

https://192.168.115.3:8443

ceph文件系统创建

创建存储池

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中安装   ceph-deploy install centos4

同步管理信息   ceph-deploy admin centos4

非集群节点,/var/run/ceph 无内容

在centos4   

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.3:6789 /ceph

登录查看

更多推荐

中国这么多 Java 开发者,应该诞生出生态级应用开发框架

1、必须要有,不然就永远不会有应用开发框架,虽然没有芯片、操作系统、数据库、编程语言这些重要。但是最终呈现在用户面前的,总是有软件部分。而软件系统开发,一般都需要应用开发框架,它是软件系统的基础性部件之一。很多很多软件系统都会有Java开发的部分,尤其是政府部门的软件系统大量的使用了Java。市场非常的大,我们有很多的

【国产32位mcu】电动车控制芯片CS32F031C8T6的应用

近年来,随着“新国标”的落地,双轮电动车在智能化、强性能、安全性等方面不断演进,带动了新一轮的换车高峰。电动车控制器作为双轮电动车的核心部件,迎来新的增长。芯海科技32位MCUCS32F031C8T6,作为电动车控制器的主控MCU芯片,很好地满足了双轮电动车在户外工作中的高温宽、高耐潮的工作环境,以及PWM、ADC等高

《DevOps实践指南》- 读书笔记(八)

DevOps实践指南Part6集成信息安全、变更管理和合规性的技术实践22.将信息安全融入每个人的日常工作22.1将安全集成到开发迭代的演示中22.2将安全集成到缺陷跟踪和事后分析会议中22.3将预防性安全控制集成到共享源代码库及共享服务中22.4将安全集成到部署流水线中22.5保证应用程序的安全性22.6确保软件供应

BD就业复习第三天

1.连续活跃区间表的实现思路实现连续活跃区间表是数据仓库中常见的需求,通常用于分析用户或实体在一段时间内的活跃情况。以下是一种可能的实现思路:1.数据模型设计:首先,您需要设计一个数据模型来存储连续活跃区间。通常,这个表包含以下字段:用户/实体ID:标识活跃实体的唯一标识符。开始日期:活跃区间的开始日期或时间戳。结束日

【DevOps系列】Docker数据卷(volume)详解

【DevOps系列】Docker数据卷(volume)详解文章目录【DevOps系列】Docker数据卷(volume)详解一、概述二、数据卷三、为什么使用数据卷volume数据卷的作用:数据卷的特点:四、数据卷volume基本操作4.1创建数据卷4.2查看数据卷4.3查看数据卷详细信息4.4数据卷删除五、数据卷的使用

Python发布订阅模式

Python发布订阅模式1、broadcast-service模块2、基本使用3、使用装饰器4、发布Topic带参数1、broadcast-service模块Python发布订阅模式可以实现程序间的松耦合broadcast-service是一个轻量级的Python发布订阅者框架,且支持同步、异步、多主题订阅等不同场景下

【Python基础】S01E02 列表

S01E02列表列表是什么列表的操作修改、添加和删除元素列表排序列表倒序列表长度遍历整个列表数值列表创建数值列表数值列表简单统计计算列表推导式列表切片复制列表列表是什么在Python中,用方括号([])表示列表,用逗号分隔其中的元素。bicycles=['trek','cannon','redline','specia

华为OD机试 - 构成正方形的数量 - 数据结构map(Java 2023 B卷 100分)

目录专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出3、说明华为OD机试2023B卷题库疯狂收录中,刷题点这里专栏导读本专栏收录于《华为OD机试(JAVA)真题(A卷+B卷)》。刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释、样例测试,发现新题目,随时更新

银行存款问题:整存零取

整存零取月息为0.63%,每年底取出1000,五年刚好取完,计算最初存入金额。(本笔记适合基本熟悉一门编程语言的coder翻阅)【学习的细节是欢悦的历程】Python官网:https://www.python.org/Free:大咖免费“圣经”教程《python完全自学教程》,不仅仅是基础那么简单……地址:https:

QTday5

注册widget.h#ifndefWIDGET_H#defineWIDGET_H#include<QWidget>#include<QIcon>#include<QPushButton>#include<QLineEdit>#include<QLabel>#include<QDebug>#include<QMessag

基于SpringBoot的企业客户管理系统

目录前言一、技术栈二、系统功能介绍管理员功能模块员工功能模块三、核心代码1、登录模块2、文件上传模块3、代码封装前言本论文主要论述了如何使用JAVA语言开发一个企业客户管理系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述企业客户管理系统的当前背景以

热文推荐