自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

梦幻之巅

灾备,SDS,虚拟化,云计算

  • 博客(59)
  • 收藏
  • 关注

翻译 【FAST‘24论文解读】I/O直通:上游Linux一种灵活和有效的I/O路径

前几天有一位朋友问我一个问题:如何优化单机存储引擎在混合读写下的吞吐和延迟?根据我的了解,单机引擎有基于文件系统的、有直接管理裸盘的,有基于KV数据库的,还有基于DPU等软硬协同设计实现的。这些年随着闪存设备等高性能介质的大量使用,传统的文件系统和I/O堆栈所带来的性能损耗越发明显,其设计抽象愈发不适应新介质标准的发展。通过调整参数一定程度上能提升性能,但总体效果有限。

2024-04-03 18:38:41 39

原创 DAOS学习笔记及思考

根据的描述,DAOS是Intel基于NVMe全新设计开发并开源的异步对象存储,充分利用下一代NVMe技术的优势,对外提供KV存储接口,提供非阻塞事物I/O,端到端完整性,细粒度的数据控制,数据保护以及弹性存储等特征。。以大家熟悉的Ceph,BeeGFS为例,对Ceph OSD通过Shard来控制并发,以粗粒度的PG为并发单位,限制了PG及PG内对象I/O的并发能力,导致系统的并行性不足;

2023-10-24 17:57:32 682

原创 我的AI存储实践及思考

我从2020年进入人工智能行业,开始为AI训练提供存储解决方案及技术支持,随着这几年行业以及公司的发展,采用的存储方案经历了几次大的演变 ,最开始使用的是分布式并行文件系统Lustre,接着是BeeGFS+Ceph,再到最近的分布式异步对象存储DAOS,本文结合自己的经历,将历次存储架构/方案选型的背景,考量及部署,思考记录如下(保密要求,略过了部分配置及拓扑细节),供参考。

2023-10-11 14:35:02 497 3

原创 DPDK&SPDK中的内存管理

DPDK的一大特点是使用大页(hugepage)进行内存管理,相比4KB页管理,使用大页可以减少页表大小,节省开销以及降低TLB miss的概率,从而提升应用访问内存的效率。在此基础上,DPDK主要实现了无锁队列ring,内存池mempool,内存堆heap来进行内存的分配和回收。

2023-07-12 11:42:33 774

原创 SPDK学习笔记----理解spdk的工作原理

前段时间,我将公众号中收录的SPDK相关的文章学习了一遍,最近结合最新的代码v23.0.x,对example目录下的示例程序hello_word/hello_blob/hello_bdev,以及app目录下的应用程序vhost/nvmef的源码进行了走读分析:和大家熟悉的存储服务程序一样,可以将一个spdk程序分成管理面和数据面,管理面负责程序运行环境的初始化,各子系统及模块的初始化,rpc动态管理,数据面根据管理面中设置好的运行环境和数据结构完成具体的I/O操作。

2023-07-07 10:46:42 1061

原创 HadaFS - Burst Buffer解读

Burst Buffer(BB)根据部署位置的不同,分为本地BB和共享BB,本地BB, 部署在计算节点的SSD上,专职服务于本节点,扩展性和性能要更好些,但是不适合用于N-1的共享数据场景,另外因为共享部署,不同I/O模型/负载的业务相互干扰,可能导致巨大的资源浪费,最后随着计算节点的升级,部署成本也会快速增加。代表产品有Luster的LPCC,BeeGFS的BeeOND。

2023-04-29 11:55:40 1109

原创 Ext4日志优化-iJournaling

根据上文的分析,我们归纳出Ext4的日志机制有如下的不足,并导致I/O延迟增加JBD2串行事务依赖,为了避免并发提交重叠事务带来的一致性风险,每个时刻只能有一个事务处于commiting状态。JBD2组合事务提交,JBD2事务中可能包含多个不相干的inode,当发起事务提交时,会将所有文件的数据块都提交。JBD2组合事务可能使延迟分配失效,因为组合事务提交的原因,不相干的文件也被提交,导致延迟分配策略失效。

2023-04-24 09:50:33 1111

翻译 InfiniFS论文解读

在前期分析BeeGFS的元数据实现思路的文章中有提到,BeeGFS的元数据具有很好的负载均衡和本地化性能,但也存在一些不足,正好看了一篇FAST2022上的论文, 在论文中对近根热点、路径寻址等方面提供了相应的解决方式,论文解析如下,供大家参考。

2022-12-10 15:40:22 600

原创 BeeGFS客户端的文件缓存

从内核角度看,Linux上有Buffered IO和Direct IO两种文件IO模式,Direct IO绕过内核缓存直接将数据写入后端设备,Buffered IO先将数据写到pagecache(内核中每个文件(inode)都包含一个address_space结构(内部通过一棵基数树来管理缓存页)来管理文件缓存),然后通过内核在合适的时候(内存不足、用户发起fsync、定期flush等)将数据回写到后端设备。

2022-10-29 20:24:23 1528

原创 BeeGFS元数据优化

文中设计的数据结构基于BeeGFS 7.2.2代码一句话总结:基于目录的静态分区方式,文件与父目录放在一起(本地化)文件系统初始化时,根据先来后到原则,选取第一个(注册成功)的元数据节点(组)作为系统根节点,根据根目录ID的hash值将根目录(root)预置于根节点的38/51/root路径下;创建子目录时,父目录随机选择一个元数据节点(组)作为该子目录的服务节点,创建子目录的元数据操作如下:1、在子目录的服务节点,根据子目录ID的hash值创建目录项(目录):dentries/xx/yy/den。

2022-10-14 16:40:34 1275

原创 BeeGFS元数据管理设计思想剖析

这里写自定义目录标题Beegfs元数据管理新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Beegfs元数据管理换工作以后,近两年,对块存储和对象存储的关注有所减少,专注在分布式文件系统的研发上,为满足公司业务对文件存储

2022-05-02 17:38:01 2141 2

原创 ceph bluestore中的磁盘空间管理

ceph bluestore摒弃了传统的本地文件系统,而直接使用裸磁盘作为OSD的存储介质,因而需要自行管理磁盘空间的分配与回收概述一个设计良好的磁盘空间管理器,需要兼顾空间和时间效率;bluestore中提供了空间管理器FreelistManager来支持空间管理,当前提供了一种基于位图的实现,包含:位图持久化以及内存分配器Allocator两部分。其中,位图的持久化是指将空间分配(置1)和回收(置0)的位图状态持久化到磁盘中,基于rocksdb实现;内存分配器是磁盘位图的一致性视图,用来加速空间.

2020-08-28 18:13:00 6111 2

原创 ceph rgw元数据分布式改造

本篇是对前面几篇ceph rgw元数据分析类文章的总结,同时整体介绍下rgw元数据分布式改造的架构以及实现逻辑架构看过前面"ceph rgw元数据分析"类文章的读者,应该还记得那个rgw 分层架构图,为实现元数据的分布式改造,只需要在store层新增一个存储后端,称为MetaStore,专门用来存储集群元数据(realm,zonegroup,zone等)和用户元数据(user,bucket,bucket index等):在实践中MetaStore有多种候选组件,如:Mysql,Mongodb,T.

2020-08-10 16:55:40 1646 8

原创 ceph rgw启动过程中元数据的创建及初始化

本来不想再写Ceph相关的文章了,最近在做ceph元数据优化研究及架构,整体思路是:将rados作为数据存储引擎,构建分布式元数据集群来管理元数据,如:将rgw或者fs相关的元数据从ceph的元数据池中抽取出来,转存到分布式元数据集群中,以此达到提升单集群处理能力的目的;要达到这个目的,有两个基础条件:1.对ceph中rgw或者fs的各CURD操作原理及IO路径非常熟悉,2.对ceph中元数据的组织及存储非常熟悉;然后才能在rgw或者mds的IO路径中进行数据及元数据的分离操作,并以合适的格式将元数据转存.

2020-07-27 19:22:07 1337

原创 ceph rgw中关键流程分析及业务逻辑

本来不想再写Ceph相关的文章了,最近在做ceph元数据优化研究及架构,整体思路是:将rados作为数据存储引擎,构建分布式元数据集群来管理元数据,如:将rgw或者fs相关的元数据从ceph的元数据池中抽取出来,转存到分布式元数据集群中,以此达到提升单集群处理能力的目的;要达到这个目的,有两个基础条件:1.对ceph中rgw或者fs的各CURD操作原理及IO路径非常熟悉,2.对ceph中元数据的组织及存储非常熟悉;然后才能在rgw或者mds的IO路径中进行数据及元数据的分离操作,并以合适的格式将元数据转存.

2020-07-17 15:44:39 2170

原创 Ceph rgw中root及log池数据对象结构分析

本来不想再写Ceph相关的文章了,最近在做ceph元数据优化研究及架构,整体思路是:将rados作为数据存储引擎,构建分布式元数据集群来管理元数据,如:将rgw或者fs相关的元数据从ceph的元数据池中抽取出来,转存到分布式元数据集群中,以此达到提升单集群处理能力的目的;要达到这个目的,有两个基础条件:1.对ceph中rgw或者fs的各CURD操作原理及IO路径非常熟悉,2.对ceph中元数据的组织及存储非常熟悉;然后才能在rgw或者mds的IO路径中进行数据及元数据的分离操作,并以合适的格式将元数据转存.

2020-07-16 09:22:28 2161

原创 Ceph rgw中的Object的组织形式及存储结构分析

本来不想再写Ceph相关的文章了,最近在做ceph元数据优化研究及架构,整体思路是:将rados作为数据存储引擎,构建分布式元数据集群来管理元数据,如:将rgw或者fs相关的元数据从ceph的元数据池中抽取出来,转存到分布式元数据集群中,以此达到提升单集群处理能力的目的;要达到这个目的,有两个基础条件:1.对ceph中rgw或者fs的各CURD操作原理及IO路径非常熟悉,2.对ceph中元数据的组织及存储非常熟悉;然后才能在rgw或者mds的IO路径中进行数据及元数据的分离操作,并以合适的格式将元数据转存.

2020-07-14 18:09:36 2952 3

原创 Ceph rgw中的元数据组织形式及存储结构分析

本来不想再写Ceph相关的文章了,最近在做ceph元数据优化研究及架构,整体思路是:将rados作为数据存储引擎,构建分布式元数据集群来管理元数据,如:将rgw或者fs相关的元数据从ceph的元数据池中抽取出来,转存到分布式元数据集群中,以此达到提升单集群处理能力的目的;要达到这个目的,有两个基础条件:1.对ceph中rgw或者fs的各CURD操作原理及IO路径非常熟悉,2.对ceph中元数据的组织及存储非常熟悉;然后才能在rgw或者mds的IO路径中进行数据及元数据的分离操作,并以合适的格式将元数据转存.

2020-07-13 16:01:56 5281 6

原创 Ceph bluestore中的缓存管理

从15年3月接触Ceph分布式存储系统,至今已经5年了;因为工作的需要,对Ceph的主要模块进行了较深入的学习,也在Ceph代码层面做了些许改进,以满足业务需要(我们主要使用M版本)。最近得闲,将过往的一些学习心得、改进以及优化思路记录下了,希望能对后来者有所帮助。这是第四篇:Ceph bluestore中的缓存管理前言bluestore构建在裸盘上,在用户空间,通过FreelistMana...

2020-04-27 10:57:43 3169 2

原创 Ceph中对象IO的一致性

从15年3月接触Ceph分布式存储系统,至今已经5年了;因为工作的需要,对Ceph的主要模块进行了较深入的学习,也在Ceph代码层面做了些许改进,以满足业务需要(我们主要使用M版本)。最近得闲,将过往的一些学习心得、改进以及优化思路记录下了,希望能对后来者有所帮助。这是第三篇:Ceph中对象的一致性不仅仅是Ceph,所有的分布式存储系统都会涉及到多个层面的数据一致性,具体到Ceph层面,我们从...

2020-04-20 22:52:30 1523

原创 Ceph 后端IO提交异步化

前言从15年3月接触Ceph分布式存储系统,至今已经5年了;因为工作的需要,对Ceph的主要模块进行了较深入的学习,也在Ceph代码层面做了些许改进,以满足业务需要(我们主要使用M版本)。最近得闲,将过往的一些改进以及优化思路记录下了,希望能对后来者有所帮助。这是第二篇:Ceph 后端IO提交异步化背景知识Ceph的IO写入包括写Rocksdb元数据和写Block数据两部分,等各个副本写完...

2020-03-27 17:51:11 1027

原创 Ceph Peering以及数据均衡的改进思路

前言从15年3月接触Ceph分布式存储系统,至今已经5年了;因为工作的需要,对Ceph的主要模块进行了较深入的学习,也在Ceph代码层面做了些许改进,以满足业务需要(我们主要使用M版本)。最近得闲,将过往的一些改进以及优化思路记录下了,希望能对后来者有所帮助。之前有分享过RBD持久化缓存以及卷QoS,感兴趣的读者可以翻阅前文这是第一篇:Ceph Peering以及数据均衡的改进背景知识...

2020-03-26 10:58:00 1061 2

原创 Kernel bypass技术及其在Ceph中的应用介绍

##Kernel bypass技术及其在Ceph中的应用介绍###背景Ceph是当前最流行的开源分布式统一存储,在一套基础架构中同时支持块存储、对象存储和文件存储,支持PB级别的扩展能力,广泛用于云环境中;Ceph来源于Sage Weil博士一项关于存储系统的PhD研究项目,最初被设计为一个分布式文件系统,整体架构基于低速设备而构建,提供毫秒(ms)级别的IO延迟。从1956年第一块机械硬盘...

2019-03-15 11:04:12 3530 2

原创 CEPH Mimic版本 - Bluestore io过程、延迟分析及优化建议

##CEPH Mimic版本 - Bluestore io过程、延迟分析及优化建议##Ceph bluestore与filestore相比较, 除了bluestore不需要写journal,就IO过程(流程)来讲大体上是类似的,OSD侧的io流程、过程调用分析网络上已经有很多文章了,在这里就不再展开,我将过程贴到下方:写流程:读流程:我们来看看Bluestore中写IO状态迁移: ...

2019-01-13 11:30:45 4723

原创 Ceph集群慢请求解决思路

CEPH 集群”slow request“问题处理思路什么是“slow request”请求当一个请求长时间未能处理完成,ceph就会把该请求标记为慢请求(slow request)。默认情况下,一个请求超过30秒未完成, 就会被标记为slow request,并打印到日志文件(默认:/var/log/ceph/ceph.log)。请求超时时间由参数osd_op_complaint_...

2018-05-08 14:22:48 9337 2

原创 QEMU QoS特性及原理分析和Librbd QoS定义

由于公司的分布式存储产品(基于Ceph)需要提供QoS特性,之前也相关经验,所以打算先分析QEMU QoS的特性及其实现原理,然后基于此,给出Librbd QoS的定义,情况下文:由于GNU Linux系统的cgroup不支持网络设备(nfs,ceph)的资源控制,为提供一套通用的I/O流控机制。QEMU实现了一个独立的流控模块来控制磁盘I/O操作,该模块能实现磁盘TPS、OPS及潮汐式流量控制,具

2016-10-23 15:21:33 4195

原创 Openstack liberty 中Cinder-api启动过程源码分析2

在前一篇博文中,我分析了cinder-api启动过程中WSGI应用的加载及路由的建立过程,本文将分析WSGI服务器的启动及其接收客户端请求并完成方法映射的过程,请看下文的分析内容:

2016-08-19 10:01:12 2428

原创 Openstack liberty 中Cinder-api启动过程源码分析1

在前面的博文中,主要分析了Glance及Nova相关的代码,从这篇文章开始我将转到Cinder的源码分析上来。Cinder模块在Openstack中为云主机提供块存储,主要包含:cinder-api,cinder-scheduler,cinder-volume及cinder-backup4个部分,后续将通过一系列文章逐个分析各个组件的源码。今天先来看看cinder-api启动过程的源码分析,预计将包

2016-08-17 10:55:54 2219

原创 Openstack liberty 云主机迁移源码分析之在线迁移4

这是在线迁移源码分析第四篇,也是最后一篇,介绍在线迁移完成后的清理过程及迁移失败后的滚回操作,下面一起来看具体内容:complete完成阶段迁移成功后的清理过程由Openstack liberty 云主机迁移源码分析之在线迁移3中的分析可知,迁移成功后的清理方法为:_post_live_migration,下面一起来看看:#`nova/compute/manager.py/ComputeManage

2016-08-11 14:38:22 1705

原创 Openstack liberty 云主机迁移源码分析之在线迁移3

这是在线迁移 源码分析的第三篇,Openstack liberty 云主机迁移源码分析之在线迁移2中分析了prepare准备阶段nova-compute的处理过程,本文将会分析execute执行阶段的处理过程,下面一起来看具体内容:execute执行阶段#`nova/compute/manager.py/ComputeManager._do_live_migration`def _do_

2016-08-10 19:44:24 3022 2

原创 Openstack liberty 云主机迁移源码分析之在线迁移2

这是在线迁移源码分析的第二篇,在上一篇中提到:nova-compute从消息队列拿到live_migration消息后,会启动一个线程来执行后续的迁移工作,线程函数为:_do_live_migration;下文将以该方法为入口,详细分析nova-compute的处理过程;请看下文:nova-compute处理阶段def _do_live_migration(self, context, d

2016-08-10 14:24:14 1642 1

原创 Openstack liberty 云主机迁移源码分析之在线迁移1

这是Openstack liberty云主机迁移源码分析的第二部分 - 在线迁移(热迁移/动态迁移)源码分析;和之前的静态迁移(离线迁移)源码分析一样,也用两篇博文详细阐述liberty中热迁移的过程,两篇博文的内容划分如下:第一篇:分析nova-api,nova-conductor的处理过程第二篇:分析nova-compute的处理过程下面来看第一篇,在线迁移过程中nova-api

2016-07-29 10:19:15 3096 4

原创 Openstack liberty 云主机迁移源码分析之静态迁移2

接上一篇Openstack liberty 云主机迁移源码分析之静态迁移1nova-compute部分prepare阶段接上文,nova-compute从消息队列拿到prep_resize请求后,将由下述方法处理该请求:#/nova/compute/manager.py/ComputeManager.prep_resizedef prep_resize(self, c

2016-07-26 14:11:58 1290 1

原创 Openstack liberty 云主机迁移源码分析之静态迁移1

虚拟机迁移使资源配置更加灵活,尤其是在线迁移,提供了虚拟机的可用性和可靠性。Openstack liberty中提供了两种类型的迁移实现:静态迁移(cold migration)和动态迁移(live migration)。本文是云主机迁移系列的第一篇,将基于源码详细分析静态迁移的实现过程。发起迁移用户可以手动通过nova CLI发起云主机迁移动作:#nova --debug m

2016-07-22 17:15:55 1573

原创 修改Ceph 监视器地址

您是否有过因为大意将Ceph Monitor地址配置错的经历? 我曾经就因为马大哈,将Ceph Monitor的地址配置成了管理网络地址,而且是在使用了2天后才发现。(⊙﹏⊙)b您是否有过由于公司网络重新规划需要修改Ceph Monitor地址的需求? 我在QQ群中就有遇到网友咨询相关处理办法。直接修改ceph.conf配置不就行了么?真有这么简单!要知道Ceph是将Monitor配置信息存储在mo

2016-07-19 13:56:45 3653

原创 Ceph rgw 一Region多zone配置

近来由于工作需要,为用户配置了几套Ceph对象存储,今天忙里偷闲:),将配置过程记录下来,分享于读者。前言安装前的准备该文中所使用的Ceph版本为 Hammer 0.94.1;在配置rgw前,需确保Ceph 集群已经准备就绪并能正常工作,radosgw 网关程序已经安装。相关的名称解释Region :可以理解为区域,是基于地理位置的逻辑划分;如:华南,华北之类,包含多个

2016-07-04 18:29:59 6219 3

原创 Openstack liberty 创建实例快照源码分析2

这是创建云主机实例快照源码分析系列的第二篇,在第一篇文章中分析了从镜像启动云主机,创建在线/离线快照的过程;本篇将分析从启动盘启动的云主机创建快照的过程,下面请看正文:磁盘启动云主机,离线(在线)快照函数入口和前述一样,还是 nova/api/openstack/compute/servers.py/ServersController._action_create_image,下面一

2016-07-01 09:10:22 7771

原创 Openstack liberty及mitaka中云主机快照实现对比分析

这是创建云主机实例快照源码分析系列的第二篇,在第一篇文章中分析了从镜像启动云主机,创建在线/离线快照的过程;本篇将分析从启动盘启动的云主机创建快照的过程,下面请看正文:磁盘启动云主机,离线快照函数入口和前述一样,还是 nova/api/openstack/compute/servers.py/ServersController._action_create_image,该方法在之前分析过

2016-06-24 16:27:50 8383 1

原创 Openstack liberty 创建实例快照源码分析1

这是创建云主机实例快照源码分析系列的第二篇,在第一篇文章中分析了从镜像启动云主机,创建在线/离线快照的过程;本篇将分析从启动磁盘启动的云主机创建快照的过程,下面请看正文:磁盘启动云主机,离线(在线)快照函数入口和前述一样,还是 nova/api/openstack/compute/servers.py/ServersController._action_create_image,该方法在

2016-06-22 19:50:02 7495

原创 Openstack liberty中nova-compute服务的启动过程

前段时间撰文分析了“云主机的启动过程”源码,读者应该注意到了nova-scheduler,nova-compute等组件是通过发起rpc.cast, rpc.call调用完成交互的。那今天我打算介绍下nova-compute服务的启动过程,并重点分析下其与AMQP(rabbitmq)链接的建立过程。在CentOS 7中启动nova-compute服务,执行路径是这样的: systemctl sta

2016-06-16 20:44:51 11782 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除