- 博客(31)
- 收藏
- 关注
原创 文件系统DEntry Cache设计调研
是否需要多客户端强一致,如果需要强一致选择HDFS全缓存,不能满足大量元数据的诉求。选择HopsFS,Cache只作为辅助手段,将数据库的串行访问转换为并行访问,减少时延。选择类似CephFS CAP召回的办法通知客户端更新缓存,逻辑复杂很难实现。缓存(Pid, Name)->(InodeId)还是(Path)->(InodeId)选择缓存(Pid, Name)->(InodeId),在某些情况下可能还是会大量访问数据库。
2023-09-15 11:55:28
391
转载 百度CFS
本文介绍了百度智能云文件存储 CFS 的元数据系统的核心设计,对⻓期困扰文件系统元数据领域的 POSIX 兼容性和高扩展性(特别是写扩展性)难以兼顾的问题,进行了解答。这是一个大规模分布式文件系统能否扩展到千亿级别文件数,同时保持高性能稳定性的一个关键问题。分离式元数据架构是近年来文件系统元数据领域的发展趋势,业界有潜力存储千亿文件的系统均是基于这种架构实现的。这类架构采用类似 “存算分离” 的思想,将元数据服务分为两层,分别是负责存储数据的数据库层,和偏计算逻辑、负责实现文件系统语义的元数据代理层。
2023-07-19 17:22:40
693
原创 JuiceFS:写流程源码解析+刷盘+数据一致性分析
juicefs是一款面向云原生设计的高性能分布式文件系统,本文分析写流程,及其如何保证数据一致性。
2023-01-13 19:51:45
1099
1
原创 JuiceFS:format和mount源码解读
juicefs是一款面向云原生设计的高性能分布式文件系统,本文对format和mount流程源码进行分析。
2023-01-10 21:58:52
685
原创 一文读懂NVMe和NVMe-oF
NVMe-oF作为数据存储领域较新的技术,受到越来越多的关注。本文从磁盘、磁盘协议发展的角度对NVMe-oF的基本技术和解决的问题进行阐述
2022-11-22 20:50:58
3484
原创 RocksDB:block-based SST文件详解 + 文件格式 + 文件编码
本文结合代码介绍RocksDB block-based sst文件格式。
2022-08-12 12:09:52
2007
原创 RocksDB:WAL详解 + 创建删除WAL + WAL写 + WAL恢复memtable
本文结合代码,介绍WAL的格式,创建删除流程,WAL写流程和WAL恢复流程。
2022-08-11 16:20:40
1998
原创 RocksDB:Memtable读写流程 + InlineSkipList + key encode/decode
本文结合代码介绍RocksDB memtable的InlineSkipList,及读写流程。
2022-08-10 21:34:19
912
1
原创 Ceph RBD:快照ID(snapid) + 如何生成 + 如何增长 + 初始值
快照id是快照的重要属性,本文介绍快照id的生成策略及其含义。
2022-07-27 21:16:45
851
原创 Ceph BlueStore:BlueFS元数据恢复replay流程详解 + 元数据encode/decode
BlueFS用来存储RocksDB相关的file文件,在故障时需要将BlueFS在内存中重建出来,供RocksDB使用。本文主要对replay流程进行分析。
2022-07-26 15:13:41
1342
原创 Ceph BlueStore:BlueFS架构介绍 +元数据详解
本文介绍BlueFS基本架构,与RocksDB之间的关系,根据代码对其元数据进行详解。
2022-07-23 20:08:03
3960
原创 Ceph RBD:写流程 + 写cache + ObjectDispatch框架
本文介绍Ceph RBD写流程,包括写cache、ObjectDispatch写框架等代码解读。
2022-07-14 10:17:46
634
原创 Ceph RBD:Cache元数据代码详解
在Ceph中,每个image有自己的内存cache资源。使用cache后,一方面小IO在cache中可以聚合成大IO刷盘,另一方面内存的操作在低负载场景也可以快速完成。上述两方面都有利于提升性能。Cache的核心类及其相关性如下。从上面类的关系可以看出cache访问的方法如下:https://github.com/ceph/ceph......
2022-07-07 21:31:41
568
原创 Ceph RGW:分段上传和整体上传元数据详解
Ceph的对象存储兼容s3协议,支持对象的整体上传和分段上传功能,详细可参考网上资料。本文主要是基于具体实践,观察整体上传和分段上传的差异。查询配置,其中rgw_max_chunk_size=2M,rgw_obj_stripe_size=8M。创建一个bucket,名字为testbucket0分段上传分析创建一个100M的文件file_100M.bin,上传至testbucket0中,分段size为30M获取testbucket0的id查询manifest对象bucketid = e839
2022-07-04 15:48:09
2033
原创 Ceph iSCSI Gateway:tcmu-runner代码原理详解
tcmu-runner在ceph iscsi gateway中是linux内核到ceph rbd间的桥梁,用于识别SCSI命令字,并根据命令字含义,调用librbd接口实现命令字的处理。详细描述见Ceph iSCSI Gateway:架构原理详解一文。通过netlink与内核configfs交互,当target中新增rbd image后,此tcmu-runner客户端会收到消息,并创建块设备。核心代码包括:函数调用关系如下:添加块设备在netlink回调之后,根据id执行添加device的流程。SCS
2022-07-03 14:19:53
1927
1
原创 Ceph BlueStore:BlockDevice代码详解。
在BlueStore存储引擎中,数据和元数据的存储不再经过操作系统层,OSD直接管理裸盘空间,通过libaio对裸盘进行读写。为了更好的兼容性,BlueStore提供了BlockDevice层作为写盘IO的调度层,也管理不同类型的盘,如HDD、Sata SSD和Nvme SSD。本文后续基于N版本进行介绍,主要介绍HDD场景,HDD场景BlockDevice会抽象为KernelDevice类。下面只解释部分关键字段打开devicecreateBlueFS用户态文件系统会使用BlockDevice存放
2022-06-30 21:50:14
1122
原创 Ceph RBD:条带(stripe)详解
条带(stripe)是把连续的一段数据按照一定size切分成多个数据块,这些数据块可以存储在指定数量的磁盘中。主要有如下两个概念:如果stripe_unit设置为1M,stripe_num设置为6,那么10M的数据是如何存储的呢?Ceph RADOS层本身是无条带概念的,需要RBD进行控制。RBD将RADOS对象看作是磁盘,其他概念与前文介绍相同。如果stripe_unit设置为1M,stripe_num设置为6,每个RADOS对象可以存储4M数据,那么40M的是按照如下存储的。创建一个stripe_uni
2022-06-24 19:50:35
3289
原创 Ceph RBD:perfcounter + prometheus性能统计
Perfcounter是在RBD IO处理过程中进行的性能统计,以累加的方式进行,包括IO数量、总计时延、总计带宽等,用户可根据计算得到某一时间段内的IOPS、平郡时延、平均带宽等性能统计数据,这些数据可用户性能展示或性能问题定位。本文基于Ceph N版本进行说明。下文主要基于代码流程进行介绍。在rbd_open流程中进行perfcounter注册。Daemon注册RBD client的使用者在rbd_open之后,需要向ceph-mgr注册daemon,才能正常通过promethues进行统计。1、
2022-06-12 22:11:35
783
原创 Ceph RBD:exclusive-lock代码详解 + 使用方法
背景exclusive-lock为rbd image的一个feature,是一个分布式锁,主要用于防止多个客户端同时写入image导致数据不一致问题。基本概念介绍见Ceph官方文档即可。本文主要结论exclusive-lock有两种policyStandardPolicy:需要对接librbd的应用程序手动进行加锁、抢锁动作。AutomaticPolicy:librbd客户端自动进行加锁、抢锁等动作。exclusive-lock的时间是基于ceph osd的watch/notify机制。
2022-06-05 22:33:54
1905
原创 Ceph iSCSI Gateway:Multipath支持
文章目录Multipath背景主机-硬盘多对一访问主机-硬盘多对一访问带来的问题解决多对一访问带来的问题(多路径)Multipath背景主机-硬盘多对一访问一对一访问:普通主机都是一个硬盘挂接到一个总线上,即主机和硬盘一对一访问。多对一访问:在有光纤组成的SAN环境,或者由iSCSI组成的IPSAN环境,由于主机和硬盘通过了光纤交换机或者多块网卡及IP来连接,就构成了主机和硬盘多对一的关系。也就是说,主机到硬盘可以有多条路径可以选择。主机到硬盘之间的IO由多条路径可以选择。如下图:通过iSCSI
2022-05-07 20:17:38
1048
原创 Ceph RBD:克隆 + 克隆卷元数据/数据IO详解
文章目录引言克隆概述本文结论克隆的元数据结构创建卷vol_0创建快照vol_0_snap_0创建克隆卷vol_0_snap_0_clone_0克隆卷元数据克隆卷的元数据有哪些?如何找到clone卷对应的原卷?如何找到clone卷对应的快照?如何通过原卷找到clone卷?主要元数据总结创建clone卷流程克隆卷数据创建卷vol_1,写入8M数据创建快照vol_1_snap_0创建克隆卷vol_1_snap_0_clone_0读克隆卷0-1M位置写克隆卷4M-5M位置读写数据总结扁平化创建卷vol_2,写入8M
2022-04-21 21:15:30
3012
原创 Ceph RBD:快照 + Bluestore/Filestore快照区别
文章目录引言创建卷和快照如何找到快照?rbd_header.{原卷id}创建快照流程快照的数据在哪里?Bluestore创建卷写入8M数据创建快照原卷写5M数据后查看rados对象查看快照数据在磁盘的文件Filestore创建卷写入8M数据创建快照原卷写5M数据后查看rados对象查看快照数据在磁盘的文件引言创建快照就是创建当前存储卷的一个只读副本,用于进行快照回滚等数据恢复操作。Ceph创建快照有如下特点:创建快照数据卷的配置流程,不进行数据操作,创建流程速度很快。快照创建后采用COW(copy
2022-04-14 11:14:03
1419
原创 Ceph RBD:创建image + image元数据详解
文章目录引言Image关键元数据创建卷如何找到卷:rbd_directory卷都有什么属性:rbd_header.{rbd_id}卷的数据在那里:rbd_data.{rbd_id}.{offset_idx}元数据汇总创建卷流程引言在Ceph RBD中,image是一个对外提供的逻辑概念,image由数据和元数据组成,数据和原数据都存储在底层RADOS对象中。因此,image的操作就可以分为:数据操作:IO流程元数据操作:配置流程对于创建image这种配置流程来说,主要就是操作元数据。Imag
2022-04-13 20:33:07
1944
原创 Ceph iSCSI Gateway:架构原理详解
文章目录为什么Ceph需要iSCSI?Ceph架构Ceph在应用场景的局限性局限有哪些?为什么存在局限?如何解决局限?什么是iSCSI?SCSI客户端-服务器架构SCSI约束iSCSI客户端-服务器架构iSCSI的优势Ceph iSCSI Gateway架构介绍客户端-服务器架构客户端(Initiator)服务端(Target)Target架构选择STGT(SCSI target)IET(iSCSI Enterprise Target )SCST(SCSI target subsystem)LIO + TC
2022-04-11 20:37:17
6455
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人