Ceph分布式存储系统的介绍及详细安装部署过程:详细实战版(保姆级)

news2024/11/18 9:45:20

Ceph简介

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

Ceph特点

• 高性能
a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。
b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
c. 能够支持上千个存储节点的规模,支持TB到PB级的数据。

• 高可用性
a. 副本数可以灵活控制。
b. 支持故障域分隔,数据强一致性。
c. 多种故障场景自动进行修复自愈。
d. 没有单点故障,自动管理。

• 高可扩展性
a. 去中心化。
b. 扩展灵活。
c. 随着节点增加而线性增长。

• 特性丰富
a. 支持三种存储接口:块存储、文件存储、对象存储。
b. 支持自定义接口,支持多种语言驱动。

Ceph架构

支持三种接口:
• Object:有原生的API,而且也兼容Swift和S3的API。
• Block:支持精简配置、快照、克隆。
• File:Posix接口,支持快照。
在这里插入图片描述

Ceph核心组件及概念介绍

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

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

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

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

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

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

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

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

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

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

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

• Pool:存储池,是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本
分布策略;支持两种类型:副本(replicated)和 纠删码(Erasure Code)
> 一个Pool里有很多PG;
> 一个PG里包含一堆对象;一个对象只能属于一个PG;
> PG属于多个OSD,分布在不同的OSD上;

实验环境

server153 centos7 192.168.121.153 系统盘sda OSD: sdb sdc 20GB ceph-deploy mon X 1 osd X 2
server154 centos7 192.168.121.154 系统盘sda OSD: sdb sdc 20GB mon X 1 osd X 2
server155 centos7 192.168.121.155 系统盘sda OSD: sdb sdc 20GB mon X 1 osd X 2

首先就是环境的准备,我这里选用三台主机
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样环境就准备好了,接下来启动三台主机
先同步所有机器的时间,ceph分布式存储系统对时间的要求还是比较严格的

yum  install -y  ntpdate
ntpdate  ntp.aliyun.com

然后配置主机间的解析,这个看自己的集群来配

vim /etc/hosts

在这里插入图片描述
关闭selinux

setenforce  0
sed  -i  '/SELINUX=/cSELINUX=disabled'    /etc/selinux/config

然后配置各主机之间的ssh密钥互信,这里我就不介绍了
这个我在之前的作品中有详细介绍过,忘记了的话可以去看看
ssh密钥互信的配置
还要注意一点,对自己主机的密钥互信也要配,不是其它两台而已

然后修改最大打开文件数

cat > /etc/security/limits.conf << EOF
*  soft  nofile  65535
*  hard  nofile 65535
EOF

然后退出重连,让配置文件在当前环境生效
在这里插入图片描述
配置软件包下载的yum源,在阿里源就有
配置阿里的epel源

wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo

然后配置ceph的yum源,阿里也有,根据自己的系统来选,我用的是centos7
这个是阿里镜像源
在这里插入图片描述

cat > /etc/yum.repos.d/ceph.repo << EOF
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
gpgcheck=0
priority=1
 
[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
gpgcheck=0
priority=1
 
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
gpgcheck=0
priority=1
EOF

重新制作yum缓存

yum  clean all
yum  makecache  fast 

选一台主机来安装ceph-deploy,用于集群的初始化
可以用别的主机,也可以用这三台中的某一台,我这里选用153
用pip来安装,因为yum安装的版本太低

[root@server153 ~]# pip  install  ceph-deploy==2.0.1  -i https://mirrors.aliyun.com/pypi/simple/

查看ceph版本是否对

[root@server153 ~]# ceph-deploy --version
2.0.1

没问题就开始初始化集群
先创建一个目录来执行后面的命令,因为后面会产生一些配置文件,都是在这个目录里执行才有效

[root@server153 ~]# mkdir  ~/ceph-cluster
[root@server153 ~]# cd ~/ceph-cluster/

开始创建集群

[root@server153 ceph-cluster]# ceph-deploy new server153 server154 server155

在这里插入图片描述
这样集群就创建好了

然后所有节点安装 ceph 组件包,当然了在ceph-deploy执行就可以了

[root@server153 ceph-cluster]# ceph-deploy  install --no-adjust-repos server153 server154 server155

部署 monitor 服务,产生相关的管理秘钥

[root@server153 ceph-cluster]# ceph-deploy mon create-initial

查看当前目录产生的文件

[root@server153 ceph-cluster]# ls
ceph.bootstrap-mds.keyring  ceph.client.admin.keyring
ceph.bootstrap-mgr.keyring  ceph.conf
ceph.bootstrap-osd.keyring  ceph-deploy-ceph.log
ceph.bootstrap-rgw.keyring  ceph.mon.keyring

查看启动的服务和端口
在这里插入图片描述
将配置文件分发给所以节点

[root@server153 ceph-cluster]# ceph-deploy admin server153 server154 server155

在这里插入图片描述

然后查看我们添加的两块磁盘

ls: cannot access blk: No such file or directory
[root@server153 ceph-cluster]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                  8:0    0   40G  0 disk 
├─sda1               8:1    0  400M  0 part /boot
└─sda2               8:2    0 39.6G  0 part 
  ├─centos-lv_root 253:0    0 37.6G  0 lvm  /
  └─centos-lv_swap 253:1    0    2G  0 lvm  [SWAP]
sdb                  8:16   0   20G  0 disk 
sdc                  8:32   0   20G  0 disk 
sr0                 11:0    1 1024M  0 rom  

每个节点都一样的
现在将他们创建为osd对象

[root@server153 ceph-cluster]# ceph-deploy  osd create --data /dev/sdb server153
[root@server153 ceph-cluster]# ceph-deploy  osd create --data /dev/sdb server154
[root@server153 ceph-cluster]# ceph-deploy  osd create --data /dev/sdb server155
[root@server153 ceph-cluster]# ceph-deploy  osd create --data /dev/sdc server153
[root@server153 ceph-cluster]# ceph-deploy  osd create --data /dev/sdc server154
[root@server153 ceph-cluster]# ceph-deploy  osd create --data /dev/sdc server155

然后部署 MGR 服务

[root@server153 ceph-cluster]# ceph-deploy  mgr   create  server153 server154 server155

然后查看集群情况

[root@server153 ceph-cluster]# ceph -s

在这里插入图片描述
可以看到是正常的,但是有一个警告,提示 mon允许运行在 全局 非安全环境下
所以我们现在去解决这个问题

[root@server153 ceph-cluster]# ceph config set  mon  auth_allow_insecure_global_id_reclaim false

然后再查看集群的情况

[root@server153 ceph-cluster]# ceph -s

在这里插入图片描述
这样集群就正常了
ceph分布式存储系统的安装这样就完成了
希望对大家有用
下一篇再讲ceph分布式存储系统的使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1250058.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Python的面向对象分类实例Ⅱ

接上一部分继续介绍~ 一、地类矢量转栅格 这一步是为了能让地类值和影像的对象落在同一区域&#xff0c;从而将影像中的分割对象同化为实际地物类别。 train_fn r".\train_data1.shp" train_ds ogr.Open(train_fn) lyr train_ds.GetLayer() driver gdal.GetDrive…

【GPT-3.5】通过python调用ChatGPT API与ChatGPT对话交流

文章目录 一、引言二、AIGC简介三、OpenAI介绍四、GPT-3.5介绍五、获得OpenAI API Key六、调用ChatGPT API实现与ChatGPT对话七、参考链接 一、引言 ChatGPT 的火爆&#xff0c;成功带火了AIGC&#xff0c;让它进入大众的视野。 ChatGPT 和Whisper API 开发者现在可以通过API将…

【Mybatis-Plus篇】Mybatis-Plus基本使用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

网络数据结构skb_buff原理

skb_buff基本原理 内核中sk_buff结构体在各层协议之间传输不是用拷贝sk_buff结构体&#xff0c;而是通过增加协议头和移动指针来操作的。如果是从L4传输到L2&#xff0c;则是通过往sk_buff结构体中增加该层协议头来操作&#xff1b;如果是从L4到L2&#xff0c;则是通过移动sk_…

一个正整数转为2进制和8进制,1的个数相同的第23个数是什么?

package cn.com;import java.lang.*;//默认加载public class C2 {//10进制转8进制static int HtoO(int n){int cnt 0;while(n!0){cntn%8;n/8;}return cnt;}//10进制转2进制static int HtoB(int n){int cnt 0;while(n!0){cntn%2;n/2;}return cnt;}public static void main(Str…

Linux常用命令——bind命令

在线Linux命令查询工具 bind 显示或设置键盘按键与其相关的功能 补充说明 bind命令用于显示和设置命令行的键盘序列绑定功能。通过这一命令&#xff0c;可以提高命令行中操作效率。您可以利用bind命令了解有哪些按键组合与其功能&#xff0c;也可以自行指定要用哪些按键组合…

NX二次开发UF_CURVE_ask_curve_fit_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_ask_curve_fit_data Defined in: uf_curve.h int UF_CURVE_ask_curve_fit_data(tag_t curve_feature, UF_CURVE_curve_fit_data * curve_fit_data ) overview 概述 Ask c…

windows c++ open3D release版本下载与使用

文章目录 open3d库下载路径下载库的使用 Open3D的下载与成功调用&#xff0c;咱们不使用vs来编译。 我开始时候吧&#xff0c;想做个vs编译&#xff0c;后来就是在vs中反复进坑。编译来来去去都是报错。 咱们使用新方法&#xff0c;仅仅修改一两句代码&#xff0c;简单cmd编译即…

记录华为云服务器(Linux 可视化 宝塔面板)-- 安全组篇

文章目录 前言安全组说明安全组的特性安全组的应用场景 进入安全组添加基本规则添加自定义规则如有启发&#xff0c;可点赞收藏哟~ 前言 和windows防火墙类似&#xff0c;安全组是一种虚拟防火墙&#xff0c;具备状态检测和数据包过滤功能&#xff0c;可以对进出云服务器的流量…

laravel8安装多应用多模块(笔记三)

先安装laravel8 Laravel 安装&#xff08;笔记一&#xff09;-CSDN博客 一、进入项目根目录安装 laravel-modules composer require nwidart/laravel-modules 二、 大于laravel5需配置provider&#xff0c;自动生成配置文件 php artisan vendor:publish --provider"Nwid…

RevCol实战:使用RevCol实现图像分类任务(二)

文章目录 训练部分导入项目使用的库设置随机因子设置全局参数图像预处理与增强读取数据设置Loss设置模型设置优化器和学习率调整策略设置混合精度&#xff0c;DP多卡&#xff0c;EMA定义训练和验证函数训练函数验证函数调用训练和验证方法 运行以及结果查看测试完整的代码 在上…

NX二次开发UF_CURVE_add_faces_ocf_data 函数介绍

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan UF_CURVE_add_faces_ocf_data Defined in: uf_curve.h int UF_CURVE_add_faces_ocf_data(tag_t face_tag, UF_CURVE_ocf_data_p_t uf_offset_data ) overview 概述 Add a face col…

系列九、声明式事务(xml方式)

一、概述 声明式事务(declarative transaction management)是Spring提供的对程序事务管理的一种方式&#xff0c;Spring的声明式事务顾名思义就是采用声明的方式来处理事务。这里所说的声明&#xff0c;是指在配置文件中声明&#xff0c;用在Spring配置文件中声明式的处理事务来…

旋转框检测项目相关python库知识总结(mmrotate、ppyolo_r、yolov5_obb)

旋转框常用于检测带有角度信息的矩形框&#xff0c;即矩形框的宽和高不再与图像坐标轴平行。相较于水平矩形框&#xff0c;旋转矩形框一般包括更少的背景信息。旋转框检测常用于遥感等场景中&#xff0c;本博文简单的介绍了可应用于旋转框数据训练的开源库&#xff0c;数据结构…

Qt 软件开发框架(主要部分)

目录 1、 一个软件基本要素 &#xff08;1&#xff09;UI模块 &#xff08;2&#xff09;网络模块 &#xff08;3&#xff09;业务逻辑模块 &#xff08;4&#xff09;中间层 &#xff08;5&#xff09;独立模块&#xff08;守护进程、更新模块、日志收集模块…&#xff…

【数据结构】时间和空间复杂度

马上就要进入到数据结构的学习了 &#xff0c;我们先来了解一下时间和空间复杂度&#xff0c;这也可以判断我们的算法是否好坏&#xff1b; 如何衡量一个算法的好坏&#xff1f; 就是看它的算法效率 算法效率 算法效率分析分为两种&#xff1a;第一种是时间效率&#xff0c;第…

vue怎么实现国际化? vue-i18n 插件实现国际化,支持切换不同语言

依赖的文档开始 | Vue I18n 一、安装 npm install vue-i18n 如果在一个模块系统中使用它&#xff0c;你必须通过 Vue.use() 明确地安装 vue-i18n&#xff1a; import Vue from vue import VueI18n from vue-i18nVue.use(VueI18n)二、使用 在 src 下创建 lang 文件夹 1.准…

U-Boot 之九 详解 Pinctrl 子系统、命令、初始化流程、使用方法

嵌入式芯片中,引脚复用是一个非常常见的功能,U-Boot 提供一个类似 Linux Kernel 的 Pinctrl 子系统来处理引脚复用功能。正好最近用到了这部分功能,需要移植 Pinctrl 驱动,特此记录一下学习过程。 架构 U-Boot 提供一个类似 Linux Kernel 的 Pinctrl 子系统,用来统一各芯…

vue2:mixin混入的使用

前言 在使用vue2开发业务时,难免会遇到一些多组件公用的方法和基础的数值。 比如你的页面里面有很多相似的列表展示,分页器都是默认1页10行,都需要调用某个公共的接口,或者某一个操作函数很多页面都需要调用。 这个时候,就可以使用mixin和extend这两个api,将公共的数据和代码…

Jenkins与Docker的自动化CI/CD流水线实践

Pipeline 有诸多优点&#xff0c;例如&#xff1a; 项目发布可视化&#xff0c;明确阶段&#xff0c;方便处理问题 一个Jenkins File文件管理整个项目生命周期 Jenkins File可以放到项目代码中版本管理 Jenkins管理界面 操作实例&#xff1a;Pipeline的简单使用 这里是比较…