自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 librbd 缓存管理之 readx / writex 详解

librbd 缓存管理之 readx / writex 详解librbd 缓存管理之 readx / writex 详解概述readx / writexreadx / writex 的调用writexmap_write_wait_for_write_readxlibrbd 缓存管理之 readx / writex 详解概述readx / writex 中主要实现了缓存的读写的主要逻辑, 如果 librbd 开启了缓存,读写操作将有这两个函数完成. 本文主要讲述的就是这两个函数的逻辑.readx /

2021-08-06 00:19:11 1468

原创 librbd 缓存管理 ObjectCacher 概述

librbd 缓存管理概述缓存时 librdb 的一大特性, 开启缓存后, 可以有效地提高客户端数据读写的性能 ceph 中 class ObjectCacher 是缓存管理的核心类. 实现了 librbd 缓存读写的绝大部分功能, 本文主要围绕着 ObjectCacher 来讲述 librdb 缓存的主要实现, 包括缓存的创建, 下刷, 淘汰机制等, 不过不包括缓存的读写, 缓存的读写将会在其他文章中讲述.关于 librbd 缓存可见:Config Settings — Ceph Document

2021-07-04 19:09:25 1417 4

原创 Ceph 中回调类简介(class Context 简介)

Ceph 中回调类简介class ContextContext 类在 Ceph 的代码中, 随处可见通过异步回调的模式, 对这些回调的流程有充分的理解, 能够帮助我们更好的理解 CephCeph 中提到回调, 不得不将的就是 Context 类, 它是回调的顶层抽象类,其实现了回调的基本逻辑. Context 有大量的子类, 这些子类继承 Context 并实现各自的业务.Context 有两个重要的成员函数, finish 和 complete, 子类继承 Context 后只需要实现自己的 f

2021-07-04 00:21:57 893

原创 Ceph RBD API librdb 读流程源码分析

文章目录API 介绍API 用法类源码分析Image::aio_read2读写流程Image::aio_read2AioImageRequestWQ::aio_readAioImageRequest::aio_readvoid AioImageRequest::sendAioImageRead::send_requestStriper::file_to_extentsobject_extentsimage_ctx.aio_read_from_cachereadxAioObjectRead::sendRBD

2020-09-16 18:32:24 1757

原创 磁盘负载指标 %iowait, await, %util 的正确理解

说明%iowait, await, %util 是用来衡量硬盘负载的三个指标, 但是这几个指标通常容易被误解, 实际上, 这三个指标单纯的高, 并不一定能说明相应的磁盘有问题或者有瓶颈, 而是需要结合具体执行 IO 操作的程序的执行方式, 综合的来判断指标高的原因.关于 await, %util 的计算方式可以参照:linux iostat 输出详解总结%iowait:最容被误解...

2020-04-07 20:32:41 28989

原创 linux iostat 输出详解和使用 node_exporter 指标模拟 iostat

说明Linux 中常会用到 iostat 来查看硬盘的读写状态与负载, 所以就需要我们真正的理解 iostat 的输出的含义, 本问就将讲解这些内容, 以及 iostat 的数值计算放法。并且后文还会给出利用 node_exporter 指标模拟 iostat 输出的计算方式命令iostat 常见用法, -mdx 中 m 代表以 MB 为单位输出读写带宽等信息(默认以 KB 或 扇区输出)...

2020-02-21 12:55:35 2876 5

原创 Ceph OSD 心跳参数对业务的影响和测试

说明Ceph OSD 心跳 相关参数在 OSD 出现故障时, 决定着 MON 发现 OSD 故障的速度, 如果 MON 发现 OSD 故障速度太慢, 将会导致业务方受到较大的影响.由于 Ceph 是强一致性的存储系统, 其必须要求每一笔写操作都完全写到每一个副本上才算一次写完成, 如果写的过程中, 某个 OSD 因为一些原因 Down, 从而无法回复给主 OSD 或 客户端写完成, OSD 或...

2020-02-20 17:11:00 1766

原创 fio 分布式/多节点/多客户端 使用方法简介

简介fio支持在多个节点上并发的测试存储性能,并且可以通过某一个节点进行统一的任务管理以及结果收集, 这种测试方式可以更好的模拟多客户端访问的场景, 产生的 IO 总负载也能突破使用单客户时的内核IO 限制.在进行性能和压力测试的时候,往往单台主机无法提供足够的压力以测试后端存储的最佳性能或稳定性,所以有时需要多个系统同时运行fio来提供足够的压力,来得到一个最佳的性能参数或足够的压力...

2019-12-30 13:06:27 9091 4

原创 golang Json 自定义类型 MarshalJSON/UnMarshalJSON 接口应用

需求1解决浮点数据类型编码小数位丢失的问题golang 的原生 json package 有时会有一些与预期不符合的情况, 例如对接编码(json.Marshal) golang 会默认 “整型浮点数” 如: 1.00 转换为json 的整型 1, 但有时并不希望这种转换.例1:package mainimport ( "encoding/json" "fmt" ...

2019-12-28 22:53:35 12022

原创 SMART 关键指标解析, 如何通过解读 SMART 信息预测硬盘故障

目录1. 说明 12. 内容 22.1 定义 22.2 问题: 22.3 解决方案 52.3.1 资料 52.3.2 结论 7说明本文档介绍磁盘 S.M.A.R.T信息,在linux 上如何根据 smartctl 的输出判断磁盘是否快要损坏(即使此时smartctl 给出磁盘状态依然是 PASSED),就像window上很多软件做的那样。即如何预先判断磁盘可能失败的情况,注意此文...

2019-03-15 01:11:19 13503

原创 块级存储、文件级存储、对象级存储的区别

目录从使用直观感受上来看:块级:文件级:对象级:技术角度:        块级:        文件级:        对象级:对比:从使用直观感受上来看:块级:生活中常见的块存储设备(也叫“块设备”)比如,插在你本地电脑上的U盘、硬盘,你电脑连接的iSCSI等。从使用上来说,块级的存储如果是第一次使用,那么必须需要进行一次格式化的操作(其实不...

2019-01-14 01:41:14 4143 1

原创 Python中进制转换及int()函数

Python2 中的字符编码:Python的代码(指的是你写的程序的那些字符)中的字符默认编码是ASCII的,也就是说,默认情况下你只能输入ASCII的那些字符,如果输入其它不再ASCII中的字符,你写的代码就无法被正确的识别。所以如果你想要输入非ASCII字符,就需要进行字符编码的声明(具体的做法网上有很多,这里就不说了),不过有很多的IDE会帮你做这件事,所以有时即使你不进行编码声明,输入中文...

2018-02-27 01:12:40 15238 1

原创 字符编码/解码及相关概念

字符编码的相关概念:什么是字符编码?首先,需要清楚一个概念,即所有的字符串都是以0101的二进制的形式存储在内存或硬盘中的,因为计算机只能处理这种二进制的形式。但是这种二进制的形式人是无法读取的,单纯的给你一段0101,你根本无法知道这个0101代表的是什么意思。因为人类无发解读这种二进制的数据,所以,对于字符人类创建了字符编码,将人类人类可读的数据与二进制数据关联起来,所以可以说,字符编码在计算...

2018-02-13 00:10:12 706

原创 fio的简单介绍及部分参数翻译

目录fio简介:fio基本概念:I/O类型块大小(Block Size)I/OszieI/O引擎(I/O engine)I/O深度(I/O depth)线程/进程(Threads/Processes)fio常用参数:ioengine=strfilename=strruntime=runtimesize=intramp_time=i...

2018-02-07 00:15:28 40207 1

原创 Python列表解析/推导

列表解析:什么是列表解析/推导(list comprehension):Python列表解析是一种Python的语法,使用这种语法,可以遍历列表中的元素并进行特定的操作“和/或”过滤,并生成一个新的列表。列表解析的作用:列表解析可以将原本需要多行编写的代码简化为一行,并且可以带来很高的可读性和逼格,某些时候还可以让你少起一个变量名(这一点也很有用),最重要的是可以带来更高的效率(因为它再循环时调用...

2018-01-07 00:24:02 547

空空如也

空空如也

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

TA关注的人

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