当前位置: 首页 > article >正文

浪潮云启操作系统(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)。
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.kler.cn/news/366275.html

相关文章:

  • 法治在沃刷积分-刷文章浏览数
  • # 渗透测试#安全见闻9 二进制安全
  • HivisionIDPhoto Docker部署以及Springboot接口对接(AI证件照制作)
  • ClickHouse在百度MEG数据中台的落地和优化
  • TLS协议基本原理与Wireshark分析
  • 程序结束、脚本语言、LISP、Python
  • 莱维飞行(Levy Flight)机制的介绍和MATLAB例程
  • QStyledItemDelegate用法(PyQt)
  • C++中的list介绍(常用函数)
  • Flume面试整理-如何处理Flume中的数据丢失
  • 2769. 找出最大的可达成数字
  • Linux操作命令(一)
  • GaussDB逻辑解码技术原理
  • OceanBase 首席科学家阳振坤:大模型时代的数据库思考
  • fpga开发环境总结
  • Spring声明式事务管理是通过注解或 XML 配置来实现
  • 安全见闻(9-完结)
  • FPGA图像处理之构建3×3矩阵
  • Spark Streaming 数据流处理
  • GUI简介、Swing的常用组件、java程序的运行过程、class文件、JAR、runable_jar、双括号初始化
  • npm run serve 提示异常Cannot read property ‘upgrade‘ of undefined
  • linux中myshell的实现
  • 基于Springboot+Vue的食品商城系统 (含源码数据库)
  • 解决电脑更改IP地址后无法连接网络的实用指南
  • Linux中级(DNS域名解析服务器)
  • 将项目从 Webpack 到 Vite 迁移的步骤