K8s使用Ceph作为后端存储
- Ceph概述
- 部署Ceph集群
- Ceph存储使用
- Pod使用Ceph持久化数据
- Ceph监控
- Rook部署Ceph
1❖ Ceph概述
- Ceph介绍
- Ceph架构
- Ceph核心概念
Ceph介绍
Ceph架构
- RBD(RADOS Block Device):块存储接口
- RGW(RADOS Gateway)):对象存储网关,接口与S3和Swift兼容
- CephFS(Ceph File System):文件级存储接口
- RADOS(Reliable Autonomic Distributed Object Store):抽象的对象存储集群,Ceph核心,实现用户数据分配、故障转移等集群操作
- MON:集群状态维护,例如OSD是否健康、PG状态等
- MDS (Metadata Server) :CephFS服务依赖的元数据服务
- OSD(Object Storage Daemon):对象存储设备,主要存储数据
Ceph核心概念
- Pool:存储池,是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本分布策略;支持两种类型:副本(replicated)和 纠删码(Erasure Code)
- PG( placement group):放置策略组,对象的集合,该集合里的所有对象都具有相同的放置策略;简单点说就是相同PG内的对象都会放到相同的硬盘上; PG是ceph的核心概念, 服务端数据均衡和恢复的最小粒度;引入PG这一层其实是为了更好的分配数据和定位数据。
- 一个Pool里有很多PG;
- 一个PG里包含一堆对象;一个对象只能属于一个PG;
- PG属于多个OSD,分布在不同的OSD上;
2❖ 部署Ceph集群
- Ceph版本选择
- 服务器配置建议
- Ceph集群部署规划
- 操作系统初始化配置
- Ceph集群部署
- Ceph集群服务管理
- Ceph集群常用管理命令
Ceph版本选择
服务器配置建议

Ceph集群部署规划

- ceph-deploy:ceph集群部署节点,负责集群整体部署,这里复用node1节点,也可以单独找一台服务器作为部署节点。
- monitor:Ceph监视管理节点,承担Ceph集群重要的管理任务,负责集群状态维护,例如存储池副本数、PG状态、OSD数量等,至少部署1个,一般需要3或5个节点组建高可用。
- osd:Ceph存储节点,实际负责数据存储的节点,集群中至少有3个OSD,不少于默认副本数,每个OSD对应一块硬盘。
操作系统初始化配置
# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久,重启生效
setenforce 0 # 临时
# 关闭swap(可选)
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久,重启生效
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 在node添加hosts
cat >> /etc/hosts << EOF
192.168.31.71 ceph-node01
192.168.31.72 ceph-node02
192.168.31.73 ceph-node03
EOF# 设置文件描述符
ulimit -SHn 65535
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
# 配置SSH免交互认证
ssh-keygen -t rsa
ssh-copy-id root@ceph-node01
ssh-copy-id root@ceph-node02
ssh-copy-id root@ceph-node03 Ceph集群部署
- yum:常规的部署方式
- ceph-deploy:ceph提供的简易部署工具,可以非常方便部署ceph集群。
- ceph-ansible:官方基于ansible写的自动化部署工具
- cephadm:使用容器部署和管理Ceph集群,需要先部署Docker或者Podman和Python3
- rook:在Kubernetes中部署和管理Ceph集群
- 配置阿里云yum仓库
- 安装ceph-deploy工具
- 创建集群
- 安装Ceph
- 部署Monitor服务
- 部署OSD服务并添加硬盘
- 部署MGR服务
1、配置阿里云yum仓库
cat > /etc/yum.repos.d/ceph.repo << EOF
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/\$basearch
gpgcheck=0
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
gpgcheck=0
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
gpgcheck=0
EOF 2、安装ceph-deploy工具
yum -y install ceph-deploy 3、创建集群
mkdir my-cluster
cd my-cluster
# 创建一个Ceph集群
ceph-deploy new ceph-node01 ceph-node02 ceph-node03 4、安装Ceph
ceph-deploy install --no-adjust-repos ceph-node01 ceph-node02 ceph-node03 5、部署Monitor服务
ceph-deploy mon create-initial ceph-deploy admin ceph-node01 ceph-node02 ceph-node03 6、部署OSD服务并添加硬盘
ceph-deploy osd create --data /dev/sdb ceph-node01
ceph-deploy osd create --data /dev/sdc ceph-node01
ceph-deploy osd create --data /dev/sdb ceph-node02
ceph-deploy osd create --data /dev/sdc ceph-node02
ceph-deploy osd create --data /dev/sdb ceph-node03
ceph-deploy osd create --data /dev/sdc ceph-node03 7、部署MGR服务
ceph-deploy mgr create ceph-node01 ceph-node02 ceph-node03 Ceph集群服务管理
# systemctl restart ceph.target # systemctl restart ceph-osd@id
# systemctl restart ceph-osd.target
# systemctl restart ceph-mon.target
# systemctl restart ceph-mgr.target Ceph集群常用管理命令

3❖ Ceph存储使用
- 三种存储类型介绍
- RBD块存储
- CephFS文件存储
三种存储类型介绍
- 块存储(RBD)
- 文件存储(CephFS)
- 对象存储(Object)
RBD块存储:RBD工作流程
RBD块存储:常用管理命令

RBD块存储:RBD创建并使用
1、创建存储池
ceph osd pool create rbd-pool 128 # 格式:ceph osd pool create <pool-name> <pg-num>
ceph osd pool ls
2、指定存储池使用存储类型
ceph osd pool application enable rbd-pool rbd
3、创建一个10G的块设备
rbd create --size 10240 rbd-pool/image01 # 格式:rbd create --size {megabytes} {pool-name}/{image-name}
4、查看块设备
rbd ls -l rbd-pool
rbd info rbd-pool/image01 RBD块存储:RBD创建并使用
节点本地挂载使用块设备:
1、映射
rbd map rbd-pool/image01
2、格式化块设备
mkfs.xfs /dev/rbd0
3、挂载
mount /dev/rbd0 /mnt
4、取消挂载和内核映射
umount /mnt
rbd unmap rbd-pool/image01 远程挂载使用块设备:
1、拷贝配置文件和秘钥
cd my-cluster/
scp ceph.conf root@192.168.31.74:/etc/ceph
scp ceph.client.admin.keyring root@192.168.31.74:/etc/ceph
2、安装Ceph客户端
yum install epel-release -y
yum -y install ceph-common
3、剩余操作就与左侧一样了 RBD块存储:快照
快照:在某个时间点的副本,当系统出现问题,可以通过恢复快照恢复之前副本状态。
1、创建快照
rbd snap create rbd-pool/image01@snap01
2、查看快照
rbd snap list image01
rbd snap ls rbd/image01
rbd ls –l
3、还原快照
rbd snap rollback rbd-pool/image01@snap01
注:还原快照前需先取消挂载和内核映射,否则会出错
4、重新映射并挂载验证
rbd map rbd-pool/image01
mount /dev/rbd0 /mnt/
5、删除快照
rbd snap rm rbd-pool/image01@snap01 RBD块存储:克隆
克隆:基于指定的块设备克隆出相同的一份出来
1、创建一个块设备
rbd create --size 10240 rbd-pool/image02
2、创建快照
rbd snap create rbd-pool/image02@snap01
3、设置快照处于被保护状态
rbd snap protect rbd-pool/image02@snap01
4、通过快照克隆一个新块设备
rbd clone rbd-pool/image02@snap01 rbd-pool/image02_clone
rbd info image02_clone
5、就可以按照前面方式使用这个新克隆的块设备了
6、目前克隆的块设备依赖于父块设备,也可以将其独立于父块设备
rbd flatten rbd-pool/image02_clone CephFS文件系统
CephFS文件存储:部署MDS服务
部署MDS实例:
ceph-deploy mds create ceph-node01 ceph-node02 ceph-node03
ceph mds stat # 查看MDS节点状态 CephFS文件系统:创建文件系统
1、创建存储池
ceph osd pool create cephfs_data <pg_num>
ceph osd pool create cephfs_metadata <pg_num>
ceph fs ls
2、创建文件系统
ceph fs new cephfs cephfs_metadata cephfs_data # 格式:ceph fs new <fs_name> <metadata> <data>
ceph fs ls #查看创建后的cephfs CephFS文件存储:部署MDS服务
4❖ Pod使用Ceph持久化数据
5❖ Ceph监控
6❖ Rook部署Ceph
相关文章:
K8s使用Ceph作为后端存储
Ceph概述 部署Ceph集群 Ceph存储使用 Pod使用Ceph持久化数据 Ceph监控 Rook部署Ceph 1❖ Ceph概述 Ceph介绍 Ceph架构 Ceph核心概念 Ceph介绍 Ceph是一个开源的分布式存储系统,具有高扩展性、高性能、高可靠性等特点,提 供良好的性能、可靠性和可扩展…...
hive整合es,详细过程。
参考官网 Apache Hive integration | Elasticsearch for Apache Hadoop [7.17] | Elastic 官网的介绍很简单,我看了很多博客,写的也很简单,但是我搞了半天才勉强成功,分享下,免得各位多走弯路。 环境准备 官网也很…...
vue中tab隐藏display:none(v-show无效,v-if有效)
目录 背景 原因:display: table-cell>display:none 解决: 方法A.获取元素设置display(适用于 简单场景) 方法B.自定义tabs (适用于 复杂场景) 背景 内联样式(style“ ”) /this.$…...
2023年进阶测试,从接口测试到接口自动化测试总结,一篇彻底打通...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 json模块的使用 …...
客户支持工具从被动到主动的演变
在当日新月异的商业环境中,企业需要适应不断增长的客户需求,优质的客户支持变得越来越重要。客户支持工具从传统系统到尖端 AI驱动解决方案的演变具有变革性,增强了主动和无缝的支持体验。所以,使用正确的客户服务工具很重要&…...
网络安全行业相关证书
一:前言 对于考证这个话题,笔者的意见是:“有比没有好,有一定更好,但不一定必须;纸上证明终觉浅,安全还得实力行”。很多人对于各种机构的考证宣传搞得是云里雾里,不知道网络安全行业…...
[内网渗透]SUID提权
文章目录 [内网渗透]SUID提权0x01.什么是SUID?0x02.如何设置SUID?0x03.查找属主为root的SUID文件0x04.进行SUID提权1.find提权2.vim/vi/vim.tiny 以root权限修改文件3.bash提权4.less/more执行系统命令5.nano以root权限修改文件6.awk执行系统命令7.cp以r…...
clang 编译器前端 分析
clang 编译器前端 分析 clang的python接口教程(二) Python接口clang解析C语言AST抽象语法树 clang static analyzer源码分析 clang静态代码分析是clang相对于gcc一个比较能够引起关注的点,特别是clang静态代码分析基于checker的架构和大部…...
3个月精通Python(基础篇)——第1天:Python和Vscode环境安装
安装 Python: 访问 Python 官网 下载 ,下载最新的 Python 安装程序。 双击安装程序,按照提示进行安装设置即可。 在安装过程中,请勾选“Add Python X.X to PATH”选项,这样安装后 Python 会被自动添加到系统的环境变量…...
react native web RN webpack nginx 部署
# nginx配置 location /app {root html;index index.html;# url 切换时始终返回index.htmltry_files $uri /app/index.html; } # 图片样式缓存1年 location ~* /app.*\.(js|css|png|jpg)$ {access_log off;expires 365d; } # html/xml/json 文件不缓存 location ~* /app.…...
Jmeter性能测试之Beanshell解析并提取json响应
1:前置条件 将fastjson-1.2.49.jar包置于jmeter的lib目录下,并将该jar包添加到测试计划的Library中;否则会报:Typed variable declaration : Class: JSONObject not found in namespace的错误 2:解析思路 利用beansh…...
vue-echarts配置项详解
起因 最近接手了一个vue3项目,echarts用的是"vue-echarts": “^6.0.0”,每次查看文档的时候痛苦不已,找一个配置要花费大量时间,所以这篇文章,主要就是为了记录比较常见的一些配置。 主要会写三种图的配置…...
两个csv进行根据相同字段进行合并
源文件,第一列,编号0 目标文件, 编号3 根据社区名称进行匹配,然后将第一个csv文件的经纬度添加到第二个文件中。 import csvsource r"D:\000datasets\链家房价数据\2020去重后社区名称地理编码.csv" target r"…...
SolidWorks绘制Maxwell仿真用带桥接的三维平板螺旋线圈
文章目录 前言一、建立涡状线二、拉伸方法1(建立工作面,较复杂)三、拉伸方法2(穿透,较简单)四、建立桥接 前言 在使用Maxwell进行电磁场仿真时,经常需要绘制各种异形线圈,由于Maxwel…...
【每日一个知识点二】原型链
我都是想到啥写啥,丝毫没有规律。前面聊到箭头函数没有原型,就想到了再整理一篇原型链的。 原型 原型是JavaScript中对象的一个属性,它指向另一个对象,用于实现继承关系。每个对象都有一个原型属性__proto__,它指向它…...
placeholder样式自定义(uniapp 微信小程序、h5)
一、使用uniapp开发 ①第一种方式:(写在行内) <input type"text" placeholder"姓名" placeholder-style"font-size:28rpx;color:#999999;" />②第二种方式: (给input加上placeho…...
【LeetCode】383. 赎金信
题目:383. 赎金信 由于此题只含有小写字母,并且magazine里面的字母不可重复使用. 故首先用一个长度为26的整形数组记录magazine里字母出现的次数。 再用这个整形数组跟ransomeNote进行遍历比较,当数组中出现-1时,说明false,否则true. 代码&am…...
【算力革命】算力架构
AI芯片可按架构分为CPU、GPU、FPGA、ASIC,各架构的优缺点可参考以下文章: CPU、GPU、FPGA、ASIC等AI芯片特性及对比_cpu gpu fpga_maopig的博客-CSDN博客 最近,新名词 DSA(Domain Specific Architecture,特定领域架构…...
【视觉SLAM入门】4.3. (非线性最小二乘问题)优化算法实现-ceres和g2o, 图优化理论
"天道不争而善胜" 1. Ceres库1.1 名词解释1.2 具体例子1.3 C实现1. 定义代价函数2. 构建最小二乘问题3. 配置求解器,开始优化4. 优化完毕,查看结果 2. G2O(General Graphic Optimization)2.1 图优化2.2 具体例子2.3 C实现1. 定义顶点2. 定义边…...
vue Can‘t resolve ‘path‘
BREAKING CHANGE: webpack < 5 used to include polyfills for node.js core modules by default. This is no longer the case. Verify if you need this module and configure a polyfill for it. 这句话的意思是webpack 5之前是自动导入node一些核心模块的垫片…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...
Linux离线(zip方式)安装docker
目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1:修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本:CentOS 7 64位 内核版本:3.10.0 相关命令: uname -rcat /etc/os-rele…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
