Ceph分布式存储(1)
目录
一.ceph分布式存储
Ceph架构(自上往下)
OSD的存储引擎:
Ceph的存储过程:
二. 基于 ceph-deploy 部署 Ceph 集群
20-40节点上添加3块硬盘,一个网卡:
10节点为admin,20-40为node,50为client:
配置 hosts 解析:
安装常用软件和依赖包:
在 admin 管理节点配置 ssh 免密登录所有节点:
10节点配置时间同步:
修改配置文件:
所有节点重启依赖于系统时间的服务:
编辑编辑编辑所有node节点修改网卡配置:
所有节点配置 Ceph yum源:
安装ceph:
所有节点都创建一个 Ceph 工作目录,后续的工作都在该目录下进行:
安装 ceph-deploy 部署工具:
管理节点为其它节点安装 Ceph 软件包:
节点下载:
生成初始配置:
在管理节点初始化 mon 节点:
配置初始化 mon 节点,并向所有节点同步配置:
部署能够管理 Ceph 集群的节点:
部署 osd 存储节点:
添加节点:
在添加其他两个节点:
看下状态:
将剩下磁盘继续添加后,查看状态:
部署 mgr 节点:
从节点下载mgr:
重启 dashboard:
访问页面:
一.ceph分布式存储
ceph:存储机制会把数据分散存储到多个节点上,具有高扩展性、高性能、高可用性等优点。
Ceph架构(自上往下)
客户端(主机/虚拟机/容器/应用程序APP):在Ceph中进行数据读写的终端。
LibRADOS对象访问接口:提供访问存储接口给客户端使用。Ceph默认提供三个接口:RBD块存储接口、RGW对象存储接口、CephFS文件存储接口。还支持用户使用java、python、C、C++等编程语言二次开发自定义访问接口。
RADOS基础存储系统(统一存储池):提供存储能力的。Ceph中一切都是以对象(object)形式存储的。RADOS就是负责存储这些对象的,并保证数据的一致性和可靠性。
OSD的存储引擎:
FileStore:是L版本(12.x)以前版本的唯一可选的OSD存储引擎,将数据对象存储为文件系统的文件,性能上有所不足
BlueStore:是L版本(12.x)开始的默认OSD存储引擎,将数据对象直接存储在块设备上,具有更好的数据读写性能和可靠性
Ceph的存储过程:
1)文件默认会按照4M大小进行分片成一个或多个数据对象(object)
2)每个数据对象都有一个oid(由文件ID(ino)和分片编号(ono)组成),通过对oid使用HASH算法得到一个16进制的特征码,再除以Pool中的PG总数取余,获取到数据对象的pgid(整体由poolid+pgid组成)
3)通过对pgid使用CRUSH算法得到PG对应的OSD的ID,如果是多副本,则是主从OSD的ID(注:PG与OSD的对应关系是在创建存储池Pool的时候就确定好的)
4)将数据对象存储到对应的OSD里
二. 基于 ceph-deploy 部署 Ceph 集群
准备五台服务器,192.168.233.{10..50}:
20-40节点上添加3块硬盘,一个网卡:






10节点为admin,20-40为node,50为client:





配置 hosts 解析:





安装常用软件和依赖包:
yum -y install epel-release
yum -y install yum-plugin-priorities yum-utils ntpdate python-setuptools python-pip gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel zip unzip ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssh openssl-devel nss_ldap openldap openldap-devel openldap-clients openldap-servers libxslt-devel libevent-devel ntp libtool-ltdl bison libtool vim-enhanced python wget lsof iptraf strace lrzsz kernel-devel kernel-headers pam-devel tcl tk cmake ncurses-devel bison setuptool popt-devel net-snmp screen perl-devel pcre-devel net-snmp screen tcpdump rsync sysstat man iptables sudo libconfig git bind-utils tmux elinks numactl iftop bwm-ng net-tools expect snappy leveldb gdisk python-argparse gperftools-libs conntrack ipset jq libseccomp socat chrony sshpass





在 admin 管理节点配置 ssh 免密登录所有节点:

sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@admin
sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@node01
sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@node02
sshpass -p '123' ssh-copy-id -o StrictHostKeyChecking=no root@node03




10节点配置时间同步:
修改配置文件:


开启chrony:
![]()

开启 NTP:
timedatectl set-ntp true

设置时区:
timedatectl set-timezone Asia/Shanghai

强制同步下系统时钟:
chronyc -a makestep

查看时间同步状态:
timedatectl status

查看 ntp 源服务器信息:

将当前的UTC时间写入硬件时钟:

所有节点重启依赖于系统时间的服务:





关闭无关服务:




所有node节点修改网卡配置:






重启网卡:



所有节点配置 Ceph yum源:
wget https://download.ceph.com/rpm-nautilus/el7/noarch/ceph-release-1-1.el7.noarch.rpm --no-check-certificate










将包移动到/opt下:
![]()
![]()
![]()
![]()
![]()
安装ceph:










所有节点都创建一个 Ceph 工作目录,后续的工作都在该目录下进行:


安装 ceph-deploy 部署工具:

查看版本,2.0.1 默认部署的是 mimic 版的 Ceph,若想安装其他版本的 Ceph,可以用 --release 手动指定版本:

管理节点为其它节点安装 Ceph 软件包:
yum install -y ceph-mon ceph-radosgw ceph-mds ceph-mgr ceph-osd ceph-common ceph

节点下载:
修改ceph的源:


改为阿里云下载:
sed -i 's#download.ceph.com#mirrors.aliyun.com/ceph#' ceph.repo



其他节点下载 Ceph 包:


生成初始配置:
在管理节点运行下述命令,告诉 ceph-deploy 哪些是 mon 监控节点:
ceph-deploy new --public-network 192.168.233.0/24 --cluster-network 192.168.100.0/24 node01 node02 node03
.命令执行成功后会在 /etc/ceph 下生成配置文件:
ceph.conf : ceph的配置文件
ceph-deploy-ceph.log : monitor的日志
ceph.mon.keyring : monitor的密钥环文件

在管理节点初始化 mon 节点:
ceph-deploy mon create node01 node02 node03

节点上查看下mon状态:

配置初始化 mon 节点,并向所有节点同步配置:
ceph-deploy --overwrite-conf mon create-initial

命令执行成功后会在 /etc/ceph 下生成配置文件:

ceph.bootstrap-mds.keyring : 引导启动 mds 的密钥文件
ceph.bootstrap-mgr.keyring : 引导启动 mgr 的密钥文件
ceph.bootstrap-osd.keyring : 引导启动 osd 的密钥文件
ceph.bootstrap-rgw.keyring : 引导启动 rgw 的密钥文件
ceph.client.admin.keyring : ceph客户端和管理端通信的认证密钥,拥有ceph集群的所有权限
在节点上查看下配置文件:


主节点上看下ceph信息:

从节点看:

查看 mon 集群选举的情况:
ceph quorum_status --format json-pretty | grep leader

部署能够管理 Ceph 集群的节点:
ceph-deploy --overwrite-conf config push node01 node02 node03

本质就是把 ceph.client.admin.keyring 集群认证文件拷贝到各个节点:
ceph-deploy admin node01 node02 node03

在 从 节点上查看:


部署 osd 存储节点:
查看下从节点的磁盘情况:



添加节点:
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdb
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdb


看下从节点的磁盘情况:

在添加其他两个节点:


看下状态:



扩容 osd 节点:
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdc
ceph-deploy --overwrite-conf osd create node01 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node02 --data /dev/sdd
ceph-deploy --overwrite-conf osd create node03 --data /dev/sdd

看下状态:

看下从节点:

将剩下磁盘继续添加后,查看状态:



主节点看下状态:

部署 mgr 节点:


解决 HEALTH_WARN 问题:mons are allowing insecure global_id reclaim问题:
禁用不安全模式:
ceph config set mon auth_allow_insecure_global_id_reclaim false
![]()

从节点下载mgr:


开启 dashboard 模块:
ceph mgr module enable dashboard --force

禁用 dashboard 的 ssl 功能:
ceph config set mgr mgr/dashboard/ssl false

配置 dashboard 监听的地址和端口:
ceph config set mgr mgr/dashboard/server_addr 192.168.233.20
ceph config set mgr mgr/dashboard/server_port 8000

重启 dashboard:
ceph mgr module disable dashboard
ceph mgr module enable dashboard --force

确认访问 dashboard 的 url:

设置 dashboard 账户以及密码:

ceph dashboard set-login-credentials admin -i dashboard_passwd.txt

访问页面:



相关文章:
Ceph分布式存储(1)
目录 一.ceph分布式存储 Ceph架构(自上往下) OSD的存储引擎: Ceph的存储过程: 二. 基于 ceph-deploy 部署 Ceph 集群 20-40节点上添加3块硬盘,一个网卡: 10节点为admin,20-40为node&…...
制造业工厂为什么要实施MES系统呢?
MES是生产管理系统,生产管理是通过对生产系统的战略计划、组织、指挥、实施、协调、控制等活动,实现系统的物质变换、产品生产、价值提升的过程。在企业的价值链中,生产经营是企业核心能力的重要组成部分。 实施MES系统的原因 MES系统是中国比…...
Python 一行命令部署http、ftp服务
Python 一行命令部署http服务 文章目录 Python 一行命令部署http服务具体操作命令如下浏览器返回下载Python 一行命令部署FTP服务 具体操作命令如下 这个比nginx相对来说更加简单,可以用于部署特殊场景时如银行等部署时,各种权限控制,内网之间…...
DBA技术栈(三):MySQL 性能影响因素
文章目录 前言一、影响MySQL性能的因素1.1 商业上的需求1.2 应用架构规划1.3 查询语句使用方式1.4 Schema的设计1.5 硬件环境 总结 前言 大部分人都一致认为一个数据库应用系统(这里的数据库应用系统概指所有使用数据库的系统)的性能瓶颈最容易出现在数…...
SpringCloud GateWay 在全局过滤器中注入OpenFeign网关后无法启动
目录 一、问题 二、原因 1、修改配置 2、添加Lazy注解在client上面 3、启动成功 一、问题 当在gateway的全局过滤器GlobalFilter中注入OpenFeign接口的时候会一直卡在路由中,但是不会进一步,导致启动未成功也未报错失败 2024-01-18 22:06:59.299 I…...
web前端项目-贪吃蛇小游戏【附源码】
web前端项目-贪吃蛇小游戏 【贪吃蛇】是一款经典的小游戏,采用HTML、CSS和JavaScript技术进行开发,玩家通过控制一条蛇在地图上移动,蛇的目的是吃掉地图上的食物,并且让自己变得更长。游戏的核心玩法是控制蛇的移动方向和长度&am…...
ICCV2023 | PTUnifier+:通过Soft Prompts(软提示)统一医学视觉语言预训练
论文标题:Towards Unifying Medical Vision-and-Language Pre-training via Soft Prompts 代码:https://github.com/zhjohnchan/ptunifier Fusion-encoder type和Dual-encoder type。前者在多模态任务中具有优势,因为模态之间有充分的相互…...
代码随想录 Leetcode459. 重复的子字符串(KMP算法)
题目: 代码(首刷看解析 KMP算法 2024年1月18日): class Solution { public:void getNext(string& s,vector<int>& next) {int j 0;next[0] j;for (int i 1; i < s.size(); i) {while (j > 0 && s…...
Rust之构建命令行程序(三):重构改进模块化和错误处理
开发环境 Windows 10Rust 1.74.1 VS Code 1.85.1 项目工程 这次创建了新的工程minigrep. 重构改进模块化和错误处理 为了改进我们的程序,我们将修复与程序结构及其处理潜在错误的方式有关的四个问题。首先,我们的main函数现在执行两项任务:解析参数和…...
广和通AI解决方案“智”赋室外机器人迈向新天地!
大模型趋势下,行业机器人将具备更完善的交互与自主能力,逐步迈向AI 2.0时代,成为人工智能技术全面爆发的重要基础。随着行业智能化,更多机器人应用将从“室内”走向“室外”,承担更多高风险、高智能工作。复杂的室外环…...
C++I/O流——(4)格式化输入/输出(第二节)
归纳编程学习的感悟, 记录奋斗路上的点滴, 希望能帮到一样刻苦的你! 如有不足欢迎指正! 共同学习交流! 🌎欢迎各位→点赞 👍 收藏⭐ 留言📝 含泪播种的人一定能含笑收获ÿ…...
九、K8S-label和label Selector
label和label selector 标签和标签选择器 1、label 标签: 一个label就是一个key/value对 label 特性: label可以被附加到各种资源对象上一个资源对象可以定义任意数量的label同一个label可以被添加到任意数量的资源上 2、label selector 标签选择器 L…...
【.NET Core】 多线程之(Thread)详解
【.NET Core】 多线程之(Thread)详解 文章目录 【.NET Core】 多线程之(Thread)详解一、概述二、线程的创建和使用2.1 ThreadStart用于无返回值,无参数的方法2.2 ParameterizedThreadStart:用于带参数的方法 三、线程的…...
苹果笔记本 macbook 在 office word 中使用 mathtype 的方法
前言 想在 MacBook 中使用 mathtype,去搜索,去 Apple Store 下载也发现没有 解决方法 打开 office Word 的「插入」中的「获取加载项」、「我的加载项」。 在应用商店中下载,需要登录自己的微软账号。 加载成功后就可以使用了。 注意 和…...
课表排课小程序怎么制作?多少钱?
在当今的数字化时代,无论是购物、支付、点餐,还是工作、学习,都离不开各种各样的微信小程序。其中,课表排课小程序就是许多教育机构和学校必不可少的工具。那么课表排课小程序怎么制作呢?又需要多少钱呢? …...
C语言总结十三:程序环境和预处理详细总结
了解程序的运行环境可以让我们更加清楚的程序的底层运行的每一个步骤和过程,做到心中有数,预处理阶段是在预编译阶段完成,掌握常用的预处理命令语法,可以让我们正确的使用预处理命令,从而提高代码的开发能力和阅读别人…...
tinyxml2
使用tinyxml2,得知道一些xml基础 xml tutorial--菜鸟 tinyxml2类对象 链接 结构 XMLNode 什么是节点 节点:元素、声明、文本、注释等。 XMLDocument xml文档(文件)对象。 作用: 加载xml文件, tinyxml2作用 先定义两个宏 …...
What is `@Controller` does?
Controller 是SpringMVC注解,标记一个类作为Web控制器(Controller),负责处理HTTP请求并返回响应结果 在SpringMVC中,控制器类的主要职责是: 1、接收来自客户端的HTTP请求 2、调用服务层或其他业务逻辑组件…...
新版AndroidStudio dependencyResolutionManagement出错
在新版AndroidStudio中想像使用4.2版本或者4.3版本的AndroidStudio来构造项目?那下面这些坑我们就需要来避免了,否则会出各种各样的问题。 一.我们先来看看新旧两个版本的不同。 1.jdk版本的不同 新版默认是jdk17 旧版默认是jdk8 所以在新版AndroidSt…...
第三天业务题
3-1 你们的项目是如何进行参数校验的 在我们的项目中,通常使用以下2种方式进行参数校验: 1.手动校验:在方法内部,我们可以手动编写代码来对参数进行校验。例如,使用条件判断语句(if-else)来检…...
TypeVar
## 关于Python里的TypeVar,你可能想知道的 最近在整理一些旧代码,翻到几年前写的一个通用缓存工具类,里面用到了TypeVar。当时注释里只简单写了一句“用于类型提示”,现在回头看,觉得可以展开聊聊这个东西。 TypeVar是…...
终极解决方案:让Mac通过Android USB网络共享高速上网的HoRNDIS驱动
终极解决方案:让Mac通过Android USB网络共享高速上网的HoRNDIS驱动 【免费下载链接】HoRNDIS Android USB tethering driver for Mac OS X 项目地址: https://gitcode.com/gh_mirrors/ho/HoRNDIS 还在为Mac无法直接使用Android手机的USB网络共享功能而烦恼吗…...
《数字孪生为什么90%都是假的》——没有空间数据的“孪生”,只是一个会动的PPT
一、摘要(Executive Summary)近年来,“数字孪生(Digital Twin)”成为智慧城市、工业互联网与数字基础设施建设中的核心关键词。然而,在大量实际项目中,所谓“数字孪生系统”仅停留在三维建模与数…...
AI工程师的终极目标:技术专家还是管理者
在人工智能浪潮席卷全球的今天,AI工程师已成为技术领域最炙手可热的角色之一。对于软件测试从业者而言,随着AI测试、自动化测试平台和智能质量保障体系的兴起,职业发展的边界正在被重新定义。当我们站在职业生涯的十字路口,一个根…...
人体姿态估计 自动健身计数 AI人工智能姿态估计技术在健身动作分析中的深入应用
姿态估计技术在健身动作分析中的深入应用 随着计算机视觉和机器学习技术的快速发展,姿态估计(Pose Estimation)已成为健身领域智能化的重要工具。这项技术不仅能够帮助用户正确地执行俯卧撑、仰卧起坐和深蹲等基本锻炼动作,还能够…...
3DGS内存优化新思路:拆解Scaffold-GS与Normal-GS中的锚点与共享IDIV设计
3DGS内存优化新思路:拆解Scaffold-GS与Normal-GS中的锚点与共享IDIV设计 在实时3D渲染领域,3D Gaussian Splatting(3DGS)技术正面临内存效率的严峻挑战。当我们将3DGS模型部署到移动设备或边缘计算节点时,显存限制往往…...
如何永久保存微信聊天记录?WeChatMsg终极免费解决方案完全指南
如何永久保存微信聊天记录?WeChatMsg终极免费解决方案完全指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/…...
令牌管理:AI开发中的成本控制与效率优化——Tiktokenizer全维度应用指南
令牌管理:AI开发中的成本控制与效率优化——Tiktokenizer全维度应用指南 【免费下载链接】tiktokenizer Online playground for OpenAPI tokenizers 项目地址: https://gitcode.com/gh_mirrors/ti/tiktokenizer 一、行业痛点分析:AI开发中的隐形成…...
【车辆】插电式混合动力汽车(PHEV)动力系统进行建模与设计MATLAB 代码,含发动机、电机、电池组等组件
✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。👇 关注我领取海量matlab电子书和数学建模资料🍊个人信条:格物致知,完整Matl…...
Qwen2.5-VL视觉定位效果展示:Ollama输出坐标+置信度+层级关系JSON
Qwen2.5-VL视觉定位效果展示:Ollama输出坐标置信度层级关系JSON 最近在玩一个挺有意思的AI模型——Qwen2.5-VL-7B-Instruct。这可不是普通的聊天机器人,它是一个能“看懂”图片,还能把看到的东西用结构化数据告诉你的视觉多模态模型。 简单…...

