自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C语言的原子操作

gcc支持如下原子操作:#if (GCC_VERSION >= 40100)/* 内存访问栅 */ #define barrier() (__sync_synchronize())/* 原子获取 */ #define AO_GET(ptr) ({ __typeof__(*(ptr)) volatile *_val = ...

2020-10-12 16:00:28 1485

原创 GCC数值原子操作API原理及应用

文章来自GCC数值原子操作API原理及应用一.前言C/C++中数值操作,如自加(n++)自减(n–-)及赋值(n=2)操作都不是原子操作,如果是多线程程序需要使用全局计数器,程序就需要使用锁或者互斥量,对于较高并发的程序,会造成一定的性能瓶颈。二.gcc****原子操作****api1.概要为了提高赋值操作的效率,gcc提供了一组api,通过汇编级别的代码来保证赋值类操作的原子性,相...

2020-10-12 15:57:58 410

原创 文件系统索引extent 和 bitmap区别

Extent 能有效地减少元数据开销。为了进一步理解这个问题,我们还是看看 ext2 中的反面例子。ext2/3 以 block 为基本单位,将磁盘划分为多个 block 。为了管理磁盘空间,文件系统需要知道哪些 block 是空闲的。 Ext 使用 bitmap 来达到这个目的。 Bitmap 中的每一个 bit 对应磁盘上的一个 block,当相应 block 被分配后,bitmap 中的相...

2020-09-27 15:01:08 1139

原创 用户空间和内核空间通讯之【Netlink 上】

转载:http://blog.chinaunix.net/uid-23069658-id-3400761.html引言Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接口的方式提供内核与用户空间的双向数据通信;随后,在2.1内核开发过程中,Alexey Kuznetsov将Netlink改写成一个更加灵活、且易于扩展的基于消息通信接口,并将...

2020-08-13 11:26:29 301

原创 Linux内核设计与实现(7)---内核数据结构

原文地址:Linux内核设计与实现(7)---内核数据结构 作者:leon_yuLinux内核实现了一些通用的数据结构,提倡大家在开发时重用,内核开发者应该尽可能地使用这些数据结构。最常用的有:链表、队列、映射、二叉树1.链表(1).链表是一种存放和操作可变数量元素(节点)的数据结构,动态创建,无需在内存中占用连续内存区。每个元素都必须包含指向下一个元素的指针,当有元素加入或从链表中删除时,...

2020-08-13 11:15:47 284

原创 ceph object_cacher源码分析

map_write函数分析image.pngObjectCacher::BufferHead *ObjectCacher::Object::map_write(ObjectExtent &ex, ceph_tid_t tid){ if (oc->m_object_lock) { ass...

2020-06-30 17:26:10 687

原创 Nginx共享内存剖析及开源项目分享

1. 介绍nginx共享内存是利用mmap将内容存储在内存中以及使用自旋锁。当master启动的时候,根据相应的指令去初始化共享内存。利用共享内存实现一个轻量级的k/v系统。2. 共享内存内部结构2.1 全局变量ngx_cycle结构image.png2.2 ngx_cycle结构image.png2.3 ngx_zone_s结构i...

2020-03-16 19:52:54 612

原创 文件系统测试工具整理

现有的测试工具分为三类:合成IO测试基准测试集基于Trace的测试合成测试程序根据统计的真实负载发生规律,如请求的读写比例,大小,频率和分布等信息。建立响应的io存取模型。在测试时产生符合存取模型的io请求序列。发送给存储系统。这类程序包括 IOMeter,IOZone 和 Bonnie++。使用基准测试集测试计算机系统的性能,一直是有效和精确的评价方法。针对存储系统...

2020-02-19 19:28:31 586

原创 ceph-immmutable-object-cache

一、简介目前官方提供了ceph-immmutable-object-cache守护进程负责将内容缓存到本地缓存目录上。为了获得更好的性能,建议使用SSD作为底层存储介质。二、IO流程image.pngceph-immmutable-object-cache守护进程启动进行初始化,并且时监听本地域套接字,并等待来自librbd客户端的连接。客户端librbd通...

2019-12-16 10:37:24 373

原创 samba源码安装及调试

1. 安装依赖包以下的依赖包并非全部都要安装,主要还看用户使用需求,例如是使用AD DC还是别的。# CentOS 7yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \ libsemanage-python libxslt perl perl-Ext...

2019-08-22 10:47:00 1180

原创 LRU-K和2Q缓存算法介绍

一、LRU-K算法1、算法思想LRU-K中的K代表最近使用的次数,因此LRU可以认为是LRU-1。LRU-K的主要目的是为了解决LRU算法“缓存污染”的问题,其核心思想是将“最近使用过1次”的判断标准扩展为“最近使用过K次”。2、工作原理相比LRU,LRU-K需要多维护一个队列,用于记录所有缓存数据被访问的历史。只有当数据的访问次数达到K次的时候,...

2019-05-27 17:24:00 2020 1

原创 Lustre参数调整

1. 设置和查看lustre参数创建文件系统时,使用mkfs.lustre。当服务器停止运行时,使用use trnefs.lustre。当文件系统正在运行时,使用lctl设置或者查看参数。1.1 mkfs.lustre设置参数当文件系统第一次格式化时,参数可以通过在mkfs.lustre命令中添加--param选项进行设置。# 设置超时...

2019-05-21 11:06:00 783

原创 Lustre文件系统安装

1. 环境1.1 创建临时的yum源cat >/tmp/lustre-repo.conf <<\__EOF[lustre-server]name=lustre-serverbaseurl=https://downloads.whamcloud.com/public/lustre/latest-release/el7/server...

2019-05-16 10:58:00 1286

原创 linux cache介绍及控制

参考文档https://lonesysadmin.net/2013/12/22/better-linux-disk-caching-performance-vm-dirty_ratio/有关Cache文件缓存是提升性能的重要手段。毋庸置疑,读缓存(Read caching)在绝大多数情况下是有益无害的(程序可以直接从RAM中读取数据),而写缓存(W...

2019-03-27 13:57:00 823

原创 CephFS源码分析

13. 深入研究13.1 MDS启动阶段分析//src/ceph_mds.cc int main(int argc, const char **argv){ ceph_pthread_setname(pthread_self(), "ceph-mds"); vector&lt;const char*&gt; args; argv_to...

2019-01-14 10:51:00 1426

原创 CephFS 介绍及使用经验分享

目录Ceph架构介绍NFS介绍分布式文件系统比较CephFS介绍MDS介绍5.1 单活MDS介绍5.2 单活MDS高可用CephFS遇到的部分问题6.1 客户端缓存问题6.2 务端缓存不释放6.3 客户端夯住或者慢查询6.4 客户端失去连接6.5 主从切换问题CephFS问题解决方案7.1 服务端缓存警告问题...

2019-01-14 10:49:00 6076

原创 CephFS 文件布局性能测试对比

1. 设置不同的object size进行测试1.1 object size 4M#上传到挂载目录$ ll -lh /mnt/object_size_4M/total 2.7G-rw-r--r-- 1 root root 832M Jun 21 11:09 alchemy-api.error.log._test_1G-rw-r--r-- 1 r...

2019-01-09 14:11:00 1102

原创 ceph开源监控软件对比

1. 介绍目前主流的Ceph开源监控软件有:Calamari、VSM、Inkscope、Ceph-Dash、Zabbix等,下面简单介绍下各个开源组件。2. 开源软件对比2.1 CalamariCalamari对外提供了十分漂亮的Web管理和监控界面,以及一套改进的REST API接口(不同于Ceph自身的REST API),在一定程度上简化了Ce...

2019-01-08 19:29:00 772

原创 rbd image找到对应osd位置

1. 查找image指纹信息$ rbd info test_pool/test_imagerbd image 'test_image': size 102400 MB in 25600 objects order 22 (4096 kB objects) block_name_prefix: rbd_data.12c074b0d...

2019-01-04 15:06:00 504

原创 将博客搬至csdn

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...

2019-01-03 20:00:59 228

原创 ceph分布式存储-集群客户端连接

1. 查看FS客户端连接$ ceph daemon mds.0 session ls[ { "id": 5122511, "num_leases": 0, "num_caps": 655, "state": "open", "replay_requests": 0, "com...

2018-12-26 13:43:17 1380

原创 ceph分布式存储-数据不均衡调整

1. 查看数据分布是否均衡#查看osd使用情况$ ceph osd df treeID CLASS WEIGHT REWEIGHT SIZE USE AVAIL %USE VAR PGS TYPE NAME-1 196.21051 - 190T 347G 190T 0.18 1.00 -...

2018-12-26 13:27:00 2906

原创 ceph分布式存储-日志和调试

1. 介绍一般来说,你应该在运行时增加调试选项来调试问题;也可以把调试选项添加到 Ceph 配置文件里来调试集群启动时的问题,然后查看 /var/log/ceph (默认位置)下的日志文件。Tip: 调试输出会拖慢系统,这种延时有可能掩盖竞争条件。日志记录是资源密集型任务。如果你碰到的问题在集群的某个特定区域,只启用那个区域对应的日志功能即可。例如,你的 OSD 运行良好、元...

2018-12-25 19:50:24 780

原创 ceph分布式存储-管理crushmap

1. 介绍CRUSH 算法通过计算数据存储位置来确定如何存储和检索。 CRUSH 授权 Ceph 客户端直接连接 OSD ,而非通过一个中央服务器或代理。数据存储、检索算法的使用,使 Ceph 避免了单点故障、性能瓶颈、和伸缩的物理限制。CRUSH 需要一张集群的 Map,且使用 CRUSH Map 把数据伪随机地、尽量平均地分布到整个集群的 OSD 里。CRUSH Map ...

2018-12-25 19:42:40 389

原创 atop 获取进程退出信息

转载:http://bean-li.github.io/atop-exit-code/1. 前言Daemon进程凌晨无故退出了,log中没有任何有效信息判断退出的原因。 QA找我确定下退出的原因,是收到信号被杀死,还是自己异常退出了。幸好有atop,会纪录进程的退出码或者收到的信号值。2. 方法请看下图:image.png上图中...

2018-12-25 10:41:00 526

原创 ceph分布式存储-集群容量评估

1. 环境介绍1.1 软件环境ceph集群:mon:ceph-xxx-osd02.ys,ceph-xxx-osd03.ys,ceph-xxx-osd01.ysosd: 36mds:ceph-xxx-osd04.ys=up:activeceph版本:ceph version 12.2.2.3 (277c813c8cdeb79eba8a11bfe08faf1bf78...

2018-12-24 14:15:16 1422 1

原创 ceph分布式存储-增加/删除 OSD

1. 增加 OSD(手动)要增加一个 OSD,要依次创建数据目录、把硬盘挂载到数据目录、把 OSD 加入集群、然后把它加入 CRUSH Map。Tip: Ceph 喜欢统一的硬件,与存储池无关。如果你要新增容量不一的硬盘驱动器,还需调整它们的权重。但是,为实现最佳性能,CRUSH 的分级结构最好按类型、容量来组织。创建 OSD。如果未指定 UUID, OSD 启动时会自动生...

2018-12-24 13:48:56 663

原创 ceph分布式存储-增加/删除 Monitor

1. 介绍一个集群可以只有一个 monitor,我们推荐生产环境至少部署 3 个。 Ceph 使用 Paxos 算法的一个变种对各种 map 、以及其它对集群来说至关重要的信息达成共识。建议(但不是强制)部署奇数个 monitor 。Ceph 需要 mon 中的大多数在运行并能够互相通信,比如单个 mon,或 2 个中的 2 个,3 个中的 2 个,4 个中的 3 个等。初始部署...

2018-12-24 13:38:18 881

原创 CephFS 异常测试

1. Cephfs 异常测试方案CephFS允许客户端缓存metadata 30s,所以这里测试对MDS stop/start的时间间隔取为:2s,10s,60s。测试组件测试场景挂载方式测试方法MDS单MDSfuse/kernel单个MDS挂掉情况 2s/10s/60s IO情况主从MDS时fuse/kernel单主挂掉情况 2s/10...

2018-12-21 19:36:17 444

原创 ceph分布式存储-块存储BlueStore性能测试

一、 集群环境1.1 部署环境说明mon组件部署: ceph-xxx-osd00, ceph-xxx-osd01, ceph-xxx-osd02osd组件部署: ceph-xxx-osd00, ceph-xxx-osd01, ceph-xxx-osd02,ceph-xxx-osd03, ceph-xxx-osd04磁盘: SATAceph版本: ceph 12.2.2 b...

2018-12-21 18:35:57 1592 1

原创 Ceph CRUSH算法

1. 数据分布算法挑战数据分布和负载均衡:a. 数据分布均衡,使数据能均匀的分布到各个节点上。b. 负载均衡,使数据访问读写操作的负载在各个节点和磁盘的负载均衡。灵活应对集群伸缩a. 系统可以方便的增加或者删除节点设备,并且对节点失效进行处理。b. 增加或者删除节点设备后,能自动实现数据的均衡,并且尽可能少的迁移数据。支持大规模集群a. ...

2018-12-19 13:47:00 372

原创 Ceph心跳机制

1. 心跳介绍心跳是用于节点间检测对方是否故障的,以便及时发现故障节点进入相应的故障处理流程。问题:故障检测时间和心跳报文带来的负载之间做权衡。心跳频率太高则过多的心跳报文会影响系统性能。心跳频率过低则会延长发现故障节点的时间,从而影响系统的可用性。故障检测策略应该能够做到:及时:节点发生异常如宕机或网络中断时,集群可以在可接受的时间范...

2018-12-19 13:35:00 927

原创 Ceph IO流程及数据分布

1. Ceph IO流程及数据分布rados_io_1.png1.1 正常IO流程图ceph_io_2.png步骤:client 创建cluster handler。client 读取配置文件。client 连接上monitor,获取集群map信息。client 读写io 根据crshmap 算法请求对应的主osd数据节点。主osd数据节...

2018-12-19 13:12:17 668

原创 ceph分布式存储-MON模块内部结构分析

1. 模块简介Monitor 作为Ceph的 Metada Server 维护了集群的信息,它包括了6个 Map,分别是 MONMap,OSDMap,PGMap,LogMap,AuthMap,MDSMap。其中 PGMap 和 OSDMap 是最重要的两张Map。2. 模块的基本结构image.pngMonitor内部使用一套Paxos来实现各种数据的更新...

2018-12-18 19:58:43 854 1

原创 ceph分布式存储-MDS介绍

1. mds存储元数据的内存缓存,为了加快元数据的访问。保存了文件系统的元数据(对象里保存了子目录和子文件的名称和inode编号)还保存cephfs日志journal,日志是用来恢复mds里的元数据缓存重启mds的时候会通过replay的方式从osd上加载之前缓存的元数据2. mds冷备/热备冷备就是备份的mds,只起到一个进程备份的作用,并不备份lru元数据。主...

2018-12-18 19:38:28 2669

原创 ceph分布式存储-PG和PGP的区别

一、前言首先来一段英文关于PG和PGP区别的解释:PG = Placement GroupPGP = Placement Group for Placement purposepg_num = number of placement groups mapped to an OSDWhen pg_num is increased for any pool, every ...

2018-12-18 19:32:10 687

原创 ceph分布式存储-集群通信

1. Ceph通信框架1.1 Ceph通信框架种类介绍网络通信框架三种不同的实现方式:Simple线程模式特点:每一个网络链接,都会创建两个线程,一个用于接收,一个用于发送。缺点:大量的链接会产生大量的线程,会消耗CPU资源,影响性能。Async事件的I/O多路复用模式特点:这种是目前网络通信中广泛采用的方式。k版默认已经使用Asnyc了。XIO方式使用了开源的网...

2018-12-18 19:22:11 345

原创 CephFS MDS内部锁介绍

转载:https://www.jianshu.com/p/dc16309519d1锁的作用MDS中的锁是为了保护log的正常写入。每次对目录树进行操作前,需要先将目标path中涉及的节点加锁,在内存中修改完目录树(修改方式类似于RCU,即生成一个新节点,push_back到 队列 中)后,将新的目录树信息(只是此条path,不是整个目录树)记录到MDS的journal对象中,j...

2018-12-18 14:06:41 1364

原创 ceph分布式存储-单个Ceph节点宕机处理

5. 单个Ceph节点宕机处理在某些情况下,如服务器硬件故障,造成单台 Ceph 节点宕机无法启动,可以按照本节所示流程将该节点上的 OSD 移除集群,从而达到 Ceph 集群的恢复。5.1 单台 Ceph 节点宕机处理步骤登陆 ceph monitor 节点,查询 ceph 状态:ceph health detail将故障节点上的所有...

2018-12-18 13:53:00 1804

原创 ceph分布式存储-全局Ceph节点宕机处理

4. 全局Ceph节点宕机处理在极端情况下,如数据中心断电,造成 Ceph 存储集群全局宕机,可以按照本节所示流程进行 Ceph 集群上电恢复操作。4.1 手动上电执行步骤如为 Ceph 集群上电,monitor server 应最先上电;集群上电前确认使用 Ceph 之前端作业服务已停止。使用 IPMI 或于设备前手动进行上电。确认 NT...

2018-12-18 13:50:00 1055

空空如也

空空如也

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

TA关注的人

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