ceph(分布式存储)

article/2025/8/25 21:59:53

文章目录

  • 一、ceph的组件和功能
    • 1.简介
    • 2.层次结构和功能
  • 二、ceph的数据读写流程
  • 三、使用ceph-deploy安装一个最少三个节点的ceph集群(推荐3个或以上的磁盘作为专用osd)
    • 1.基础配置
      • 配置主机名
      • 给三台主机写入hosts解析
      • 配置node1到所有节点root用户免密钥互信
      • 配置时间同步
      • 在node1上配置本地yum源
    • 2.部署ceph集群
      • 步骤一:安装ceph-deploy
      • 步骤二:创建ceph集群,在/ceph-cluster目录下生成配置文件。
      • 步骤三:准备日志磁盘分区
      • 步骤四:创建OSD存储空间
      • 步骤五:查看ceph状态,验证
      • 步骤六:启用dashboard

一、ceph的组件和功能

1.简介

Ceph是一种为了优秀的性能、可靠性和可扩展性而设计的统一的、 分布式的存储系统。
“统一的” : 意味着Ceph可以一套存储系统同时提供对象存储、 块存储和文件系统存储三种功能, 以便在满足不同应用需求的前提下简化部署和运维。
“分布式” : 在Ceph系统中则意味着真正的无中心结构和没有理论上限的系统规模可扩展性。

2.层次结构和功能

image-20210319112421811

RADOS: 是一个完整的对象存储系统,所有存储在Ceph系统中的用户数据最终都是由这一层来存储的,主要由OSD、Monitor组成。

OSD:由数目可变的大规模OSD(Object Storage Devices)组成的集群,负责存储所有的Objects数据。( 默认有3个副本,但可以调整副本数)

Monitor:由少量Monitors组成的强耦合、小规模集群,负责管理Cluster Map。其中,Cluster Map是整个RADOS系统的关键数据结构,管理集群中的所有成员、关系和属性等信息以及数据的分发。

LIBRADOS:层的功能是对RADOS进行抽象和封装,并向上层提供API。

RADOSGW:功能特性基于LIBRADOS之上,提供当前流行的RESTful协议的网关,API抽象层次更高,并且兼容S3和Swift接口,作为对象存储

RBD(Rados Block Device):功能特性也是基于LIBRADOS之上,通过LIBRBD创建一个块设备,通过QEMU/KVM附加到VM上,作为传统的块设备来用。目前OpenStack、CloudStack等都是采用这种方式来为VM提供块设备,同时也支持快照、COW(Copy On Write)等功能。

Ceph FS(Ceph File System):功能特性是基于RADOS来实现分布式的文件系统,引入了MDS(Metadata Server),主要为兼容POSIX文件系统提供元数据。一般都是当做文件系统来挂载。(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )

MGR (ceph-mgr) :该组件的主要作用是分担和扩展monitor的部分功能,减轻monitor的负担,让更好地管理ceph存储系统

二、ceph的数据读写流程

image-20210319115539721

当某个client需要向Ceph集群写入一个file时, 首先需要在本地完成寻址流程, 将file变为一个object, 然后找出存储该object的一组三个OSD。

找出三个OSDS, client将直接和Primary OSD通信,
发起写入操作(步驟1 ) ;
Primary OSD收到请求后, 分别向Secondary OSD和
Tertiary OSD发起写入操作(步驟2 、 3) ;
当Secondary OSD和Tertiary OSD各自完成写入操作后, 将分别向Primary OSD发送确认信息(步骤4、 5) ;
当Primary OSD确信其他两个OSD的写入完成后, 则自己也完成数据写入, 并向client确认object写入操作完成( 步骤6) ;

三、使用ceph-deploy安装一个最少三个节点的ceph集群(推荐3个或以上的磁盘作为专用osd)

1.基础配置

IP地址主机名附加磁盘系统
192.168.43.111node1sdb,sdc,sddCentOS 7 X64
192.168.43.112node2sdb,sdc,sddCentOS 7 X64
192.168.43.113node3sdb,sdc,sddCentOS 7 X64
192.168.43.114clientsdb,sdc,sddCentOS 7 X64

sdb划分为两个区各5G,作为journal跟cache的缓存盘;sdc,sdd为数据共享盘

关闭防火墙和selinux

配置主机名

[root@localhost ~]# hostnamectl set-hostname node1
[root@localhost ~]# hostnamectl set-hostname node2
[root@localhost ~]# hostnamectl set-hostname node3
[root@localhost ~]# hostnamectl set-hostname client

给三台主机写入hosts解析

在这里插入图片描述

配置node1到所有节点root用户免密钥互信

只在node1上配置,生成密钥对
[root@node1 ~]# ssh-keygen -f ~/.ssh/id_rsa -N ‘’ -q
公钥分发到所有节点
[root@node1 ~]# for i in node1 node2 node3 client; do ssh-copy-id $i; done
验证免密钥互信
[root@node1 ~]# for i in node1 node2 node3 client; do ssh $i hostname; done
node1
node2
node3
client
在这里插入图片描述
在这里插入图片描述

配置时间同步

配置node1为时间服务器,其他节点作为客户端向node1同步时间
四台需同时操作
在这里插入图片描述

修改配置文件
在这里插入图片描述

重启,并设置开机自启
在这里插入图片描述

检查时间同步
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

在node1上配置本地yum源

[root@node1 ~]# cat getcephrpm.sh
#!/bin/shurl=$1
version=$2curl $1 |awk -F '"' '{print $4}' |grep $2 > /home/$2-listmkdir -p /ceph/ceph-$2-rpmfor i in `cat /home/$2-list`
doecho "===================== Now get file: $i ======================="wget -r -p -np -k -P /ceph/ceph-$2-rpm $url$i
donerm -f /home/$2-list执行脚本:
[root@node1 ~]# sh getcephrpm.sh http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ 14.2.10-0查看下载的指定包
[root@node1 ~]# ls /ceph/ceph-14.2.10-0-rpm/mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/同样,下载http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/ 下面的rpm包
[root@node1 ~]# sh getcephrpm.sh http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/ 14.2.10-0

在这里插入图片描述

ceph下创建目录x86_64和noarch,将下载好的x86_64和noarch下面内容分别拷贝到创建的对应目录

[root@node1 ~]# mkdir /ceph/{x86_64,noarch}
[root@node1 ~]# mv /ceph/ceph-14.2.10-0-rpm/mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/* /ceph/x86_64/
[root@node1 ~]# mv /ceph/ceph-14.2.10-0-rpm/mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/* /ceph/noarch/

单独下载ceph部署工具ceph-deploy至/ceph/ceph-noarch/
在这里插入图片描述

[root@node1 ~]# wget http://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-nautilus/el7/noarch/ceph-deploy-2.0.1-0.noarch.rpm -P /ceph/noarch/

使用createrepo创建仓库档案

[root@node1 ~]# yum install createrepo -y
[root@node1 ~]# createrepo -v /ceph/x86_64/
[root@node1 ~]# createrepo -v /ceph/noarch/

在这里插入图片描述
说明:
filelists.xml.gz:软件报的安装清单
primary.xml.gz:软件报的基本/主要信息
other.xml.gz:软件包的其他信息
repomd.xml:提高.xml.gz下载和校验信息

目录文件制作ISO文件

[root@node1 ~]# yum install mkisofs -y
[root@node1 ~]# mkisofs -r -o /opt/ceph.iso /ceph/

在这里插入图片描述

node1配置为yum仓库服务器,其他节点使用ftp方式使用ceph仓库

# 上传ceph.iso到node1
[root@node1 ~]# ll ceph.iso
-rw-r--r-- 1 root root 2408808448 Mar 18 09:15 ceph.iso# 安装httpd并设置为开机自启动
[root@node1 ~]# yum install -y vsfpd
[root@node1 ~]# systemctl enable vsftpd --now# 挂载ceph.iso到/var/ftp
[root@node1 ~]# mkdir /var/ftp/ceph
[root@node1 ~]# echo "/opt/ceph.iso  /var/ftp/ceph  iso9660 defaults 0 0" >> /etc/fstab 
[root@node1 ~]# mount -a# yum文件ceph.repo由后面的ceph-deploy工具安装时自动生成。

在这里插入图片描述
在这里插入图片描述

2.部署ceph集群

步骤一:安装ceph-deploy

注意:直接设置环境变量即可,否则集群部署过程将使用官方yum源;只在第一个节点操作

1、在node1上安装部署工具,学习工具的语法格式。
Ceph官方推出了一个用python写的工具 cpeh-deploy,可以很大的简化ceph集群的配置过程
[root@node1 ceph-cluster]# yum install /var/ftp/ceph/noarch/ceph-deploy-2.0.1-0.noarch.rpm
注意:安装高版本的ceph-deploy,否则后面配置会报错
[root@node1 ~]# ceph-deploy --help
[root@node1 ~]# ceph-deploy mon --help

2、node1上创建工作目录
[root@node1 ~]# mkdir /ceph-cluster
[root@node1 ~]# cd /ceph-cluster

步骤二:创建ceph集群,在/ceph-cluster目录下生成配置文件。

1、创建ceph集群
创建一个新集群,并设置mon节点。
node1-node3添加epel源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

在这里插入图片描述
解决方法——pip install distribute
[root@node1 ceph-cluster]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@node1 ceph-cluster]# yum install python2-pip -y
[root@node1 ceph-cluster]# pip install distribute -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
再次执行:ceph-deploy new node1 node2 node3
在这里插入图片描述

2、给node1节点安装ceph相关软件包。
[root@node1 ceph-cluster]# ceph-deploy install node1 node2 node3
在这里插入图片描述

3、添加监控节点
初始化所有节点的mon服务,也就是启动mon服务。
[root@node1 ceph-cluster]# ceph-deploy mon create-initial
作用是将ceph.conf配置文件拷贝到所有mon节点,并将ceph-mon服务启动并设置开机自启
[root@node3 ~]# ls /etc/ceph/
ceph.conf rbdmap tmpn1zEAD
[root@node3 ~]# systemctl is-active ceph-mon@node3.service
active

4、创建ceph管理节点(mgr)
注意:每个运行了mon的节点上都需要安装mgr节点
[root@node1 ceph-cluster]# ceph-deploy mgr create node1 node2 node3
在这里插入图片描述

步骤三:准备日志磁盘分区

注意:sdb1和sdb2两个分区用来做存储服务器的journal缓存盘。生产中固态用于缓存,sas用户共享。

1、格式化sdb
[root@node1 ceph-cluster]# for i in node{1…3}
do
ssh $i parted /dev/sdb mklabel gpt
ssh $i parted /dev/sdb mkpart primary 1 50%
ssh $i parted /dev/sdb mkpart primart 50% 100%
done
在这里插入图片描述

2、磁盘分区后的默认权限无法让ceph对其进行读写操作,需要修改权限。
[root@node1 ceph-cluster]# for i in node{1…3}
do
ssh $i chown ceph.ceph /dev/sdb1 /dev/sdb2
done
以上操作服务器重启后再次重值导致授权失效,所以需要把规则写到配置文件实现永久有效。
规则1:如果设备名为/dev/sdb1,则设备文件的拥有者和拥有组为ceph
规则2:如果设备名为/dev/sdb2,则设备文件的拥有者和拥有组为ceph
[root@node1 ceph-cluster]# vim /etc/udev/rules.d/70-sdb.rules

ENV{DEVNAME}==“/dev/sdb1”,OWNER=“ceph”,GROUP=“ceph”

ENV{DEVNAME}==“/dev/sdb2”,OWNER=“ceph”,GROUP=“ceph”

复制到其他osd节点
[root@node1 ceph-cluster]# for i in node{2…3}
do
scp /etc/udev/rules.d/70-sdb.rules $i:/etc/udev/rules.d/
done
在这里插入图片描述

步骤四:创建OSD存储空间

1、初始化清空磁盘数据(仅在node1操作)
注意ceph-deploy v2.0.0开始不再使用ceph-disk命令来初始化osd磁盘,如果还使用旧的命令初始磁盘报错
[root@node1 ceph-cluster]# for i in node{1…3}
do
ssh $i parted /dev/sdc mklabel gpt
ssh $i parted /dev/sdd mklabel gpt
done
清理磁盘
[root@node1 ceph-cluster]# for i in node{1…3}
do
ssh $i ceph-volume lvm zap /dev/sdc
ssh $i ceph-volume lvm zap /dev/sdd
done

2、创建OSD存储空间
[root@node1 ceph-cluster]# ceph-deploy osd create --data /dev/sdc --journal /dev/sdb1 --data /dev/sdd --journal /dev/sdb2 node1
// 创建osd存储设备,sdc提供存储空间,sdb1提供缓存
[root@node1 ceph-cluster]# ceph-deploy osd create --data /dev/sdc --journal /dev/sdb1 --data /dev/sdd --journal /dev/sdb2 node2
[root@node1 ceph-cluster]# ceph-deploy osd create --data /dev/sdc --journal /dev/sdb1 --data /dev/sdd --journal /dev/sdb2 node3

步骤五:查看ceph状态,验证

在主节点生成的ceph.client.admin.keyring文件拷贝至所有节点的/etc/ceph下
[root@node1 ceph-cluster]# ceph-deploy admin node1 node2 node3

检查集群状态:使用命令 ceph health 或者 ceph -s
[root@node1 ceph-cluster]# ceph health
在这里插入图片描述
在这里插入图片描述

步骤六:启用dashboard

自 nautilus开始,dashboard作为一个单独的模块独立出来了,使用时需要在所有的mgr节点上单独安装
在所有的mgr节点上单独安装
[root@node1 ceph-cluster]# for i in node{1…3}
do
ssh $i yum install -y ceph-mgr-dashboard
done

启用dashboard
[root@node1 ceph-cluster]# ceph mgr module enable dashboard --force
在这里插入图片描述
默认启用SSL/TLS,所以需要创建自签名根证书
[root@node1 ceph-cluster]# ceph dashboard create-self-signed-cert

创建具有管理员角色的用户
[root@node1 ceph-cluster]# ceph dashboard ac-user-create admin admin administrator
{“username”: “admin”, “lastUpdate”: 1616031372, “name”: null, “roles”: [“administrator”], “password”: “$2b$12$4wa4pCKkDf.pvDO9LFldZuwn1GRt.W6zDXvV9QHxnjovrmpA3inWS”, “email”: null}
在这里插入图片描述

查看ceph-mgr服务
[root@node1 ceph-cluster]# ceph mgr services
{
“dashboard”: “https://node1:8443/”
}
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/7y5XDmcv.shtml

相关文章

【ceph】学习笔记(三)三大存储模式简介

Ceph本身是一个统一存储,支持块、对象和文件等所有存储形态 在RADOS集群之上,Ceph构建了块存储、文件存储和对象存储等存储形态。由于RADOS集群本身是以对象为粒度进行数据存储的,因此上述三种存储形态,在最终存储数据的时候都划…

Ceph分布式存储

目录 一、ceph简介 1、什么是ceph 2、ceph支持的三种存储方式 1)块存储RBD 2)对象存储RGW 3)文件系统存储ceph-fs 3、ceph的主要特点 4、ceph组件作用 OSD:(Object Storage Device) Monitors MD…

Ceph 存储介绍

文章目录 一、Ceph 简介二、Ceph 特点三、Ceph 应用场景四、Ceph 核心组件五、Ceph 存储系统的逻辑层次结构六、RADOS 的系统逻辑结构七、Ceph 数据存储过程八、Ceph IO 流程及数据分布1. 正常 IO 流程图2. 新主 IO 流程图 九、Ceph Pool 和 PG 分布情况 一、Ceph 简介 ceph 是…

王道2021版计算机考研书勘误表

转载于 王道论坛 计算机考研QQ群,很多大学的计算机考研/软件考研资料(见群文件) 群号是 954288959 您还可以在以下平台找到我们 你点的每个在看,我都认真当成了喜欢

计算机组成原理【by王道考研计算机】

文章目录 第一章1. 什么是计算机系统2. 硬件的发展3. 计算机硬件的基本组成冯诺依曼结构现代计算机结构主存储器运算器控制器工作过程实例 4. 计算机系统的层次结构五层结构三种级别的语言 5. 计算机的性能指标存储器的容量CPU其他常用时间单位 第二章1. 进制转换2. 字符与字符…

王道考研-计算机网络

目录 P1 1.1.1 概念、组成、功能、分类1.计算机网络概念2.计算机网络的功能3.计算机网络的组成4.计算机网络分类 P2 1.1.2 标准化工作机器相关组织1.标准化工作 P3 1.1.3 速度指标1.速率与带宽2.吞吐量4.性能指标2.时延带宽积3.往返时延RTT4.利用率 P5 1.2.1 分层结构、协议、接…

王道考研系列 计算机考研 ——机试指南(第二版) 笔记(一)

计算机机试,王道机试指南(第二版)笔记 机试指南一些笔记。。。 题目代码github链接 https://github.com/BenedictYoung 链接 视频 and pdf 链接:https: //pan.bai du. com/s/1WFl E5hWgg Y9c3J97 fVbsRg?pwd xwep 提取 码&#…

2021王道考研pdf

参考一:(2021) https://www.bilibili.com/read/cv5517739/ 计算机考研王道天勤PDF百度网盘(数据结构、操作系统、计算机组成原理、计算机网络)(!!!!b站这个链…

操作系统笔记(含王道计算机考研——操作系统课件)

操作系统(OS) 笔记根据B站王道计算机考研——操作系统视频整理所得,视频链接:https://b23.tv/0I2qex视频中所用课件:链接:https://pan.baidu.com/s/101bFWm0Tv0emNpEneidYPA 提取码:y3dd笔记md…

一篇学完:王道考研408计算机网络(全)

笔记首发于:lengyueling.cn PDF版本附在 lengyueling.cn 对应文章结尾,欢迎下载访问交流 网络体系结构 概念与功能 网络:网样的东西或者网站系统 计算机网络:是一个将分散的、具有独立功能的计算机系统,通过通信设…

24考研王道计算机组成原理笔记

24考研王道计算机组成原理笔记 文章目录 24考研王道计算机组成原理笔记前言一、计算机系统概述1.1 计算机的发展1.2 计算机硬件1.2.1 计算机硬件的基本组成1.2.2 各个硬件的工作原理1.2.3 计算机系统的层次结构 1.3 计算机性能指标1.3.1 存储器性能指标1.3.2 CPU性能指标1.3.3 …

2023年计算机考研专业课408 - 王道书资源做题本OneNote电子笔记

💻cs-408 构建本仓库的初衷是记录自己备考计算机专业课408的过程本仓库收纳了2023年四本王道复习指导书和2023年王道书上的刷题本本仓库分享了一些自己从2022年6月备考以来的学习408心得本仓库分享了自己使用OntNote制作的电子笔记 希望本仓库的一些经验和资源能够…

考研408 王道计算机考研 (初试/复试) 网课笔记总结

计算机初试、复试笔记总结(导航栏)📝 408 考研人,人狠话不多:3、2、1,上链接 ! 408 考研初试 - 备战期,专业课笔记,导航🚥🚥🚥 &…

2023考研计算机408王道考研网盘资源

23考研王道考研计算机408网盘资源,关注【小黑马资料库】工粽号,获取全部资料吧! 在父亲眼里,他自己成绩优秀是理所当然的,因此他无法容忍自己的儿子头脑不聪明且成绩不优秀。因此,类似于“我很笨&#xff…

数据结构(王道计算机考研笔记)

一、数据结构概念: 对数据之间的关系的结构类型进行总结归纳。 学好这门课,让我们成为信息革命的参与者。 名词解析: 数据项:您申请一个微博账号,其中姓名,性别这些就是数据项 组合项:您账号…

计算机网络:王道考研

前言 计算机考研课程408包括计组、计网、操作系统、数据结构与算法,计组在21年就补完了——计算机组成原理:最详细笔记!,数据结构与算法、操作系统都看了,就差计网这个八股文,系统的听了一遍考研课程《王道-计算机网络…

王道计算机考研——计算机组成原理笔记

计算机组成原理 1.计算机系统概述1. 计算机发展历程2.计算机系统的组成3.存储器4.运算器5. 控制器6. 计算机的工作过程(重点)7. 计算机的层次结构8.计算机的性能指标1. 存储器2. CPU3.系统整体的性能指标4. 思考 2. 数据的表示和运算1.进位计数制2.BCD码…

王道计算机网络总结

文章目录 第一章 计算机网络体系结构概念&功能 第二章 物理层物理层基本概念接口特性:通讯方式:编码与调制 数据交换方式电路交换报文交换分组交换数据报方式虚电路方式 数据交换的三种方式 传输介质物理层设备 第三章 数据链路层封装成帧差错控制流…

王道考研计算机组成原理(转载)

计算机组成原理比较经典的书籍有: 唐朔飞的《计算机组成原理》、《计算机组成原理——学习指导与习题解答》自中英的《计算机组成原理》李春葆的《计算机组成原理联考辅导教程》 第一章 计算机系统概述 【复习提示】 本章是组成原理的概述,考查时易针…

【专栏必读】王道考研408数据结构+计算机算法设计与分析万字笔记、题目题型总结、注意事项、目录导航和思维导图

王道考研复习指导下载(密码7281) 其他科目导航 【专栏必读】王道考研408计算机组成原理万字笔记(从学生角度辅助大家理解):各章节导航及思维导图 【专栏必读】王道考研408操作系统万字笔记(从学生角度辅助…