浪潮云启操作系统(InLinux)bcache缓存实践:理解OpenStack环境下虚拟机卷、Ceph OSD、bcache设备之间的映射关系
前言
在OpenStack平台上,采用bcache加速ceph分布式存储的方案被广泛用于企业和云环境。一方面,Ceph作为分布式存储系统,与虚拟机存储卷紧密结合,可以提供高可用和高性能的存储服务。另一方面,bcache作为混合存储方案,利用SSD缓存加速HDD存储,有效提升I/O性能。为了优化存储系统性能,理解虚拟机卷、Ceph OSD和bcache设备之间的映射关系非常重要。
本指南基于InLinux2312-LTS-SP1版本,旨在帮助你查找并理解OpenStack环境下虚拟机卷、Ceph OSD和bcache的映射关系,便于监控和优化存储系统。
ceph数据的映射层次如下图所示。

浪潮云启操作系统(InLinux)版本
以下操作步骤均基于InLinux2312-LTS-SP1版本,在此版本上进行环境分析。

虚拟机卷与Ceph OSD的映射关系
在OpenStack中,虚拟机卷(通常为Cinder卷)存储在Ceph集群上,通过RBD(RADOS Block Device)进行管理。要查找虚拟机卷与Ceph OSD的映射关系,可以按照以下步骤进行:
1. 获取虚拟机卷的信息
首先,需要获取虚拟机卷的名称和所在的Ceph存储池。可以通过OpenStack的命令行工具或API来获取。
-
使用以下命令查找虚拟机使用的卷:
openstack server show <虚拟机名称>在输出结果中,查找与“volume”相关的部分。这里你可以看到虚拟机使用的卷ID。
openstack server show vm-test

2. 查看虚拟机卷的RBD映射
使用rbd命令查看卷在Ceph中的映射关系。
-
列出Ceph池中的所有RBD镜像:
ceph osd lspools

遍历所有资源池查询虚拟机卷所在的pool,如果资源池中存在虚拟机卷,就可以确认虚拟机卷所在的资源池。
rbd ls

-
获取特定RBD镜像的信息:
rbd info <pool_name>/<volume_name>这将显示RBD镜像的大小、对象大小等信息。

虚拟机硬盘卷使用了15360个对象。block_name_prefix为rbd_data.936093419e6a4f。
3. 查找RBD对象与PG的关系
RBD镜像在Ceph中被分割成多个对象,这些对象被分布在不同的Placement Group(PG)中,而PG又映射到具体的OSD上。
-
列出存储池中的所有对象(注意可能对象很多,可以过滤):
rados -p <pool_name> ls | grep <block_name_prefix>
-
获取对象所在的PG:
ceph osd map <pool_name> <object_name>
可以查询到PG ID是pg 11.a2b75800。
4. 确定PG映射到的OSD
-
查看PG的详细信息:
ceph pg map <pgid>输出示例:

这里的
[6,133,208]表示该PG的数据分布在OSD.6、OSD.133和OSD.208上。
5. 汇总映射关系
通过上述步骤,可以将虚拟机卷的对象映射到具体的PG,再从PG映射到具体的OSD上。这样,就可以了解该虚拟机卷的数据存储在哪些OSD上。
虚拟机卷volume-xxx存储在Ceph池volumes中。
- 其中一个对象
rbd_data.xxxx属于PG 11.a2b75800。 - PG 11.a2b75800的数据分布在OSD.6、OSD.133和OSD.208上。
6. 结论
因为虚拟机卷对应了多个对象,而对象按照哈希算法分布到不同的PG,PG则按照crush算法映射到不同的osd。可以理解为虚拟机卷和osd是一对多的关系。
Ceph OSD与bcache的映射关系
为了加速Ceph OSD的读写操作,bcache被用作缓存设备。以下是查找Ceph OSD和bcache的映射关系的步骤:
使用ceph osd tree查找OSD所在的主机节点
-
查看Ceph集群的OSD树:
ceph osd tree输出示例:
- 通过此命令,可以知道每个OSD所在的主机节点(
host)。
- 通过此命令,可以知道每个OSD所在的主机节点(
2. 获取OSD的元数据信息
-
使用
ceph osd metadata命令获取特定OSD的详细信息:ceph osd metadata <osd_id>
关键字段:
-
hostname: OSD所在的主机节点storage-011。bluestore_bdev_dev_node或bluestore_bdev: OSD使用的块设备,/dev/dm-10。- devices: bcache2,nvme0n1可以得到osd使用的设备为为/dev/dm-10,bcache设备为bcache2。
3. 在主机节点上查找对应的设备信息
-
登录到对应的主机节点(例如
host1)。 -
使用
lsblk命令查看设备映射:lsblk输出示例:

-
查找
/dev/dm-10对应的底层设备,是LVM类型的设备。 -
/dev/dm-10是逻辑卷(LVM),可以使用dmsetup命令查看详细信息:
dmsetup ls --tree -
这将显示设备映射的树状结构。
4. 查找bcache的映射关系
-
查找bcache设备:
ls /dev/bcache* -
使用
lsblk查看bcache设备的映射:lsblk -
可以看到
/dev/bcache2是由/dev/sdc(后端设备)和/dev/nvme2n1p3(缓存设备)组成的。 -
查看bcache的后端设备和缓存设备:
-
后端设备:
cat /sys/block/bcache0/bcache/backing_dev_name 输出示例:
sdc
-
-
缓存设备:
readlink /sys/block/bcache2/bcache/cache/cache0 | awk -F'/' '{print $(NF-1)}'
输出示例:
nvme2n1p3
6. 汇总映射关系
通过以上步骤,可以将Ceph OSD与其底层设备(/dev/dm-1),以及bcache设备对应起来。通过上述方法,可以确认一个osd对应一个bcache设备。
-
步骤概括:
- 使用
ceph osd tree找到OSD所在的主机节点。 - 使用
ceph osd metadata获取OSD的设备信息(如/dev/dm-1)。 - 在主机节点上,使用
lsblk和dmsetup找到/dev/dm-1的物理设备和映射关系。 - 确认
/dev/dm-10是否建立在/dev/bcache*之上,进而确定OSD是否通过bcache加速。
- 使用
总结
在浪潮云启操作系统(InLinux)上,理解虚拟机卷、Ceph OSD和bcache的映射关系有助于优化存储系统性能。因为虚拟机卷对应了多个对象,而对象按照哈希算法分布到不同的PG,PG则按照crush算法映射到不同的osd,可以得到虚拟机卷和osd是一对多的关系;而osd通过device map设备和bcache设备是一对一的映射;则可以推理虚拟机卷和bcache设备也是一对多的关系,组成虚拟机卷的多个对象分布在多个bcache设备中。
相关文章:
浪潮云启操作系统(InLinux)bcache缓存实践:理解OpenStack环境下虚拟机卷、Ceph OSD、bcache设备之间的映射关系
前言 在OpenStack平台上,采用bcache加速ceph分布式存储的方案被广泛用于企业和云环境。一方面,Ceph作为分布式存储系统,与虚拟机存储卷紧密结合,可以提供高可用和高性能的存储服务。另一方面,bcache作为混合存储方案&…...
通过ssh端口反向通道建立并实现linux系统的xrdp以及web访问
Content 1 问题描述2 原因分析3 解决办法3.1 安装x11以及gnome桌面环境查看是否安装x11否则使用下面指令安装x11组件查看是否安装gnome否则使用下面指令安装gnome桌面环境 3.2 安装xrdp使用下面指令安装xrdp(如果安装了则跳过)启动xrdp服务 3.3 远程服务…...
# 渗透测试#安全见闻8 量子物理面临的安全挑战
# 渗透测试#安全见闻8 量子物理面临的安全挑战 ##B站陇羽Sec## 量子计算原理与技术 量子计算是一种基于量子力学原理的计算方式,它利用量子位(qubits)来进行信息处理和计算…...
【rabbitmq】实现问答消息消费示例
目录 1. 说明2. 截图2.1 接口调用截图2.2 项目结构截图 3. 代码示例 1. 说明 1.实现的是一个简单的sse接口,单向的长连接,后端可以向前端不断输出数据。2.通过调用sse接口,触发rabbitmq向队列塞消息,向前端返回一个sseEmitter对象…...
单片机_RTOS__架构概念
经典单片机程序 void main() {while(1){函数1();函数2();}} 有无RTOS区别 裸机 RTOS RTOS程序 喂饭() {while(1){喂一口饭();} } …...
ClickHouse在百度MEG数据中台的落地和优化
导读 百度MEG上一代大数据产品存在平台分散、质量不均和易用性差等问题,导致开发效率低下、学习成本高,业务需求响应迟缓。为了解决这些问题,百度MEG内部开发了图灵3.0生态系统,包括Turing Data Engine(TDE)计算引擎、Turing Dat…...
B/S架构(Browser/Server)与C/S架构(Client/Server)
基本概念 B/S架构(Browser/Server):即浏览器/服务器架构。在这种架构中,用户通过浏览器(如Chrome、Firefox、Safari等)访问服务器上的应用程序。服务器端负责处理业务逻辑、存储数据等核心功能,…...
idea中自定义注释模板语法
文章目录 idea 自定义模板语法1.自定义模板语法是什么?2.如何在idea中设置呢? idea 自定义模板语法 1.自定义模板语法是什么? 打开我的idea,创建一个测试类: 这里看到我的 test 测试类里面会有注释,这是怎…...
基于SSM的儿童教育网站【附源码】
基于SpringBoot的课程作业管理系统(源码L文说明文档) 目录 4 系统设计 4.1 系统概述 4.2 系统模块设计 4.3.3 数据库表设计 5 系统实现 5.1 管理员功能模块的实现 5.1.1 视频列表 5.1.2 文章信息管理 5.1.3 文章类…...
深挖自闭症病因与孩子表现的关联
自闭症,亦称为孤独症,乃是一种对儿童发展有着严重影响的神经发育障碍性疾病。深入探寻自闭症的病因与孩子表现之间的联系,对于更深刻地理解并助力自闭症儿童而言,可谓至关重要。 当前,自闭症的病因尚未完全明晰&#x…...
[网络协议篇] UDP协议
文章目录 1. 简介2. 特点3. UDP数据报结构4. 基于UDP的应用层协议5. UDP安全性问题6. 使用udp传输数据的系统就一定不可靠吗?7. 基于UDP的主机探活 python实现 1. 简介 User Datagram Protocol,用户数据报协议,基于IP协议提供面向无连接的网…...
关系型数据库(1)----MySQL(初阶)
目录 1.mysql 2.mysqld 3.mysql架构 1.连接层 2.核心服务层 3.存储引擎层 4.数据存储层 4.SQL分类 5.MySQL操作库 6.MySQL数据类型 1. 数值类型 2. 日期和时间类型 3. 字符串类型 4. 空间类型 5. JSON数据类型 7.MySQL表的约束 1. 主键约束(PRIMARY…...
计算机毕业设计Python+大模型租房推荐系统 租房大屏可视化 租房爬虫 hadoop spark 58同城租房爬虫 房源推荐系统
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 用到的技术: 1. python…...
深度学习技术演进:从 CNN、RNN 到 Transformer 的发展与原理解析
深度学习的技术演进经历了从卷积神经网络(CNN)到循环神经网络(RNN)再到 Transformer 的重要发展。这三个架构分别擅长处理图像、序列数据和多种任务的特征,标志着深度学习在不同领域取得的进步。 1. 卷积神经网络&…...
Lua中的goto语句
软考鸭微信小程序 过软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 在Lua编程语言中,goto语句是一种跳转语句,用于将程序的执行流程无条件地转移到程序中的另一个位置。这个位置由一个标签(…...
【rust实战】rust博客系统2_使用wrap启动rust项目服务
如何创建一个使用warp框架的rust项目1.使用cargo 创建项目 cargo new blog 2.添加warp依赖 1.cd blog 2.编辑Cargo.toml文件 添加warp 和 tokio 作为依赖项 在[dependencies]中添加 [package] name "blog" version "0.1.0" …...
【实战案例】Django框架使用模板渲染视图页面及异常处理
本文基于之前内容列表如下: 【图文指引】5分钟搭建Django轻量级框架服务 【实战案例】Django框架基础之上编写第一个Django应用之基本请求和响应 【实战案例】Django框架连接并操作数据库MySQL相关API 视图概述 Django中的视图的概念是一类具有相同功能和模板的网…...
设置K8s管理节点异常容忍时间
说明 每个节点上的 kubelet 需要定时向 apiserver 上报当前节点状态,如果两者间网络异常导致心跳终端,kube-controller-manager 中的 NodeController 会将该节点标记为 Unknown 或 Unhealthy,持续一段时间异常状态后 kube-controller-manage…...
什么样的JSON编辑器才好用
简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,同时也便于机器解析和生成。随着互联网和应用程序的快速发展,JSON已经成为数据传输和存储的主要格式之一。在处理和编辑JSON数据…...
ArkUI自定义TabBar组件
在ArkUI中的Tabs,通过页签进行内容视图切换的容器组件,每个页签对应一个内容视图。其中内容是图TabContent作为Tabs的自组件,通过给TabContent设置tabBar属性来自定义导航栏样式。现在我们就根据UI设计的效果图来实现下图效果: 根…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
反射获取方法和属性
Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
C# 表达式和运算符(求值顺序)
求值顺序 表达式可以由许多嵌套的子表达式构成。子表达式的求值顺序可以使表达式的最终值发生 变化。 例如,已知表达式3*52,依照子表达式的求值顺序,有两种可能的结果,如图9-3所示。 如果乘法先执行,结果是17。如果5…...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
掌握 HTTP 请求:理解 cURL GET 语法
cURL 是一个强大的命令行工具,用于发送 HTTP 请求和与 Web 服务器交互。在 Web 开发和测试中,cURL 经常用于发送 GET 请求来获取服务器资源。本文将详细介绍 cURL GET 请求的语法和使用方法。 一、cURL 基本概念 cURL 是 "Client URL" 的缩写…...
VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
