ceph存储系统

ceph存储系统

简介

  • ceph被称作面向未来的存储
  • 可以实现的存储方式
    • 块存储:提供像普通硬盘一样的存储,为使用者提供“硬盘”
    • 文件系统存储:类似于NFS的共享方式,为使用者提供共享文件夹
    • 对象存储:像百度云盘一样,需要使用单独的客户端
  • ceph还是一个分布式的存储系统,非常灵活。如果需要扩容,只要向ceph集中增加服务器即可。
  • ceph存储数据时采用多副本的方式进行存储,生产环境下,一个文件至少要存3份。ceph默认也是三副本存储。

ceph的构成

  • Ceph OSD 守护进程: Ceph OSD 用于存储数据。此外,Ceph OSD 利用 Ceph 节点的 CPU、内存和网络来执行数据复制、纠删代码、重新平衡、恢复、监控和报告功能。存储节点有几块硬盘用于存储,该节点就会有几个osd进程。
  • Ceph Mon监控器: Ceph Mon维护 Ceph 存储集群映射的主副本和 Ceph 存储群集的当前状态。监控器需要高度一致性,确保对Ceph 存储集群状态达成一致。维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。
  • MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据。
  • RGW:对象存储网关。主要为访问ceph的软件提供API接口。

搭建ceph

服务器名称IP简介
client192.168.2.1客户端(同时也是临时的yum仓库和时钟服务器)
node1192.168.2.101管理节点,硬盘/dev/sda系统盘,/dev/sdb 20G,/dev/sdc 20G
node2192.168.2.102节点,硬盘/dev/sda系统盘,/dev/sdb 20G,/dev/sdc 20G
Node3192.168.2.103节点,硬盘/dev/sda系统盘,/dev/sdb 20G,/dev/sdc 20G

注意事项

  1. 防火墙关闭
  2. 控制节点到各个节点的域名解析和免密登录一定要配置好
  3. 时钟一定要同步
  4. 安装的软件可以重复执行命令查看是否成功
  5. 创建OSD的时候一定要根据自己的硬盘名称来创建

配置网络和防火墙

  • client
# 关闭防火墙
systemctl stop firewalld
setenforce 0
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config

# 搭建yum源
yum install -y vsftpd
systemctl enable vsftpd --now
mkdir -p /var/ftp/{centos,ceph}
echo "/data/iso/ceph10.iso  /var/ftp/ceph  iso9660  defaults 0  0" >> /etc/fstab
echo "/data/iso/centos7.iso  /var/ftp/centos  iso9660  defaults 0  0" >> /etc/fstab
mount -a
  • node1
# 设置服务器名,关闭防火墙,设置网络,清除之前的yum源
hostnamectl set-hostname node1
yum remove -y firewalld
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.2.101/24 ipv4.gateway 192.168.2.254 autoconnect yes
nmcli connection up eth0
rm -rf /etc/yum.repos.d/*
yum clean all
  • node2
# 设置服务器名,关闭防火墙,设置网络,清除之前的yum源
hostnamectl set-hostname node2
yum remove -y firewalld
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.2.102/24 ipv4.gateway 192.168.2.254 autoconnect yes
nmcli connection up eth0
rm -rf /etc/yum.repos.d/*
yum clean all
  • node3
# 设置服务器名,关闭防火墙,设置网络,清除之前的yum源
hostnamectl set-hostname node3
yum remove -y firewalld
sed -i '/^SELINUX=/c SELINUX=disabled' /etc/selinux/config
nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.2.103/24 ipv4.gateway 192.168.2.254 autoconnect yes
nmcli connection up eth0
rm -rf /etc/yum.repos.d/*
yum clean all

配置yum源和域名解析

  • client
# 创建repo
vim local.repo
# 文件内容如下
[base]
name=Centos-$releasever - Base
baseurl=ftp://yum-server/centos/
gpgcheck=0

vim ceph.repo
# 文件内容如下
[osd]
name = ceph osd 
baseurl = ftp://yum-server/ceph/OSD/
enabled = 1
gpgcheck = 0

[mon]
name = ceph mon 
baseurl = ftp://yum-server/ceph/MON/
enabled = 1
gpgcheck = 0

[tools]
name = ceph tools
baseurl = ftp://yum-server/ceph/Tools/
enabled = 1
gpgcheck = 0

# 配置节点的yum和免密登录
echo "192.168.2.1  yum-server" >> /etc/hosts
for i in {1..3}
do
    echo "192.168.2.10${i}  node${i}" >> /etc/hosts
    ssh-copy-id node${i}
    scp local.repo ceph.repo node${i}:/etc/yum.repos.d/
done

# 配置域名解析
for i in node{1..3}
do
    scp /etc/hosts $i:/etc/
done

# 在clietn上安装chrony,ceph必须要求时钟同步,不然后面分区之后会有警告
yum install -y chrony
vim /etc/chrony.conf
# 取消下面两行注释并修改部分内容,26,29两行
allow 192.168.2.0/24
local stratum 10

# 启动服务
systemctl restart chrony

配置节点时钟同步

  • node1(控制节点)
# 配置控制节点到每个节点的免密登录
ssh-keygen  # 一直回车
ssh-copy-id node2
ssh-copy-id node3

# 配置时钟跟client同步
yum install -y chrony
vim /etc/chrony.conf
# 文件中上面几个server都注释,添加一行,效果如下
# 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 192.168.2.1 iburst

systemctl enable chronyd --now  # 启动服务器并开机自启
chronyc sources -v  # 查看 ^* yum-server说明成功

# 配置其他节点的时钟同步
for i in node2 node3
do
    ssh $i yum install -y chrony
    scp /etc/chrony.conf $i:/etc/
    ssh $i systemctl restart chronyd
    ssh $i systemctl enable chronyd
done

# 检查是否成功,出现^* yum-server就说明成功了,因为我这里时钟服务器和yum服务器是用一个服务器,所以显示的是同一个
ssh node2 chronyc sources -v
ssh node3 chronyc sources -v

安装ceph集群

  • node1:通过node1控制节点进行安装
# 本机安装软件
yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw ceph-deploy
# 远程node1和node2进行软件安装
ssh node2 yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw
ssh node3 yum install -y ceph-mon ceph-osd ceph-mds ceph-radosgw

# 检查是否安装成功
ceph-deploy --help

# 创建工作目录并进入
mkdir ceph-cluster && cd ceph-cluster

# 创建新的集群,会出现3个文件,ceph.conf集群配置文件,ceph-deploy-ceph.log日志文件,ceph.mon.keyring共享密钥
ceph-deploy new node{1..3}
echo "rbd_default_features = 1" >> ceph.conf  # 开启快照功能

# 初始化monitor
ceph-deploy mon create-initial

# 查看各节点的ceph-mon
systemctl status ceph-mon*
ssh node2 systemctl status ceph-mon* | grep Active
ssh node3 systemctl status ceph-mon* | grep Active  # 也可以执行这个 ^2^3,是将上一条命令的2换成3

# 查看集群状态,目前因为没有硬盘,所以是HEALTH_ERR
ceph -s | grep health

# 创建OSD,这里自己的实际情况配置,我这里每个节点上都是sdb、sdc,你可以执行lsblk看一下自己的本地环境
ceph-deploy disk zap node1:sd{b,c}
ceph-deploy disk zap node2:sd{b,c}
ceph-deploy disk zap node3:sd{b,c}

# 创建存储空间。这里的名称跟上面一样根据实际情况进行修改,ceph会硬盘分为两个分区,一个分区大小为5GB,用于保存ceph的内部资源;另一个分区是剩余全部空间
ceph-deploy osd create node1:sd{b,c}
ceph-deploy osd create node2:sd{b,c}
ceph-deploy osd create node3:sd{b,c}

# 查看集群状态
ceph -s | grep health  # HEALTH_OK,如果是HEALTH_WARN就说明哪边配置好,如时钟

Tips(安装错误的时候,可以尝试下面命令,本人安装错误的时候,试了下,发现好像没用,可能是自己脸黑):

# 如果安装过程中出现keyring...这种报错,可以试着执行以下命令
ceph-deploy gatherkeys node{1..3}

# 如果安装错误,可以清理数据后,重新安装。清理数据命令
ceph-deploy purge node1
ceph-deploy purge node2
ceph-deploy purge node3

实现块存储

  • node1
# 查看存储池,这里默认会有一个
ceph osd lspools

# 查看存储池大小
ceph df

# 查看存储池rbd存储数据时,保存的副本数量
ceph osd pool get rbd size

# 在默认存储池中,创建一个名为demo-image大小为10G的镜像
rbd create demo-image --size 10G

# 查看默认存储池中的镜像
rbd list

# 查看镜像信息
rbd info demo-image

# 扩容至20G
rbd resize --size 15G demo-image
rbd info demo-image

# 缩减至8G,慎用,一般不用
rbd resize --size 8G demo-image --allow-shrink
rbd info demo-image

# 删除镜像,慎用
rbd rm demo-image

# 创建一个大小10G的镜像,提供给客户端使用
rbd create demo --size 10G
rbd info demo
  • client使用
# 安装ceph客户端软件
yum install -y ceph-common

# 复制节点的配置文件和密钥keyring到客户端
scp node1:/etc/ceph/ceph.{conf,client.admin.keyring} /etc/ceph/

# 客户端查看镜像
rbd list  # demo

# 将ceph提供的镜像映射到本地
rbd map demo  # /dev/rbd0

# 查看映射
rbd showmapped

# 格式化,第一次使用才需要格式化,如果是多台只需要格式一次
mkfs.xfs /dev/rbd0

# 临时挂载使用
mount /dev/rbd0 /mnt/

# 查看是否挂载成功
df -h /mnt

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

菜单访问url/接口url为什么要带时间戳

一, 问题 1,菜单url中如果不加时间戳,会导致什么问题。我们现在做一个东西,需要获取菜单的访问地址,我们要拼这个地址 2,查询接口中,时间戳,如果不加,具体导致什么问题 二…

Vue集成three.js,加载glb、gltf类型的3d模型

安装基本依赖 // 注意OrbitControls要加{},注意路径是jsm import { OrbitControls } from ‘three/examples/jsm/controls/OrbitControls.js’; // import { dat } from ‘three/examples/jsm/controls/dat.gui.js’; // dat gui这个插件,是另外自己下载…

杰理使用USB声卡模式时关闭MIC

杰理在使用PC模式的时候,想只保留扬声器,但不要打开MIC功能,可以配置USB_DEVICE_CLASS_CONFIG中把MIC_CLASS去掉,然后重新编译就可以了。

Kimi 高效使用技巧,80%的人都不知道

关注我, AI 学习之旅上,我与您一同成长! 一、引言 Kimi 作为国产之光,在过去的一个多月里成为国内大模型的香饽饽。据数据分析,Kimi 网页、APP、小程序等各端的日活已经突破 300 万,超过文心一言、通义千问、智谱清言…

单链表实现通讯录

不过多赘述了 顺序表的增删查改-CSDN博客https://blog.csdn.net/bkmoo/article/details/137566495?spm1001.2014.3001.5502 使用顺序表实现通讯录-CSDN博客https://blog.csdn.net/bkmoo/article/details/137676561?spm1001.2014.3001.5502这里没有使用文件操作只是简单的使…

6.MMD ray渲染 材质的添加及打光方法

材质 前置准备 先准备好模型和场景 将ray控制器拖入进去 添加完默认的材质以后的效果 打开插入材质页面 打开MaterialMap栏 将流萤的模型展开 自发光 现在给领带添加一个自发光效果 在自发光Emissive里,打开x1,选择albedo,白光 现在…

使用微软Phi-3-mini模型快速创建生成式AI应用

微软Phi-3大语言模型是微软研究院推出的新一代系列先进的小语言模型。Phi-3系列包括phi-3-mini、phi-3-small和phi-3-medium三个不同规模的版本。这些模型在保持较小的参数规模的同时,通过精心设计的训练数据集和优化的算法,实现了与大型模型相媲美的语言…

【CVPR2023】Re:InterHand:一个用于3D交互手部姿态估计的重光照数据集

这篇论文的标题是《A Dataset of Relighted 3D Interacting Hands》,作者是Gyeongsik Moon, Shunsuke Saito, Weipeng Xu, Rohan Joshi, Julia Buffalini, Harley Bellan, Nicholas Rosen, Jesse Richardson, Mallorie Mize, Philippe de Bree, Tomas Simon, Bo Pen…

玩转PyCharm

玩转PyCharm PyCharm是由JetBrains公司开发的提供给Python专业的开发者的一个集成开发环境,它最大的优点是能够大大提升Python开发者的工作效率,为开发者集成了很多用起来非常顺手的功能,包括代码调试、高亮语法、代码跳转、智能提示、自动补…

MyBatis 核心配置讲解(上)

大家好,我是王有志,一个分享硬核 Java 技术的互金摸鱼侠。 前两篇的文章中我们分别介绍了 MyBatis 和 MyBaits 的应用组成,到这里基础篇的内容就结束了。 从今天开始,我们正式进入 MyBatis 学习的第二阶段:MyBatis 的…

【QT学习】9.绘图,三种贴图,贴图的转换,不规则贴图(透明泡泡),简单绘图工具制作

一。绘图的解释 Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage、QOpenGLPaintDev…

maya blendshape

目录 shape编辑器 maya创建blendshape python 脚本 添加形变动画 查看顶点个数 shape编辑器 打开方式: 窗口-动画编辑器-形变编辑器 maya创建blendshape python 脚本 import maya.cmds as cmds# 创建基础网格 - 球体 baseMesh cmds.polySphere(name"bas…

Postman 工具发送请求的技巧与实践

在开发和测试 API 时,发送 JSON 格式的请求是一个常见需求。 在 Postman 中构建和发送 JSON 请求 创建一个新的请求 首先,在 Postman 启动界面上找到并点击 “New” 按钮,选择 “HTTP Request” 来开始新建一个请求。这一步骤允许你定义请…

Unity射击游戏开发教程:(7)Powerup的使用

确定 PowerUp 效果应持续多长时间 我在游戏中放置的第一个道具是三重射击。当玩家收集三重射击能量时,他们可以一次发射 3 束激光,而正常情况下只能发射 1 束激光。在实施道具时,您需要考虑它们的功能以及它将如何影响游戏玩法。至于三连射&

Linux-缓冲区(简单理解)

1. 缓冲区是什么 缓冲区就是一段内存空间。 2. 为什么要有缓冲区 IO写入有两种: 写透模式(WT) 成本高,效率低写回模式(WB) 成本低,效率高 写透模式:每次的文件写入都要立即刷新…

海外仓WMS管理系统:标准化海外仓管理模式,效率和管理模式双提升

就目前的跨境电商发展速度和体量来看,标准化海外仓管理的模式不再是一个选项,而是必走之路。 今天会重点和大家聊一下,海外仓企业应该如何利用好WMS管理系统,快速的标准化仓库管理的模式,以及大家比较关心的&#xff0…

JAVA读取文件完成词频统计

词频统计原数据和结果数据地址:https://download.csdn.net/download/LiHaoHang6/88845654?spm1001.2014.3001.5501 运行效果展示: 原数据展示: 词频统计思路: 1:先通过BufferedReader来读取本地文本文件,之后将文本…

excel 按照姓名日期年月分组求和

excel 需要按照 姓名 日期的年份进行金额求和统计,采用sumifs 进行统计 注意:sumifs 不支持 合并列拆分计算,合并列只会计算一个值 表格数据大概如下:(sheet) ABC姓名日期金额A2023/01/01500A2023/01/151500B2023/01/01200B202…

基于SpringBoot开发的同城租房系统租房软件APP小程序源码

项目背景 一、市场前景 随着城市化进程的加快和人口流动性的增强,租房市场正逐渐成为一个不可忽视的巨大市场。传统的租房方式往往存在着信息不对称、效率低下等问题,而同城租房软件的出现,则有效地解决了这些问题,为租房市场注…

云计算时代,企业面临的云安全风险

如今,随着云计算等新兴科技的发展,不同类型企业间的关联越来越多,它们之间的业务边界已被打破,企业上云成为了大势所趋。云计算应用帮助企业改变了IT资源不集中的状况,同时,数据中心内存储的大量数据信息&a…
最新文章