浪潮云启操作系统(InLinux)bcache缓存实践:理解OpenStack环境下虚拟机卷、Ceph OSD、bcache设备之间的映射关系

news2024/10/23 9:00:39

前言

在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)。
2. 获取OSD的元数据信息
  • 使用ceph osd metadata命令获取特定OSD的详细信息:

    ceph osd metadata <osd_id>

    关键字段

    • hostname: OSD所在的主机节点storage-011。
    • bluestore_bdev_dev_nodebluestore_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设备。

  • 步骤概括

    1. 使用ceph osd tree找到OSD所在的主机节点。
    2. 使用ceph osd metadata获取OSD的设备信息(如/dev/dm-1)。
    3. 在主机节点上,使用lsblkdmsetup找到/dev/dm-1的物理设备和映射关系。
    4. 确认/dev/dm-10是否建立在/dev/bcache*之上,进而确定OSD是否通过bcache加速。

总结

在浪潮云启操作系统(InLinux)上,理解虚拟机卷、Ceph OSD和bcache的映射关系有助于优化存储系统性能。因为虚拟机卷对应了多个对象,而对象按照哈希算法分布到不同的PG,PG则按照crush算法映射到不同的osd,可以得到虚拟机卷和osd是一对多的关系;而osd通过device map设备和bcache设备是一对一的映射;则可以推理虚拟机卷和bcache设备也是一对多的关系,组成虚拟机卷的多个对象分布在多个bcache设备中。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java笔试06

在Java中&#xff0c;异常可以分为两大类&#xff1a;编译时异常&#xff08;编译时检查异常&#xff09;和运行时异常&#xff08;非编译时检查异常&#xff09;。 编译时异常&#xff08;Checked Exceptions&#xff09;是指在编译时期必须被捕获或声明抛出的异常。这些异常…

字节流写入文件

一、创建输出流对象表示的文件三种方式 方法一&#xff1a; FileOutputStream fos new FileOutputStream("fos.txt",true);//最简便方法二&#xff1a; FileOutputStream fos new FileOutputStream(new File("fos.txt"));方法三&#xff1b; File f ne…

Python | Leetcode Python题解之第502题IPO

题目&#xff1a; 题解&#xff1a; class Solution:def findMaximizedCapital(self, k: int, w: int, profits: List[int], capital: List[int]) -> int:if w > max(capital):return w sum(nlargest(k, profits))n len(profits)curr 0arr [(capital[i], profits[i]…

HTML作业

作业 复现下面的图片 复现结果 代码 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title></head><body><form action"#"method"get"enctype"text/plain"><…

Java程序设计:spring boot(7)——数据访问操作

目录 1 查询操作 1.1 接口方法定义 1.2 映射文件配置 1.3 UserService 1.4 UserController 2 添加操作 2.1 接口方式定义 2.2 映射文件配置 2.3 添加 commons-lang3 依赖 2.4 AssertUtil ⼯具类 2.5 ParamsException ⾃定义异常 2.6 UserService 2.7 ResultInfo …

UDP传输协议Linux C语言实战

文章目录 1.UDP简介1.1特点1.2 UDP协议头部格式1.2.1 **UDP头部**&#xff1a;1.2.2 **头部意义**&#xff1a;1.2.3 **头部参数**&#xff1a; 1.3 UDP数据长度控制1.4 UDP协议建立框架 2. 函数介绍2.1 sendto函数2.2 recvform函数2.3 其他函数 3.实例3.1 通用结构体、IPV4结构…

算法的学习笔记—(牛客JZ50)

&#x1f600;前言 在处理字符串时&#xff0c;寻找第一个只出现一次的字符是一项常见的任务。本文将探讨几种有效的解法&#xff0c;包括使用 HashMap 和位集&#xff08;BitSet&#xff09;。 &#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 &#x1f970;第一个只出现…

软件分享丨豆包电脑端 AI 助手

豆包电脑端 AI 助手是由字节跳动推出&#xff0c;旨在为用户提供高效便捷的工作和学习体验。它能在工作、学习等场景中发挥重要作用&#xff0c;为用户提供智能辅助&#xff0c;下面简单介绍它的特点&#xff1a; 高效搜索&#xff1a;像优化后的百度&#xff0c;直接提问就能…

【本科毕业设计】基于单片机的智能家居防火防盗报警系统

基于单片机的智能家居防火防盗报警系统 相关资料链接下载摘要Abstract第1章 绪论1.1课题的背景1.2 研究的目的和意义 第2章 系统总体方案设计2.1 设计要求2.2 方案选择和论证2.2.1 单片机的选择2.2.2 显示方案的选择 第3章 系统硬件设计3.1 整体方案设计3.1.1 系统概述3.1.2 系…

C#通过异或(^)运算符制作二进制加密(C#实现加密)

快速了解异或运算符&#xff1a; 异或运算符在C#中用 “^” 来表示 口诀&#xff1a;相同取0&#xff0c;相异取1 简单加密解密winform示例&#xff1a; /// <summary>/// 异或运算符加密实现/// </summary>/// <param name"p_int_Num">初始值<…

生成式 AI 与向量搜索如何扩大零售运营:巨大潜力尚待挖掘

在竞争日益激烈的零售领域&#xff0c;行业领导者始终在探索革新客户体验和优化运营的新途径&#xff0c;而生成式 AI 和向量搜索在这方面将大有可为。从个性化营销到高效库存管理&#xff0c;二者在零售领域的诸多应用场景中都展现出变革性潜力&#xff0c;已成为保持行业领先…

云电脑的真实使用体验

最近这几年&#xff0c;关于云电脑的宣传越来越多。 小枣君之前曾经给大家介绍过云电脑&#xff08;链接&#xff09;。简单来说&#xff0c;它属于云计算的一个应用。通过在云端虚拟出一些虚拟电脑&#xff0c;然后让用户可以远程使用&#xff08;仍然需要借助本地电脑&#x…

使用爬虫爬取Python中文开发者社区基础教程的数据

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

CANoe_C#调用CDD和CAPL调用CDD方法对比

引言 在汽车电子系统的开发和测试中,CANoe作为一款强大的网络仿真工具,广泛应用于各种通信协议的模拟和验证。为了实现复杂的测试场景,开发者可以使用不同的编程语言和方法来调用CANoe的功能。其中,C#和CAPL(CANoe Programming Language)是两种常用的编程方式。本文将对…

Golang | Leetcode Golang题解之第498题对角线遍历

题目&#xff1a; 题解&#xff1a; func findDiagonalOrder(mat [][]int) []int {m, n : len(mat), len(mat[0])ans : make([]int, 0, m*n)for i : 0; i < mn-1; i {if i%2 1 {x : max(i-n1, 0)y : min(i, n-1)for x < m && y > 0 {ans append(ans, mat[x…

学习笔记——交换——STP(生成树)工作原理

三、工作原理 STP的基本原理是在一个有二层环路的网络中&#xff0c;交换机通过运行STP&#xff0c;自动生成一个没有环路的网络拓扑。这个无环网络拓扑也叫做STP树(STP Tree)&#xff0c;树节点为某些交换机&#xff0c;树枝为某些链路。当网络拓扑发生变化时&#xff0c;STP…

《汇编语言》第15章——实验15安装新的 int 9 中断例程

安装新的 int9 中断例程 安装一个新的 int 9 中断例程&#xff0c;功能:在 DOS 下&#xff0c;按下A键后&#xff0c;除非不再松开如果松开&#xff0c;就显示满屏幕的A&#xff0c;其他的键照常处理。 提示&#xff0c;按下一个键时产生的扫描码称为通码&#xff0c;松开一个…

云计算作业一hadoop:问题解决备忘

教程地址&#xff1a;https://blog.csdn.net/qq_53877854/article/details/142412784 修改网络配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33在root用户下编辑 静态ip地址配置后查看ip与配置不符 注意&#xff1a;确保在这之前已经在VMware的编辑>虚拟网络编…

OpenCV中的图像通道合并

在计算机视觉和图像处理领域&#xff0c;OpenCV是一个强大的工具库&#xff0c;它提供了从基本操作到复杂算法的广泛功能。今天&#xff0c;我们将通过一个简单的示例来探索OpenCV中的图像通道处理&#xff0c;特别是如何操作和理解BGR与RGB颜色空间的差异。 Lena图像&#xf…

WSL迁移到D盘

迁移WSL 下的 ubuntu 到D盘 使用工具LxRunOffline 如果出现下面的错误 使用其他版本 [ERROR] Couldnt set the case sensitive attribute of the directory "\\?\C:\Users\admin\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04LTS_79rhkp1fndgsc\LocalState…