基于BClinux8部署Ceph 19.2(squid)集群
#作者:闫乾苓
文章目录
- 1.版本选择
- Ceph版本发布历史
- 目前官方在维护的版本
- 2.部署方法
- 3.服务器规划
- 4.前置配置
- 4.1系统更新
- 4.2配置hosts
- cat >> /etc/hosts << EOF
- ssh-keygen
- ssh-copy-id ceph01
- ssh-copy-id ceph02
- ssh-copy-id ceph03
- 4.5 Python3
- 4.6 Systemd
- 4.7 LVM2
- 4.8 docker安装
- 5.使用 cephadm 部署Ceph 集群
- 5.1安装cephadm
- 5.2引导新集群
- 5.3启用 Ceph CLI
- 5.4添加主机
- 5.4添加存储(部署 OSD)
1.版本选择
本文档使用最新稳定版squid 19.2.0进行安装部署测试
Ceph版本发布历史

目前官方在维护的版本
| 名称 | 发布时间 | 最新版本 | 停止维护时间(估计) |
|---|---|---|---|
| Squid | 2024-09-26 | 19.2.0 | 2026-09-19 |
| Reef | 2023-08-07 | 18.2.4 | 2025-08-01 |
2.部署方法
使用官方推荐的Cephadm进行部署,Cephadm 通过引导单个主机、扩展集群以包含任何其他主机,然后部署所需的服务来创建新的 Ceph 集群。
3.服务器规划
| IP | Hostname | 硬件配置 |
|---|---|---|
| 192.168.61.11 | ceph01 | CPU: 4c、Mem: 8GB、Hdd1: 100G、Hdd2: 500GB |
| 192.168.61.12 | ceph02 | CPU: 4c、Mem: 8GB、Hdd1: 100G、Hdd2: 500GB |
| 192.168.61.13 | ceph03 | CPU: 4c、Mem: 8GB、Hdd1: 100G、Hdd2: 500GB |
操作系统信息:
系统版本:BigCloud Enterprise Linux release 8.8 (Core)
内核:5.10.134-12.2.el8.bclinux.x86_64
4.前置配置
4.1系统更新
(所有节点执行)
# yum update
4.2配置hosts
(所有节点执行)
cat >> /etc/hosts << EOF
192.168.61.11 ceph01
192.168.61.12 ceph02
192.168.61.13 ceph03
EOF
4.3节点间ssh免密配置
(ceph01执行)
ssh-keygen
ssh-copy-id ceph01
ssh-copy-id ceph02
ssh-copy-id ceph03
4.4时间同步配置
使用chrony做为时间同步服务,ceph01作为集群内时间服务的server端,配置向公网ntp服务器(ntp.aliyun.com)同步时间,ceph02、ceh03作为集群内时间服务的client端,向ceph01 server端同步时间。
所有节点查看chrony是否安装
# rpm -qa |grep chrony
chrony-4.2-1.0.1.an8.x86_64
如果没有安装,执行以下命令进行安装
# yum install chrony备份原配置文件
# cp /etc/chrony.conf{,.df}ceph01节点(chrony服务端,需要能访问外网ntpserver)修改配置文件
# cat > /etc/chrony.conf << EOF
pool ntp.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.61.0/24
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony
EOFceph02、ceph03节点(chrony客户端)修改配置文件
# cat > /etc/chrony.conf << EOF
pool ceph01 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony
EOF所有节点执行chronyd服务器重启并设置开机启动
# systemctl restart chronyd
# systemctl enable chronyd所有节点查看chronyd 服务是否正常
# systemctl status chronydceph01 查看配置的NTP服务器的状态
[root@ceph01 ~]# chronyc sources -v
MS Name/IP address Stratum Poll Reach LastRx Last sample
========================================================
^* 203.107.6.88 2 7 377 35 -1438us[-1796us] +/- 24msceph02、ceph03查看配置的NTP服务器的状态
[root@ceph02 ~]# chronyc sources -v
MS Name/IP address Stratum Poll Reach LastRx Last sample
========================================================
^? ceph01 0 8 0 - +0ns[ +0ns] +/- 0ns[root@ceph03 ~]# chronyc sources -v
MS Name/IP address Stratum Poll Reach LastRx Last sample
========================================================
^? ceph01 0 8 0 - +0ns[ +0ns] +/- 0ns# 所有节点查看系统时间与时区是否设置正确
# date
4.5 Python3
默认已安装,所有节点查看:(这个是python最低版本要求,是否是唯一的支持版本)
# python3 -V
Python 3.6.8
4.6 Systemd
默认已安装,所有节点查看:
# systemctl --version
systemd 239 (239-74.0.2.an8.3)
4.7 LVM2
默认已安装,所有节点查看:
# rpm -q lvm2
lvm2-2.03.14-9.oe2203sp2.x86_64
4.8 docker安装
# dnf -y install dnf-plugins-core# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo## 查看可安装版本列表
# dnf list docker-ce --showduplicates | sort -r# dnf install docker-ce-26.1.3-1.el8 docker-ce-cli-26.1.3-1.el8 containerd.io docker-buildx-plugin docker-compose-plugin# systemctl enable docker
# systemctl start docker
# systemctl status docker# docker info |grep "Server Version:"
Server Version: 26.1.3
5.使用 cephadm 部署Ceph 集群
5.1安装cephadm
(ceph01节点执行)
指定ceph的版本,比如本文是squid 19.2.0版本,并下载cephadm的可执行程序
[root@ceph01 ~]# CEPH_RELEASE=19.2.0
[root@ceph01 ~]# curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm
[root@ceph01 ~]# chmod +x cephadm
因cephadm没有对bclinux系统做适配,所以添加cephadm repo源有如下提示:
[root@ceph01 ~]# ./cephadm add-repo --release squid
ERROR: Distro bclinux version 8.8 not supported
Ceph squid19.2.0技术上支持centos7/8/9等主流linux系统,仅对linux kernel提出最低版本要求(4.19以上)。官方尤其对centos9做了全面的测试并提供各个组件的官方安装包。而且这里的部署是裸金属上的容器化部署,对系统平台要求放宽。为了让cephadm支持本环境的安装,需要通过修改bclinux8的/etc/os-release达到ceph squid19.2.0 可以在bclinux8上安装的目的。
[root@ceph01 ~]# cp /etc/os-release{,.df}
[root@ceph01 ~]# cat > /etc/os-release << EOF
NAME="CentOS Stream"
VERSION="9"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="9"
PLATFORM_ID="platform:el9"
PRETTY_NAME="CentOS Stream 9"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:centos:centos:9"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://issues.redhat.com/"
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_SUPPORT_PRODUCT_VERSION="CentOS Stream"
EOF
虽然独立的 cephadm 足以引导集群,但最好在主机上安装该命令
[root@ceph01 ~]# ./cephadm add-repo --release squid
Writing repo to /etc/yum.repos.d/ceph.repo...
Enabling EPEL...
Completed adding repo.[root@ceph01 ~]# ./cephadm install
Installing packages ['cephadm']...
通过运行以下命令确认cephadm现在位于PATH 环境变量中
[root@ceph01 ~]# which cephadm
/usr/sbin/cephadm
5.2引导新集群
创建新 Ceph 集群的第一步是在 Ceph 集群的第一台主机上运行该命令。在 Ceph 集群的第一台主机上运行该命令会创建 Ceph 集群的第一个 Monitor 守护进程 。您必须将 Ceph 集群的第一台主机的 IP 地址传递给该命令,因此您需要知道该主机的 IP 地址。
[root@ceph01 ~]# cephadm bootstrap --mon-ip 192.168.61.11
此命令将:
- 在本地主机上为新集群创建一个监视器和一个管理器守护进程。
- 为 Ceph 集群生成新的 SSH 密钥并将其添加到 root 用户/root/.ssh/authorized_keys文件中。
- 将公钥的副本写入/etc/ceph/ceph.pub。
- 向/etc/ceph/ceph.conf写入一个最小配置文件。此文件是与 Ceph 守护进程通信所必需的。
- 将client.admin管理(特权!)密钥的副本写入/etc/ceph/ceph.client.admin.keyring。
- 将标签添加到引导主机。默认情况下,任何具有此标签的主机也将获得/etc/ceph/ceph.conf/和/etc/ceph/ceph.client.admin.keyring _admin的副本。
引导集群命令正常结束输出信息如下:
Ceph Dashboard is now available at:URL: https://ceph01:8443/User: adminPassword: b8c7zgjz8g
Enabling client.admin keyring and conf on hosts with "admin" label
Saving cluster configuration to /var/lib/ceph/0978cb18-dc68-11ef-b0d7-000c29460ffd/config directory
You can access the Ceph CLI as following in case of multi-cluster or non-default config:sudo /usr/sbin/cephadm shell --fsid 0978cb18-dc68-11ef-b0d7-000c29460ffd -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
Or, if you are only running a single cluster on this host:sudo /usr/sbin/cephadm shell
Please consider enabling telemetry to help improve Ceph:ceph telemetry on
For more information see:https://docs.ceph.com/en/latest/mgr/telemetry/
Bootstrap complete.
5.3启用 Ceph CLI
[root@ceph01 ~]# cephadm shell
Inferring fsid 0978cb18-dc68-11ef-b0d7-000c29460ffd
Inferring config /var/lib/ceph/0978cb18-dc68-11ef-b0d7-000c29460ffd/mon.ceph01/config
Using ceph image with id '37996728e013' and tag 'v19' created on 2024-09-28 06:08:21 +0800 CST
quay.io/ceph/ceph@sha256:200087c35811bf28e8a8073b15fa86c07cce85c575f1ccd62d1d6ddbfdc6770a
[ceph: root@ceph01 /]# ceph -scluster:id: 0978cb18-dc68-11ef-b0d7-000c29460ffdhealth: HEALTH_WARNOSD count 0 < osd_pool_default_size 3services:mon: 1 daemons, quorum ceph01 (age 13m)mgr: ceph01.vqsdyy(active, since 11m)osd: 0 osds: 0 up, 0 indata:pools: 0 pools, 0 pgsobjects: 0 objects, 0 Busage: 0 B used, 0 B / 0 B availpgs:
5.4添加主机
要将每个新主机添加到集群,请执行两个步骤:
1.在新主机的root用户的authorized_keys文件中安装集群的公共SSH密钥:
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph02
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph03
2.告诉Ceph新节点是集群的一部分:
[root@ceph01 ~]# cephadm shell
Inferring fsid 0978cb18-dc68-11ef-b0d7-000c29460ffd
Inferring config /var/lib/ceph/0978cb18-dc68-11ef-b0d7-000c29460ffd/mon.ceph01/config
Using ceph image with id '37996728e013' and tag 'v19' created on 2024-09-28 06:08:21 +0800 CST
quay.io/ceph/ceph@sha256:200087c35811bf28e8a8073b15fa86c07cce85c575f1ccd62d1d6ddbfdc6770a
[ceph: root@ceph01 /]# ceph orch host add ceph02 192.168.61.12
Added host 'ceph02' with addr '192.168.61.12'
[ceph: root@ceph01 /]# ceph orch host add ceph03 192.168.61.13
Added host 'ceph03' with addr '192.168.61.13'
查看集群中所有主机:
[ceph: root@ceph01 /]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph01 192.168.61.11 _admin
ceph02 192.168.61.12
ceph03 192.168.61.13
3 hosts in cluster
5.4添加存储(部署 OSD)
集群中每个节点增加单独的500G磁盘作为存储盘
[root@ceph01 ~]# lsblk
..
nvme0n2 259:3 0 500G 0 disk
从特定主机上的特定设备创建高级 OSD
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph01:/dev/nvme0n2
Created osd(s) 0 on host 'ceph01'
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph02:/dev/nvme0n2
Created osd(s) 1 on host 'ceph02'
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph03:/dev/nvme0n2
Created osd(s) 2 on host 'ceph03'
增加磁盘完成后查看集群状态已正常
[ceph: root@ceph01 /]# ceph -scluster:id: 0978cb18-dc68-11ef-b0d7-000c29460ffdhealth: HEALTH_OKservices:mon: 3 daemons, quorum ceph01,ceph02,ceph03 (age 26m)mgr: ceph01.vqsdyy(active, since 28m), standbys: ceph02.dqnwfvosd: 3 osds: 3 up (since 16m), 3 in (since 16m)data:pools: 1 pools, 1 pgsobjects: 2 objects, 449 KiBusage: 82 MiB used, 1.5 TiB / 1.5 TiB availpgs: 1 active+clean
相关文章:
基于BClinux8部署Ceph 19.2(squid)集群
#作者:闫乾苓 文章目录 1.版本选择Ceph版本发布历史目前官方在维护的版本 2.部署方法3.服务器规划4.前置配置4.1系统更新4.2配置hosts cat >> /etc/hosts << EOFssh-keygenssh-copy-id ceph01ssh-copy-id ceph02ssh-copy-id ceph034.5 Python34.6 Syst…...
CVPR2025 | 对抗样本智能安全方向论文汇总 | 持续更新中~
汇总结果来源:CVPR 2025 Accepted Papers 若文中出现的 论文链接 和 GitHub链接 点不开,则说明还未公布,在公布后笔者会及时添加. 若笔者未及时添加,欢迎读者告知. 文章根据题目关键词搜索,可能会有遗漏. 若笔者出现…...
[leetcode]1631. 最小体力消耗路径(bool类型dfs+二分答案/记忆化剪枝/并查集Kruskal思想)
题目链接 题意 给定 n m n\times m nm地图 要从(1,1) 走到 (n,m) 定义高度绝对差为四联通意义下相邻的两个点高度的绝对值之差 定义路径的体力值为整条路径上 所有高度绝对差的max 求所有路径中 最小的路径体力值是多少 方法1 这是我一开始自己写的记忆化剪枝 比较暴力 时…...
Linux-Ubuntu 系统学习笔记 | 从入门到实战
📘 Linux-Ubuntu 系统学习笔记 | 从入门到实战 📜 目录 环境安装基本操作Linux操作系统介绍文件系统常用命令用户权限管理编辑器vimGCC编译器动态库与静态库Makefile 1. 环境安装 🌟 下载镜像 推荐使用清华大学开源镜像站下载Ubuntu镜像&a…...
Java学习笔记-XXH3哈希算法
XXH3是由Yann Collet设计的非加密哈希算法,属于XXHash系列的最新变种,专注于极速性能与低碰撞率,适用于对计算效率要求极高的场景。 极速性能 在RAM速度限制下运行,小数据(如 1-128 字节)处理可达纳秒级&…...
【容器运维】docker搭建私有仓库
一、基础方案:使用 Docker Registry 快速搭建 1. 拉取并启动 Registry 镜像 # 拉取官方镜像 docker pull registry:2# 运行容器(数据持久化到宿主机目录) docker run -d -p 5000:5000 \--name my-registry \-v /opt/data/registry:/var/lib…...
深入理解 Spring 框架中的 AOP 技术
一、引言 在 Java 开发领域,Spring 框架凭借其强大的功能和丰富的特性,成为了众多开发者构建企业级应用的首选。其中,面向切面编程(AOP)作为 Spring 框架的核心技术之一,为开发者提供了一种全新的程序结构…...
磁盘清理工具-TreeSize Free介绍
TreeSizeFree是一个磁盘空间管理工具,主要用于分析磁盘使用情况,帮助用户找到占用空间大的文件和文件夹: 特点:按大小排序:快速找到占用空间最大的文件或文件夹 一般可以删除: 扫描 C:\Users\XXX\AppData\Local\Temp 或 C:\Window…...
redis MISCONF Redis is configured to save RDB snapshots报错解决
直接上解决方案 修改redis配置文件 stop-writes-on-bgsave-error no 重启redis...
c#知识点补充2
1.非静态类能否调用静态方法可以 2.对string类型扩展方法,如何进行 类用静态类,参数是this 调用如下 3.out的用法 一定要给a赋值 这种写法不行 这样才行 4.匿名类 5.委托的使用 无论是匿名委托,还是具命委托,委托实例化后一定要…...
循环神经网络(Recurrent Neural Network, RNN)与 Transformer
循环神经网络(RNN)与 Transformer 1. 循环神经网络(RNN)简介 1.1 RNN 结构 循环神经网络(Recurrent Neural Network, RNN)是一种适用于处理序列数据的神经网络。其核心特点是通过隐藏状态(Hi…...
力扣45.跳跃游戏
45. 跳跃游戏 II - 力扣(LeetCode) 代码区: #include<vector> class Solution {public:int jump(vector<int>& nums) {int ans[10005] ;memset(ans,1e4,sizeof(ans));ans[0]0;for(int i0;i<nums.size();i){for(int j1;j…...
招聘面试季--方法论--如何从零到-规划一个新的app产品
规划一个新APP产品的系统化步骤及关键要点: 一、需求验证阶段 明确目标用户与核心需求 通过用户调研(问卷、访谈)定义目标人群的痛点和场景,例如购物类APP需优先满足浏览、支付等核心需求。判断APP的必要性:若功…...
MacOS安装 nextcloud 的 Virtual File System
需求 在Mac上安装next cloud实现类似 OneDrive 那样,文件直接保存在服务器,需要再下载到本地。 方法 在 官网下载Download for desktop,注意要下对版本,千万别下 Mac OS默认的那个。 安装了登录在配置过程中千万不要设置任何同…...
OpenCV Imgproc 模块使用指南(Python 版)
一、模块概述 imgproc 模块是 OpenCV 的图像处理核心,提供从基础滤波到高级特征提取的全流程功能。核心功能包括: 图像滤波:降噪、平滑、锐化几何变换:缩放、旋转、透视校正颜色空间转换:BGR↔灰度 / HSV/Lab 等阈值…...
C/C++蓝桥杯算法真题打卡(Day6)
一、P8615 [蓝桥杯 2014 国 C] 拼接平方数 - 洛谷 方法一:算法代码(字符串分割法) #include<bits/stdc.h> // 包含标准库中的所有头文件,方便编程 using namespace std; // 使用标准命名空间,避免每次调用…...
ORACLE RAC ASM双存储架构下存储部分LUN异常的处理
早上接到用户电话,出现有表空间不足的告警,事实上此环境经常巡检并且有告警系统,一开始就带着有所疑惑的心理,结果同事在扩大表空间时,遇到报错 ORA-15401/ORA-17505,提示ASM空间满了: ALERT日志࿱…...
【设计模式】SOLID 设计原则概述
SOLID 是面向对象设计中的五大原则,不管什么面向对象的语言, 这个准则都很重要,如果你没听说过,赶紧先学一下。它可以提高代码的可维护性、可扩展性和可读性,使代码更加健壮、易于测试和扩展。SOLID 代表以下五个设计原…...
从边缘到核心:群联云防护如何重新定义安全加速边界?
一、安全能力的全方位碾压 1. 协议层深度防护 四层防御: 动态过滤畸形TCP/UDP包(如SYN Flood),传统CDN仅限速率控制。技术示例:基于AI的协议指纹分析,拦截异常连接模式。 七层防御: 精准识别业…...
others-rustdesk远程
title: others-rustdesk远程 categories: Others tags: [others, 远程] date: 2025-03-19 10:19:34 comments: false mathjax: true toc: true others-rustdesk远程, 替代 todesk 的解决方案 前篇 官方 服务器 - https://rustdesk.com/docs/zh-cn/self-host/rustdesk-server-o…...
记录 macOS 上使用 Homebrew 安装的软件
Homebrew 是 macOS 上最受欢迎的软件包管理器之一,能够轻松安装各种命令行工具和 GUI 应用。本文记录了我通过 Homebrew 安装的各种软件,并对它们的用途和基本使用方法进行介绍。 🍺 Homebrew 介绍 Homebrew 是一个开源的包管理器ÿ…...
springmvc中使用interceptor拦截
HandlerInterceptor 是Spring MVC中用于在请求处理之前、之后以及完成之后执行逻辑的接口。它与Servlet的Filter类似,但更加灵活,因为它可以访问Spring的上下文和模型数据。HandlerInterceptor 常用于日志记录、权限验证、性能监控等场景。 ### **1. 创…...
C++基础 [八] - list的使用与模拟实现
目录 list的介绍 List的迭代器失效问题 List中sort的效率测试 list 容器的模拟实现思想 模块分析 作用分析 list_node类设计 list 的迭代器类设计 迭代器类--存在的意义 迭代器类--模拟实现 模板参数 和 成员变量 构造函数 * 运算符的重载 运算符的重载 -- 运…...
使用excel.EasyExcel实现导出有自定义样式模板的excel数据文件,粘贴即用!!!
客户要求导出的excel文件是有好看格式的,当然本文举例模板文件比较简单,内容丰富的模板可以自行设置,话不多说,第一步设置一个"好看"的excel文件模板 上面要注意的地方是{.变量名} ,这里的变量名对应的就是…...
Spring Boot 集成 Elasticsearch怎样在不启动es的情况下正常启动服务
解释 在spingboot 集成es客户端后,每当服务启动时,服务默认都会查看es中是否已经创建了对应的索引,如果没有索引则创建。基于上面的规则我们可以通过配置不自动创建索引来达到在没有es服务的情况下正常启动服务。 解决办法 在entity类的Docu…...
Java面试黄金宝典8
1. 什么是 Spring MVC 定义 Spring MVC 是 Spring 框架里用于构建 Web 应用程序的模块,它严格遵循 MVC(Model - View - Controller)设计模式。这种设计模式把应用程序清晰地划分成三个主要部分: Model(模型࿰…...
JVM常见概念之条件移动
问题 当我们有分支频率数据时,有什么有趣的技巧可以做吗?什么是条件移动? 基础知识 如果您需要在来自一个分支的两个结果之间进行选择,那么您可以在 ISA 级别做两件不同的事情。 首先,你可以创建一个分支ÿ…...
Android AI ChatBot-v1.6.3-28-开心版[免登录使用GPT-4o和DeepSeek]
Android AI ChatBot- 链接:https://pan.xunlei.com/s/VOLi1Ua071S6QZBGixcVL5eeA1?pwdp3tt# 免登录使用GPT-4o和DeepSeek...
集成学习(上):Bagging集成方法
一、什么是集成学习? 在机器学习的世界里,没有哪个模型是完美无缺的。就像古希腊神话中的"盲人摸象",单个模型往往只能捕捉到数据特征的某个侧面。但当我们把多个模型的智慧集合起来,就能像拼图一样还原出完整的真相&a…...
DeepSeek R1 本地部署指南 (3) - 更换本地部署模型 Windows/macOS 通用
0.准备 完成 Windows 或 macOS 安装: DeepSeek R1 本地部署指南 (1) - Windows 本地部署-CSDN博客 DeepSeek R1 本地部署指南 (2) - macOS 本地部署-CSDN博客 以下内容 Windows 和 macOS 命令执行相同: Windows 管理员启动:命令提示符 CMD ma…...
