系统调用 什么是系统调用?系统调用 是内核提供给应用程序使用的功能函数,由于应用程序一般运行在 用户态,处于用户态的进程有诸多限制(如不能进行 I/O 操作),所以有些功能必须由内核代劳完成。而内核就是通过向应用层提供 系统调用,来完成一些在用户态不能完成的工作 说白了,系统调用其实就是函数调用,只不过调用的是内核态的函数。但与普通的函数调用不同,系统调用不能使用 call 指令来调用,而是 2024-01-22 Linux #Linux内核
内核调试 --环境搭建篇 在看ceph 源码的时候,一般都是搭建一个环境,然后gbd 到指定函数,边调试边分析,这样很方便,效率也高,前段时间 突然想到 ,系统调用能不能调试呢? 比如 调用个 write 函数,写数据到一个文件,这背后发生了什么?又比如 我们使用 socket 通信 ,然后收数据,这过程我们能不能用gdb 追踪呢? 带着这些问题,在网上摸索一大圈,于是记录下 准备工作 && 预备知 2024-01-21 Linux #Linux内核
rgw源码走读-桶创建流程 rgw创建桶的流程 也是和其他请求一样,都是三部曲,主要流程在 RGWCreateBucket::execute() 里面,本次也是直接从这里出发(前面处理请求的大差不差,会有专门用一篇文章来介绍),这里组要介绍下bucket的概念,s3对桶的约束,以及解答以下几个问题? 创建桶的时候,桶的实例时持久化哪里? 那个池?是那个对象?有什么内容?桶id 的命名规则是? 创建桶后生成那些文件 2024-01-03 Linux #ceph
rgw 上传对象后,底层发生了什么变化 rgw 简介 当我们用 s3cmd 上传一个文件后,底层会发生什么? 上传文件后池的变化?上传成功后,s3cmd ls 看下这个桶有什么?发现已经上传成功那问题来了,这个上传的文件 具体在哪里? 首先 看下底层的池发生了什么变化,这里我们 用rados df 命令来看,发现有两个池里有新增的数据?这个两个池的名字上看,一个是数据池和索引池,上传后是这样,从 bucket.data 可 2024-01-01 #ceph
raft 论文翻译 raft论文,这里我计划j将论文翻译了一遍,原本是不翻译的,单纯看看,但看了几章,又没有印象,而且没有输出,只是单纯看了而已,并没有思考;当然这里这里并不是全部机翻,结合我的当下的理解来翻译,也不是全文翻译,有些重要的我就贴出原文,后续再来完善; 一段一段翻译,… 代表跳过(不是重点)有一些名字我直接用 单词,我感觉翻译出来很怪…. 这个网站有raft 动态 http://thesecre 2023-08-19 分布式 #raft
rgw中 各个池的作用(更新中) *背景*这里主要介绍 与rgw 相关的pool ,对象网关使用几个池来满足其各种存储需求( radosgw-admin zone get 可以看到,如下图) , 这里从 zone get 里展示出来的 各种pool 出发,介绍下各个pool的功能,以及里面包含了什么 池的命名规则首先我们用 rados lspool 看这个集群有那些 pool ,发现带有rgw 字眼的的只有三个,而我们用 zon 2023-08-04 #ceph
slow op的排查手段(更新中) 背景slow op是cpeh 里面老生长谈的问题,像是牛皮癣,从底层看是op处理慢,从客户的业务层看重则卡死(例如 rbd挂载文件系统,底层 一直出现slow op现象,会y有可能触发文件系统的只读机制)轻则业务下发慢; 在线上遇到很多次,但也是偶发性的,往往是后续 巡检的时候才发现;最近遇到的一次是客户的对象存储业务经常卡顿,严重的时候直接请求直接失败,上线一看果然是slow op,这种严重情况 2023-08-01 #ceph
结构型模式 适配器模式适配器是一种结构型设计模式,它能使接口不兼容的对象能够,相互合作。 举个例子国内是电源插座是220V,现在呢,我出国了,比如说印度,印度的电源是230的,国内的用的220v的充电头用不了,那怎么办,一种是去他们国家买个新的,另一种是搞个万能转接头,比如说230转220的,这样就可以使用了,这种转接头也就是 适配器 1234567891011121314151617181920212223 2023-05-01 #设计模式