小白带你学习ceph分布式存储

2023-09-22 08:41:16

目录

一、概述

1、分布式存储系统

2、特点

2、1 统一存储

2、2高扩展性

2、3可靠性强

2 、4高性能

二、组件

1. Monitor

2. OSD

3. MDS

4. Object

5. PG

6. RADOS

7. Libradio

8. CRUSH

9. RBD

10. RGW

11. CephFS

三、架构图

1、文件上传

2、文件存储前

四、部署

1、环境拓扑

2、准备工作

3、ceph安装

4、客户端挂载


一、概述

1、分布式存储系统

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

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

2、特点

2、1 统一存储

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

2、2高扩展性

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

2、3可靠性强

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

2 、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缓存)

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

2、文件存储前

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

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

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

四、部署

1、环境拓扑

centos1

monitor

osd

192.168.28.5

centos2

osd

192.168.28.6

centos3

osd

192.168.28.7

centos4

Client

192.168.28.8

2、准备工作

关闭防火墙

systemctl stop firewalld.service

systemctl disable firewalld.service

关闭图形网络管理器

systemctl stop NetworkManager

systemctl disable NetworkManager

配置IP

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
cat << e > /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=$1
PREFIX=24
GATEWAY=192.168.28.2
DNS1=192.168.28.2
e
systemctl restart network

这是一个脚本ip

关闭Selinux

setenforce 0

主机名修改

hostnamectl set-hostname centos{1..4}

bash

修改ssh配置

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

systemctl restart sshd

每个机子做一下

hosts文件修改

每个节点主机都需要操作
 

vim /etc/hosts

192.168.28.5   centos1

192.168.28.6  centos2

192.168.28.7   centos3

192.168.28.8  centos4

scp /etc/hosts 192.168.28.6:/etc/

scp /etc/hosts 192.168.28.7:/etc/

scp /etc/hosts 192.168.28.8:/etc/

ssh免密配置

centos1

ssh-keygen

ssh-copy-id 192.168.28.5

这几步是其余三台机器传完秘钥再开始

cat .ssh/ authorized_keys 

for i in 6 7 8;do scp .ssh/authorized_keys 192.168.28.$i:/root/.ssh/; done



centos2

ssh-keygen

ssh-copy-id 192.168.28.5

centos3

ssh-keygen

ssh-copy-id 192.168.28.5

centos4

ssh-keygen

ssh-copy-id 192.168.28.5

传完之后再用ssh全部测试一遍

ssh centos1

ssh centos2

ssh centos3

ssh centos4

时间同步

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

安装

yum install -y ntp

配置

vim /etc/ntp.conf


server 127.127.1.0
fudge 127.127.1.0 stratum 8

server 127.127.1.0

定义时间服务器

fudge 127.127.1.0 stratum 8

定义时间层次

启动

systemctl start ntpd

systemctl enable ntpd

客户端对时

 for i in 6 7;do ssh 192.168.28.$i  ntpdate 192.168.28.5;done

添加磁盘

热扫描磁盘
 

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

for i in 6 7;do ssh 192.168.28.$i echo "- - -" > /sys/class/scsi_host/host0/scan && lsblk;done




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

格式化

三个都格式一下

mkfs.xfs /dev/sdb

3、ceph安装

只在centos1执行
 

yum install epel-release -y

yum install lttng-ust -y

添加ceph安装源

yum -y install ceph ceph-deploy

集群构建

创建集群目录

mkdir -p /usr/local/soft/cephcluster

cd /usr/local/soft/cephcluster

创建集群

ceph-deploy new centos1 centos2 centos3

修改配置文件

vim /usr/local/soft/cephcluster/ceph.conf

#对外开放网段
public network = 192.168.28.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 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安装

ceph mgr module enable dashboard

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

ceph config set mgr mgr/dashboard/server_port 9001

ceph config set mgr mgr/dashboard/ssl false

关闭https

ceph mgr services

创建用户和密码

ceph dashboard set-login-credentials jx123 123.com

https://192.168.28.5: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

4、客户端挂载

在centos1中

安装

cd /usr/local/soft/cephcluster/

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

更多推荐

SpringBoot携带Jre绿色部署项目_免安装Jdk[Linux服务器]

文章目录SpringBoot携带Jre绿色部署项目[Linux服务器]1.实现步骤2.自测成功,如下2-1环境准备2-2运行项目SpringBoot携带Jre绿色部署项目[Linux服务器]说明:实际应用的不方便场景:1.实际项目部属时,现有服务器可能已安装有Jdk,和自己项目的Jdk版本不一致,不敢轻易安装自己使用的

解决Permission is not allowed后基于Ubuntu23.04安装配置docker与docker-compose

参考:Docker官网-InstallDockerEngineonUbuntu虚拟机里安装ubuntu-23.04-beta-desktop-amd64,开启SSH(换源、备份),配置中文以及中文输入法等基于CentOS7安装配置docker与docker-compose一、InstallusingtheAptrepo

代码随想录算法训练营第二天(C) | 977.有序数组的平方 209.长度最小的子数组 59.螺旋矩阵

文章目录前言一、977.有序数组的平方二、209.长度最小的子数组三、59.螺旋矩阵总结前言java版:代码随想录算法训练营第二天|977.有序数组的平方,209.长度最小的子数组,59.螺旋矩阵_愚者__的博客-CSDN博客一、977.有序数组的平方双指针法:int*sortedSquares(int*nums,in

二进制 Deploy Kubernetes v1.23.17 超级详细部署

文章目录1.预备条件2.基础配置2.1配置root远程登录2.2配置主机名2.3安装ansible2.4配置互信2.5配置hosts文件2.6关闭防firewalld火墙2.7关闭selinux2.8关闭交换分区swap2.9修改内核参数2.10安装iptables2.11开启ipvs2.12配置limits参数2.1

nginx详解

目录1什么是nginx2Nginx功能2.1正向代理2.2反向代理2.3负载均衡2.4动静分离3区别4Docker安装nginx5nginx配置文件介绍1什么是nginxnginx是一个高性能的http和反向代理服务器,特点是占有内存少、并发能力强,事实上nginx的并发能力的确在同类的服务器中表现较好。nginx转为

聊一聊Twitter的雪花算法

什么是Twitter的雪花算法方法?这是一种在分布式系统中生成唯一ID的解决方案。Twitter在推文、私信、列表等方面使用这种方法。•ID是唯一且可排序的•ID包含时间信息(按日期排序)•ID适用于64位无符号整数•仅包含数字值符号位(1位):保留位(始终为0)。这可以为将来的请求保留。它可以潜在地用于使整体数字为正

vue柱状图+折线图组合

<template><divid="main"style="width:100%;height:500px;padding-top:.6rem"></div></template>data(){return{weekData:["1周","2周","3周","4周","5周","6周","7周","8周","9周","

控制台日志打印console的封装,加入美化、行显示与打印开关,支持node.js环境

控制台日志打印console的封装,加入美化、行显示与打印开关,支持node.js环境为什么要写这个?封装这个控制台日志打印工具,主要是在项目中自己做的SDK需要提供给其他开发人员使用,加入了日志美化和打印打开,方便了开发人员查找SDK中的日志(提高了逼格),也加深了自己对日志关键性的理解。首先讲下封装时遇到的一些问题

【力扣】27. 移除元素

题目描述给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」

ddos打到高防cdn上会发生什么

ddos打到cdn上会发生什么?当DDoS攻击打到CDN上时,肯定会影响网站的可用性和用户体验。具体DDoS攻击打到CDN上时,会发生以下情况:CDN节点负载增加:DDoS攻击会导致大量的无效流量涌入CDN节点,从而使得节点负载增加。这可能会导致节点响应变慢,甚至出现崩溃、停止响应等情况。影响用户访问:如果DDoS攻击

ArcGIS Engine:C#基础语法的了解

目录01前言02实验2.1创建“HelloWorld”程序2.2创建程序,完成成绩评定功能2.3创建程序,完成1到100的累加2.4窗体应用程序01前言学了一些语言了,确实发现,语言只是工具,只有你作为初恋的语言值得你花大量时间去深究。而对于其他作为应用或者说只是作为桥梁的语言去学习其他内容的课程,没有必要过分深究语言

热文推荐