
分布式存储:ceph
文章平均质量分 80
记录自己接触 CEPH分布式存储系统这两年内的成长经历
z_stand
远离颠倒梦想,究竟涅槃
展开
-
分布式系统的分类总结
分布式系统的分类 以及 相关分类内的业界经典开源实现原创 2021-01-23 17:06:31 · 3420 阅读 · 1 评论 -
分布式一致性(共识)算法(Paxos,raft,ZAB)的一些总结
文章目录前言CAP理论C consistency 一致性A availability 可用性P partition tolerance 分区容错性一致性模型弱一致性强一致性强一致性算法需要明确的问题强一致算法: 主从同步强一致性算法:多数派强一致算法:PaxosBasic PaxosMulti Paxos第一个版本:使用Proposer表示唯一的一个Leader第二个版本:将算法角色进一步简化强一致算法: Raft强一致算法:ZAB总结前言分布式系统是当前互联网领域的一个重要且大势所趋的一种解决计算,存原创 2020-09-13 13:37:56 · 9226 阅读 · 2 评论 -
分布式存储研发(块存储方向 / kv 方向 / 数据库内核方向) --- 2年经验 & 4年经验 面试总结
分布式存储方向 2 年经验 以及 4 年经验相关总结原创 2020-04-09 21:40:56 · 13226 阅读 · 52 评论 -
CEPH核心理论 相关导图(持续更新)
围绕分布式存储(ceph)绘制的技能图谱可参考分布式存储ceph 技能图谱相关的原始编辑文件可以从github-mindMapping下载如有缺失、不足之处欢迎指正CEPH架构关于系统架构,这里主要是将CEPH融入操作系统架构之中且是根据L版本进行绘制的关于文件系统 :因为bluestore跳过了本地文件系统,同时封装了自己的bluefs进行设备管理关于cache: Bluesto...原创 2020-01-05 11:25:03 · 965 阅读 · 0 评论 -
ceph osd 相关命令
混合osd的部署先部署所有的ssd在/etc/ceph.conf中最后添加ssd做osd的block大小如下:比如部署中有两个ssd,则添加[osd.0]bluestore_block_size = xxxx[osd.1]bluestore_block_size = xxx如上的size大小计算如下,如ssd容量为800G,默认分给hdd的db,wal分别为20G,10G,则:...原创 2019-12-09 16:07:38 · 824 阅读 · 0 评论 -
ceph 部署单机&&集群
文章目录ceph-deploy部署集群ceph-deploy 部署单机ceph-deploy 创建osdceph osd创建资源池ceph创建rbd块设备ceph创建fs文件系统本文档主要参考ceph官方命令进行部署,使用的时侯ceph-deploy原生命令方式进行集群各个组件的创建,删除,后续会增加扩容相关的命令。ceph-deploy部署集群修改hosts文件,增加想要创建的集群...原创 2019-12-09 16:06:50 · 1818 阅读 · 0 评论 -
从一致性hash到ceph crush算法演进图谱(持续更新)
参考文档:https://ceph.com/wp-content/uploads/2016/08/weil-crush-sc06.pdfCeph剖析:数据分布之CRUSH算法与一致性Hash原创 2019-11-30 14:09:24 · 717 阅读 · 0 评论 -
分布式存储(ceph)技能图谱(持续更新)
一下为个人结合其他人对分布式存储 所需的技能进行总结,绘制成如下图谱,方便针对性学习。这里对分布式存储系统接触较多的是ceph,所以在分布式存储系统分治上偏向ceph的学习。如有分类有问题或者分支不合理,欢迎大家批评指正,目的是为了大家共同提升...原创 2019-11-21 13:07:54 · 4135 阅读 · 0 评论 -
编译ceph源码:cython module not found问题的解决
环境:centos7.5ceph版本:12.2.1在当前环境对ceph源码rpm包进行重新编译执行命令rpmbuild --rebuild ceph-12.2.1-0.el7.src.rpm最后出现错误如下:Could not find cython3. Please install Cython.查看此时对Cython3模块的编译规则vim /BUILD/ceph-12.2.1/...原创 2019-06-13 21:44:54 · 3462 阅读 · 1 评论 -
ceph osd 由于“No space left on device” 异常down,通过扩容文件系统或者显式运行osd进程解决
ceph版本:ceph 12.2.1环境配置:tier_pool 16个分区大小800G 的osd容量 3副本data_pool 32个4T盘 3副本异常问题:ps:在分布式存储中遇到任何问题都不要先去通过重设存储节点,清除磁盘数据来解决,一定要利用分布式存储系统的高可用性来先进行操作。大部分问题只需要耐心分析就可以找到高效,可靠的解决方案。出现异常,报出如下段错误: 0> ...原创 2019-06-19 13:23:20 · 1565 阅读 · 0 评论 -
使用内存盘 格式化文件系统以及部署ceph-osd
文章目录创建RAMDISK使用内存盘使用内存盘格式化文件系统使用内存盘部署ceph-osd删除内存盘为了测试内存盘类型的磁盘做ceph osd的io性能,将将存部分空间取出来用作普通物理磁盘(RAMDISK),并在该磁盘上部署osd.支持该操作的系统驱动为brd.koPS :使用内存盘千万不要存放数据,因为内存在操作系统上下电会被回收掉,如果用作存储会造成数据的丢失创建RAMDISK一般...原创 2019-07-03 16:11:39 · 2086 阅读 · 0 评论 -
关于ceph源码 backtrace 打印函数调用栈
当集中精力看一个问题的时候,时间久了就会有这样一个状态,天空飘来五个字,那都不算事ceph源码庞大的体量以及复杂的设计让很多人望而却步,尤其是大量的纯虚函数更是让读者迷失在代码的海洋,这个时候函数调用栈是一个救命的东西,因为它节约了你大量的重复查找的时间查看最终效果如下为我想要查看bluestore在处理shareblob的释放逻辑中对put函数的调用者查看2019-07-11 20:11...原创 2020-05-10 20:03:15 · 1081 阅读 · 0 评论 -
ceph bluestore源码分析:C++ 获取线程id
阅读ceph源码过程中需要明确当前操作是由哪个线程发出,此时需要根据线程id来确认线程名称C++获取线程id是通过系统调用来直接获取函数描述头文件:<sys/syscall.h>函数名称:syscall(SYS_gettid)该函数直接返回了一个pid_t int类型的数字,即为当前线程id此外函数pthread_self同样能够获取线程id,但是该函数获取到的线程id为p...原创 2019-07-19 09:45:28 · 580 阅读 · 0 评论 -
ceph bluestore 源码分析:刷缓存(trim)逻辑
环境ceph版本:12.2.1部署模式:ec 2+1osd: 3个 且资源池已经有数据执行命令:ceph daemon osd.0 flush_store_cache 进行刷缓存。即将dump_mempools内存池管理的bluestore cache中的无用数据进行释放主要参数:bluestore_cache_trim_interval = 0.2 #bluestore cache ...原创 2020-05-10 20:03:33 · 1894 阅读 · 0 评论 -
关于部署osd过程中:Device is in use by a device-mapper mapping问题解决
ceph环境:12.2.1使用古老的ceph-disk工具部署osd,仅仅prepare过程中就出现如上所示问题Device is in use by a device-mapper mapping md127解决方法如下:由于device-mapper为系统自己的磁盘映射器,此时检查系统是否有逻辑卷pvslvsvgs如为出现逻辑卷设备,则表明当前磁盘并未创建逻辑卷此时针对设...原创 2019-08-13 23:41:56 · 1775 阅读 · 0 评论 -
ceph-kvstore-tool 工具使用详解
文章目录简介使用总结简介ceph-kvstore-tool工具是用来获取存放在leveldb或者rocksdb数据库中的键值元数据。并且该工具能够对kvstore中的数据进行配置,就像是对离线后的osd操作osd map一样使用该工具,需要安装ceph-test-12.2.1.06-0.el7.centos.x86_64包本文该工具的介绍是基于ceph12.2.1版本的使用执行ceph...原创 2019-08-10 10:28:22 · 3566 阅读 · 0 评论 -
ceph-dencoder工具使用详解
文章目录简介使用decode命令用法encode简介ceph-dencoder工具是一个序列化编码、解码并且打印ceph数据结构的工具。它主要用来调试和测试ceph不同版本之间的兼容性问题该工具是由ceph-common-12.2.1.06-0.el7.centos.x86_64 rpm包生成本文章是根据ceph-12.2.1版本来描述改命令的使用方式使用执行ceph-dencode...原创 2019-08-11 15:50:04 · 1839 阅读 · 0 评论 -
ceph-objectstore-tool工具使用详解
简介ceph-objectstore-tool工具,能够操作到ceph最底层的数据,包括pg,对象层级。它能够对底层pg以及对象相关数据进行获取、修改。并能够对一些问题pg和对象进行简单修复。所以使用该工具进行操作的时候需要谨慎(涉及到修改的操作最好备份一份数据),防止误操作造成数据丢失。该工具的使用主要针对对象和PG,所以这里我们的使用主要为以下两种PG的相关操作info #查看pg的信...原创 2019-08-15 21:55:10 · 5547 阅读 · 0 评论 -
PGLog写流程梳理
文章目录PG_log 简介log内容存储结构分析查看方法追踪单个op的pglog相关数据结构pg_log_tpg_log_infopg_history_tpg_log_entry_tPG状态机PGlog参与数据恢复过程对于故障OSD所拥有的Primary PG对于故障OSD所拥有的Replicate PG参考文档:https://blog.youkuaiyun.com/changtao381/artic...原创 2020-05-10 20:02:37 · 2457 阅读 · 1 评论 -
再记一次ceph object unfound的艰辛历程
感谢学无止境996同学的陪伴和vigourtyy美丽女友的支持,直到这个解决问题的深夜先说问题:ceph 12.2.1生产环境:3副本 tier + 3副本data机房在拥有业务的情况下重启集群交换机,产生如下场景:time 1: osd.1 down, osd.2 osd.3 up此时数据先落到2,3上(2为primary)time 2: osd.1 osd.2 osd.3 up...原创 2019-09-04 20:02:06 · 1841 阅读 · 0 评论 -
ceph bluestore 源码分析:ceph-osd内存查看方式及控制源码分析
本文通过对ceph-osd内存查看跟踪的手段以及osd内存控制的方式进行源码层面的说明,并未通过修改相关源码进行控制(水平不够),仅限于使用社区已开发好的参数进行相关配置的跟进而已,如想要追求更加精确的理解,可以对osd/bluestore/rocksdb相关源码实现进行阅读ceph版本12.2.1 - 12.2.12内存查看最常用的内存初始查看方法top -u ceph |grep ce...原创 2020-05-10 20:02:19 · 3599 阅读 · 1 评论 -
v-valgrind搭配massif、vgdb分析ceph-mon内存
文章目录valgrind 搭配的相关工具安装massif-visualizer抓取massif分析Ceph-mon运行时内存数据massif的详细参数vgdb配合valgrind结合massif的相关monitor指令调试进程打开vgdb调试进行massif的monitor指令调试massif-visualizer 图形可视化massif format文件valgrind 搭配的相关工具环境...原创 2019-04-02 00:44:24 · 3116 阅读 · 0 评论 -
ceph-deploy rpm包的制作
今天需要部署一个ceph L 版本12.2.12的环境,无奈最近公司网络无法访问到ceph官网,只能使用之前下载好的ceph-deploy-1.5.39版本,安装上之后一口老血喷了出来,没有mgr的部署选项。无奈之下只能自己制作一个1.5.38版本的ceph-deploy包,借用从ceph-deploy-1.5.39-0.src.rpm的源码包进行二进制安装包的制作,这里任何一个ceph-dep...原创 2019-06-01 23:44:11 · 717 阅读 · 0 评论 -
ubuntu18.04 Desktop版本部署13.2.6版本ceph
文章目录选择系统安装系统网络配置CEPH部署想要查看版本较高的ceph在进行录像业务存储且在磁盘占用率在70%左右时且ceph底层出现slow_request是否会对上层录像业务造成显性影响所以需要在ubuntu 18.04版本部署mimic版本ceph,先将部署步骤描述如下:选择系统这里本可以选择ubuntu18.04 server版本,ubuntu-18.04.1-live-serve...原创 2019-06-12 17:04:15 · 1833 阅读 · 2 评论 -
CEPH集群更换ip(更换ip前的防范和更换ip后的恢复)
文章目录修改`/etc/hosts`中的ip设置修改`ceph.conf`中的ip地址获取monmap将`monmap`注入到集群最近测试部在测试一些功能,在我们不知情得情况下更换了集群内外网ip,之后直接甩锅到我这里(大哭)接手到的集群是ceph各个组件之间无法成功通信,不能正常运行,该情根据网上的恢复方法已经不可行。因为ceph mon 命令无法使用,所以不能够通过该命令获取到monmap...原创 2019-05-21 22:57:45 · 2210 阅读 · 0 评论 -
ceph-bluestore-tool基本使用
主要是在bluestore的实例上执行低级管理操作的使用程序,是ceph bluestore的管理工具命令help显示帮助信息fsck [--deep]对bluestore元数据进行一致性检查。如果指定了–deep,还要读取所有对象数据并验证校验和repair运行一致性检查 并修复我们可以发生的任何错误bluefs-export --path osd path将bluefs的目录...原创 2019-04-02 21:36:22 · 3879 阅读 · 2 评论 -
修改ceph-disk源码,增加指定ceph.conf部署osd的功能
文章目录ceph环境源码修改 主文件:`ceph-disk/main.py`main函数入口parse_args(argv)增加子命令解析get_conf函数使`conf`生效修改所有调用get_conf函数的上级函数参数配置由于最近工作中需要优化osd部署流程,单节点并发加盘过程需要指定特定conf文件,来完成单盘db,wal分区size的参数添加且不影响其他osd的db,wal分区的创建c...原创 2019-04-11 23:36:25 · 582 阅读 · 0 评论 -
内核方式挂载cephfs
我们内核挂载的前提是:看到centos7.5 中默认内核3.10.0-862.11.6.el7.x86_64的挂载fs执行文件读写性能更优良,所以尝试将3.10.0-862.11.6.el7.x86_64模块中与ceph fs挂载相关的ceph.ko,libceph.ko,dns_resolver.ko,libcrc32c.ko拷贝到自己的设备。同样要在自己的设备上执行成功加载该ko文件,需...原创 2019-03-28 22:09:17 · 1895 阅读 · 3 评论 -
ceph-osd无法获取osd map导致osd down掉的解决办法
环境:ceph-12.2.1 3节点测试性能集群 60块osd最近ceph集群中有两个osd在重启之后遇到如下问题,osd获取不到集群osdmap产生coredump: ceph version 12.2.1.06 (3e7492b9ada8bdc9a5cd0feafd42fbca27f9c38e) luminous (stable) 1: (()+0xa2bf21) [0x7fcd9162...原创 2019-03-28 22:04:20 · 2534 阅读 · 1 评论 -
centos6.5原生系统修改ceph-mon 的ELF来让其加载低版本glibc库函数
文章目录Step 1:glibc-2.17 被libc.so.6库依赖,升级glibc库Step2:升级编译器-->4.8.2可以正常编译glibc2.17Step3:修改ELF,降低ceph-mon依赖的库函数版本解决ceph-mon调用高版本libc库(修改动态库链接表ELF)Step 1:glibc-2.17 被libc.so.6库依赖,升级glibc库环境上需要拥有gcc支持编译...原创 2019-04-01 00:42:45 · 510 阅读 · 0 评论 -
pprof搭配ceph tell命令分析ceph内存
文章目录安装使用使用`ceph tell`产生堆栈信息文使用`pprof`工具分析内存及`ceph tell`释放内存火焰图`FlameGraph`可视化进程堆栈信息pprof是一个google开发的支持可视化、且可分析profile文件而达到对内存的分析。并且能够输出文本和图像来支持分析过程,pprof源码安装可以直接通过gperftools工具集来安装pprop工具配置海康yum源...原创 2019-03-30 16:28:29 · 1959 阅读 · 0 评论 -
ceph admin socket修改ceph配置文件
目前有两种动态修改的方式来让ceph中各个组件的配置生效,所以介绍如下两种方式方便我们进行功能或者代码的调试使用ceph daemon方式修改ceph daemon osd.0 help用于osd的daemon服务ceph daemon mon.ceph-node1 help用于mon的admin socket命令、ceph daemon osd.0 config show检查osd.0...原创 2019-03-30 16:17:13 · 1203 阅读 · 0 评论 -
ceph osd混合部署和普通部署
文章目录混合osd的部署先部署所有的ssd部署hdd普通OSD的部署当OSD被踢出集群但是挂载点还在,为osd添加id验证测试OSD压力Mark osd 为down混合osd的部署先部署所有的ssd在/etc/ceph.conf中最后添加ssd做osd的block大小如下:比如部署中有两个ssd,则添加[osd.0]bluestore_block_size = xxxx[osd.1...原创 2019-03-30 16:10:34 · 1660 阅读 · 0 评论 -
深入理解ceph-disk prepare 源码逻辑
文章目录CEPH-DISK代码逻辑DEF MAIN:DEF PARSE_ARGS:DEF Prepare.set_subparser(subparsers)def _prepare(self):PrepareBluestore的_prepare函数def prepare(self, *to_prepare_list):PrepareData类中的prepare函数def prepare_devic...原创 2019-04-08 23:31:07 · 1132 阅读 · 0 评论 -
深入理解ceph-disk activate 源码逻辑
文章目录CEPH-DISK代码逻辑`Activate osd`的主要逻辑如下DEF main_activate激活osd的入口函数DEF mount_activate挂载临时目录,分配osd id并初始化osdDEF activate 分配osd_id已经初始化osdCEPH-DISK代码逻辑本文在上文 :深入理解ceph-disk prepare 源码逻辑基础上描述ceph-disk的ac...原创 2019-04-14 20:36:55 · 932 阅读 · 0 评论 -
centos 7.0部署ceph rbd
系统环境:CentOS Linux release 7.0.1406 (Core)内核环境:3.10.0-123.el7.x86_64ceph版本:12.2.1创建rbd部署好Ceph环境,并创建出6+6的ec pool之后想要在ec_pool的基础上创建rbdrbd create rbd_test -p ec_data出现了这样的错误rbd: create error: (95) ...原创 2019-05-16 09:14:32 · 1999 阅读 · 0 评论 -
关于OSD::mkfs: ObjectStore::mkfs failed with error (5) Input/output error问题的解决
环境:ceph L版本12.2.1升级到12.2.12这个问题是由于升级后进行12.2.12环境中的使用ceph-disk 进行osd部署时出现如下问题,执行命令ceph-disk -v prepare /dev/sdb;ceph-disk -v activate /dev/sdb1出现如下问题,出现这个问题之前我的磁盘用作部署过12.2.1版本的osd,但是我已经使用sgdisk -z ...原创 2019-05-20 22:30:13 · 2902 阅读 · 0 评论 -
ceph rados命令使用
文章目录Pool相关Object相关导出资源池数据最近了解了rados命令的使用,感觉在对象操作这块还是非常实用。因为rados是属于底层存储核心,所以关于rados的命令针对对象的操作较多。环境中执行rados -h可以看到命令集分为几个大的模块:资源池、对象、以及一些全局选项 该命令用来做对象相关测试较为方便,可以操作单个对象,同时使用rados bench命令进行集群io性能测试较多。...原创 2019-05-10 22:15:56 · 11568 阅读 · 2 评论 -
ceph unfound object问题的解决
查看丢失对象的pg idceph health detail查找该pg下丢失的objectceph pg 8.32 list_missing尝试修复该pg:ceph pg repair 8.32ceph pg scrub 8.32修复不成功的话,可以直接告诉ceph使用已有的版本或者直接删除尝试切换到旧版本的object:ceph pg 8.32 mark_unfo...原创 2019-05-10 16:19:52 · 1810 阅读 · 0 评论 -
使用rpmbuild对ceph的源码包进行重新打包
进入ceph源码包下载ceph相关的rpm包和tar包我们下载的是ceph-12.1.1-0.el7.src.rpmceph L版本的rpm包执行命令rpmbuild --rebuild ceph-12.1.1-0.el7.src.rpm等待它执行到configuring done之后就强行终止-- Found cython-- Performing Test HAS_VTA-- Pe...原创 2019-05-13 23:13:22 · 899 阅读 · 0 评论