每天5分钟复习OpenStack(十五)Ceph与Bcache结合
上一章我们成功部署了bcache,这一章我们将Ceph与Bcache结合来使用,使用Bcache来为ceph的数据盘提速。
1 ceph 架构
一个标准的ceph集群可能是如下的架构,SSD/NVME 存储元数据,而SATA盘存储数据。这样的架构下,物理介质的SATA盘读写速率上限决定了存储集群Ceph的上限(木桶效应)。如果在此架构下我们给SATA盘加上一层缓存层.

在官方文档中给出了缓存层的结构如下

其整体思路都是一样,只是缓存层的方案因此长时间没有人维护。目前还处在非生产可用阶段 。
而bcache 技术则是经过了时间的洗礼,在ceph缓存技术中是比较成熟的方案。
则采用Bcache存储架构变成了如下架构。

在此架构下我们将Bcache的模式修改为writeback模式,则在使用缓存的情况下Ceph对数据盘写入性能得到了极大的提升。在生产环境中我们只需要专注于解决增加缓存的命中率即可。实际上大多数生产环境正是这么做的。
2 部署
在第十三章中我们介绍了ceph单节点的部署,如果你还没有一个单节点的ceph环境,那赶紧跳转回去,在自己的虚拟机环境上搭建一个最小的ceph环境。
我们只需要在ceph osd部署时将 --data 盘的参数指向bcache 则即可以完成上述架构的部署
ceph-volume --cluster ceph lvm create --bluestore \
--data /dev/bcache0 --block.db /dev/sde1
ceph-volume --cluster ceph lvm create --bluestore \
--data /dev/bcache1 --block.db /dev/sde2
ceph-volume --cluster ceph lvm create --bluestore \
--data /dev/bcache2 --block.db /dev/sde3
此时的--data 指定了数据盘为bcache0 、bcache1、bcache2,sde盘的分区1、2、3 则对应了block.db 。

此时在查看ceph集群的状态
3 思考
每一个数据盘都对应一个三级目录结构如下
sdd
└─bcache0
└─ceph--f015264a--34a3--484e--b17a--1811290fea04-osd--block--c6b8e971--5246--46db--93f8--0ceda4626015
3.1 其中这一长串都是到底是什么?


知晓LVM是什么的小伙伴可以清晰看出,右边这一侧是LV(Logical Volume编号,而左边这一侧是 VG (Volume Group)编号。
我们知道,LVM --VG --PV 对应一个三级结构,因此知道了VG ,通过 vgdisplay pvdisplay 就能知晓了PV ,而PV 一般就是一个分区或磁盘,此时对应ceph集群就是BcacheX,此时X是Bcache的编号。通过Bcache的编号,在结合lsblk 就知晓了真正存储数据的后端数据盘的盘符。
(注意 lsblk输出的VG 和LV编号分隔符是带两个--而,vgdisplay 和lvdisplay都是一个-做为分隔符,因此在搜索时过滤最后1段就行)
3.2 为什么我们要知晓这些?或者换一句话说知道这些有什么用了?

我们知道ceph的数据盘在ceph中表现为一个osd.2 等数字,现在问题来了,如果osd.2 坏了需要换盘,你怎么知道osd.2对应的数据盘是哪一块盘了?
总结下来就是如下图所示

从图中可以知道osd 对应编号 和磁盘的对应关系,那和VG LVM编号又有什么关系了,通过osd的安装目录就已经知晓了 磁盘和osd的对应的关系。管他什么LV VG了。

我们试想一个这样一个场景如果bcache2坏了,此时lsblk显示的ceph字段自然也不存在了?你怎么关联osd编号和磁盘的对应关系了?此时VG和PV就派上了用途。
因此作者建议在学习时,不要做一个工具人,而是要做到知其然也要知其所以然。
3.3 有没有简单命令 一眼就能看出的其对应关系的 ?
ceph-volume lvs list 命令就可以直接实现

写在最后:
目前我们已经完成了一个最小化的ceph集群,ceph作为一个分布式存储,知晓其概念,并进行维护是一项艰巨的任务,记下来我们将从理论到实践,重点阐述下ceph运维技巧。

每天5分钟复习OpenStack(十五)Ceph与Bcache结合的更多相关文章
- 《man男人》-linux命令五分钟系列之十五
本原创文章属于<Linux大棚>博客,博客地址为http://roclinux.cn.文章作者为rocrocket. 为了防止某些网站的恶性转载,特在每篇文章前加入此信息,还望读者体谅. ...
- 7.24,《C Primer Plus》复习第十五章第二小题
编写一个程序,通过命令行参数读取两个二进制字符串,对这两个二进制数使用~运算符,&运算符.|运算符,并以二进制字符串形式打印结果(如果无法使用命令行环境,可以通过交互式让程序读取字符串) 编写 ...
- centos lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress 安装phpmyadmin 定时备份mysql两种方法 第二十五节课
centos lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress 安装phpmyadmin 定时备份mysql两种方法 第二十五节 ...
- OpenCV开发笔记(六十五):红胖子8分钟带你深入了解ORB特征点(图文并茂+浅显易懂+程序源码)
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- CSS3秘笈复习:十三章&十四章&十五章&十六章&十七章
第十三章 1.在使用浮动时,源代码的顺序非常重要.浮动元素的HTML必须处在要包围它的元素的HTML之前. 2.清楚浮动: (1).在外围div的底部添加一个清除元素:clear属性可以防止元素包围浮 ...
- 大白话5分钟带你走进人工智能-第十五节L1和L2正则几何解释和Ridge,Lasso,Elastic Net回归
第十五节L1和L2正则几何解释和Ridge,Lasso,Elastic Net回归 上一节中我们讲解了L1和L2正则的概念,知道了L1和L2都会使不重要的维度权重下降得多,重要的维度权重下降得少,引入 ...
- Ext JS学习第十六天 事件机制event(一) DotNet进阶系列(持续更新) 第一节:.Net版基于WebSocket的聊天室样例 第十五节:深入理解async和await的作用及各种适用场景和用法 第十五节:深入理解async和await的作用及各种适用场景和用法 前端自动化准备和详细配置(NVM、NPM/CNPM、NodeJs、NRM、WebPack、Gulp/Grunt、G
code&monkey Ext JS学习第十六天 事件机制event(一) 此文用来记录学习笔记: 休息了好几天,从今天开始继续保持更新,鞭策自己学习 今天我们来说一说什么是事件,对于事件 ...
- 十五个最常用Linux命令行 - imsoft.cnblogs
众多Linux管理员在使用Linux的时候会经常使用到很多Linux命令行,其中有绝大部分不是经常使用到的.在本文中主要为大家总结了经常使用的十五个最常用Linux命令行,希望对刚刚接触Linux命令 ...
- NeHe OpenGL教程 第三十五课:播放AVI
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- 《Linux命令行与shell脚本编程大全》 第十五章 学习笔记
第十五章:控制脚本 处理信号 重温Linux信号 信号 名称 描述 1 HUP 挂起 2 INT 中断 3 QUIT 结束运行 9 KILL 无条件终止 11 SEGV 段错误 15 TERM 尽可能 ...
随机推荐
- Java 面向对象编程之接口
什么是接口? 是抽象方法的集合,接口通常以interface来声明,一个类通过继承接口的方式,从而来继承接口的抽象方法 语法 interface 名称 [extends 其他的接⼝名] { // 声明 ...
- docker-compose创建haproxy教程
本文主要讲解通过docker-compose创建haproxy并进行代理 一.haproxy简介 HAProxy是一款基于事件驱动.单进程模型设计的四层与七层负载均衡器,它能够在TCP/UDP层面以及 ...
- 载均衡技术全解析:Pulsar 分布式系统的最佳实践
背景 Pulsar 有提供一个查询 Broker 负载的接口: /** * Get load for this broker. * * @return * @throws PulsarAdminExc ...
- oeasy教您玩转vim - 61- # 编辑过程
编辑过程 回忆上次 vi可以加各种参数 vi +4 oeasy.txt vi +/shiyanlou vi +%s/shiyanlou/oeasy/g oeasy.txt vi可以接收stdin的 ...
- 第一节 线性数据结构 STL
vector 容器 迭代器 vector<int> v{1, 0, 0, 8, 6}; for(vector<int>::interator it = v.begin(); i ...
- 使用 useLazyAsyncData 提升数据加载体验
title: 使用 useLazyAsyncData 提升数据加载体验 date: 2024/7/19 updated: 2024/7/19 author: cmdragon excerpt: 摘要: ...
- layui表格列添加超链接并传参
1.表格渲染中对列添加templet属性 addlink为方法名 tableIns = table.render({ elem: '#Test' ...
- 【Maxwell】01 安装及入门
官网地址: https://maxwells-daemon.io/ 下载地址(版本发行): https://github.com/zendesk/maxwell/releases 参考教程自尚硅谷视频 ...
- 【Tool】常用软件地址(装机备用)
浏览器: 360极速 https://browser.360.cn/ee/ 谷歌 https://www.google.cn/chrome/ 社交通讯 微信 https://weixin.qq.com ...
- 《Python数据可视化之matplotlib实践》 源码 第二篇 精进 第七章
图 7.1 import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np mpl.rcParams[& ...