自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Ceph Monitor源码机制分析(三)—— 选举

Monitor的选举机制Monitor要做的事情很明确了,就是管理、维护和发布集群的状态信息,但是为了避免单点故障或者性能热点问题,一般使用多个Monitor来做这一件事情,也就是管理层有多个成员。集群的正常运行,首先需要管理层达成一致,达成一致就需要有一个能拍板的monitor(leader),大家都听它的就行了。所以要达成一致核心问题就是在众多monitor中选出那个能拍板的monitor

2016-08-25 16:11:21 6908 1

原创 Ceph Monitor源码机制分析(二)—— 初始化

Monitor的初始化Monitor的启动过程,相对比较简单,具体过程参见ceph_mon.cc这个源码文件。大概可以分为以下几部分:介绍ceph_mon命令能够处理的参数以及使用方法根据配置文件指定的mon_data目录创建名为store的MonitorDBStore实例并且打开数据目录。判断当前数据目录的使用情况是否超过报警限制。并且读出store的magic number

2016-08-18 16:38:26 4139

原创 Ceph Monitor源码机制分析(一)—— 概述

0 前言最近终于有点时间可以看看Ceph的代码了,接下来准备就Ceph monitor这个Ceph集群中最重要的组件进行深入的分析。1 Monitor的作用Monitor在Ceph集群中扮演着管理者的角色,维护了整个集群的状态(抽象成几张map,包括osdmap、monmap、mdsmap、auth、log等),保证集群的相关组件在同一时刻能够达成一致,相当于集群中的领导层。之所以说是

2016-08-17 16:17:10 6227

原创 NFS配置使用

最近在配置manila对接EMC的isolon服务,发现isolon通过nfs导出的文件怎么都挂载不到服务器上,索性建了两个虚拟机(一个座位nfs server一个作为client)搭了一个nfs的环境,整体配置和使用还是非常简单的,下面介绍一下。1 安装nfs的包目前nfs已经成为几乎所有Linux发行版的标配软件,所以默认nfs的软件包都是安装好的,可以通过如下命令确认是否安装:[

2016-08-16 17:04:47 1221

原创 XFS实现原理详解

XFS核心架构设计及实现的介绍

2016-08-02 23:21:57 32292 1

原创 Ceph中的级联快照有问题吗?

经常会有人问我关于Ceph中级联快照的问题,级联过多时,是否会影响性能,这篇文章就来说一说这个事情。

2016-08-02 22:13:18 1493

原创 Ceph高级工具介绍之ceph-objectstore-tool的使用

ceph-objectstore-tool工具是Ceph提供的一个low level(可以操作object和pg)的工具,可以用来查看、修改、删除ObjectStore上的object、pg以及dump OSD journal中的数据,请谨慎使用这个工具,它有可能会造成数据的永久丢失,可能这也是很少有文章介绍它的一个原因吧。

2016-07-25 16:17:04 9686 4

原创 Ceph高级工具介绍之ceph-dencoder的使用

贯穿Ceph OSD端数据处理的一个核心结构就是ObjectStore::Transaction,OSD处理的所有操作以及其关联的数据都会封装进入Transaction中的bufferlist结构里,这里的封装也就是序列化(encode),它将各种数据结构无论简单或者复杂都作为字节流,存入bufferlist中。最终Transaction会由具体的ObjectStore后端实现来处理,当然,处理时会对bufferlist中的数据进行反序列化(decode)。而本文介绍的ceph-dencoder工具就是Ce

2016-07-21 23:23:52 4414 1

原创 Ceph高级工具介绍之ceph-kvstore-tool的使用

Ceph是一个复杂的分布式存储系统,有很多组件组成,不光学习成本比较高,而且运维难度也是相当的大。但近几年,它却很受大家的欢迎,越来越多的互联网企业开始采用ceph来构建自己的存储。这是为什么呢?我想源自于它优秀的设计、规范的项目管理以及活跃的社区。Ceph本身提供了很多高级工具(之所以称它们为高级工具,是因为要使用它们必须对Ceph有较为深入的理解),它们在处理Ceph故障时,非常有用,接下来的几篇文章会介绍常用的几个工具。

2016-07-19 11:09:51 6599

原创 生成RGW的火焰图

最近通过perf在分析Ceph对象存储RGW的性能,趁机也生成了一个Flame Graph,可以更直观的帮助我们找到RGW I/O各部分的耗时。先上图,生成的图本来是svg格式的(可以用浏览器打开,并且火焰图中每部分都是可以点开,显示对应的函数调用的。但因为无法上传,所以转换成png的了。是不是逼格很高,火焰图的用途很多,可以生成程序的调用栈并且计算调用栈中每部分的CPU消耗,找到CP

2016-06-27 13:28:36 3107

原创 ceph-deploy搭建ceph集群

最近尝试使用ceph-deploy搭建ceph集群,发现非常方便,简简单单几个命令就能创建一个集群,省去了纯手工搭建集群的时间,当然,如果你懂puppet,使用puppet-ceph来搭建能够让你更容易方便的配置集群。1 安装ceph包$ ceph-deploy repo --repo-url http://mirrors.ustc.edu.cn/ceph/rpm-jewel/el7/x8

2016-04-30 22:47:10 5874 1

原创 Ceph网络模块介绍

1 Socket简介Ceph的网络通信是基于Socket技术实现的,所以要想搞清楚网络部分,必须先清楚socket的工作机制,这里介绍一些基本的内容,要深入理解socket请参阅《linux网络编程》一书和《tcp/ip详解》。socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open -> 读写write/read -> 关闭clos

2016-04-20 23:54:13 3916

原创 librbd代码目录解读

librbd目录中目前有4个文件夹:exclusive_lock,这个目录里主要是将之前的exclusive lock 处理逻辑迁移到async state machines模式image,这个目录主要是将image refresh的处理逻辑迁移到 async state machines模式object_map,(consolidate object map invalidation t

2016-04-15 23:36:25 4043

原创 Ceph源码目录架构

1 简介该代码架构基于版本10.0.5整理,先整理根目录里的代码,再整理出src目录的架构。2 代码架构2.1 Ceph源码根目录Ceph的根目录下包含了一些文件夹和若干编译、代码格式相关的文件。[admin]:架设Document服务器,包括依赖内容并介绍修改doc的流程。[bin]:目前只包含一个在当前目录针对所有内容生产tar包的脚本[

2016-04-15 23:33:21 5120

原创 clone ceph的submodules

Ceph作为一个庞大的分布式系统就像一个大熔炉,其中包含了很多第三方的项目,你可以在ceph根目录下的.gitmodules中找到所有的:[submodule "ceph-object-corpus"] path = ceph-object-corpus url = https://github.com/ceph/ceph-object-corpus.git[submodule "src/c

2016-03-25 18:31:24 1513

原创 比较两个文件的不同

linux中的diff命令可以比较两个文件的不同,并输出友好的结果,方便查看。其中-y表示输出两列对比,而'--suppress-common-lines'屏蔽了相同的行。$ diff --suppress-common-lines default.cf osd.4.cf -yname = client.admin | name = osd.4debug_lockdep

2016-03-20 19:53:44 1399

原创 ceph-fuse hangs on starting ceph client

最近搭建了一个CephFS的环境用于debug问题,一切配好之后,通过ceph-fuse(ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 10.0.101.70:6789 /mnt/cephfs/)来挂载CephFS,但发现命令会hang住不结束,通过log发现,命令hang在了:rt_sigaction(SIGSYS, {0x634d1

2016-03-13 22:59:31 2571

原创 解决too many PGs per OSD的问题

当一个集群中创建的pg个数过多时(创建的pool过多或者pool指定的pg过多),Mon就会报出如下警告:$ ceph -s cluster 27d39faa-48ae-4356-a8e3-19d5b81e179e health HEALTH_WARN too many PGs per OSD (1296 > max 300) monmap

2016-03-04 17:47:25 8998

原创 Qemu/Kvm中的tracing工具

Qemu有自己的Trace框架并支持多个debug/trace后端包括:nop, dtrace, ftrace, log, simple, ust,可以帮助我们分析Qemu中的问题。关于这些backend的介绍,可以看这个链接:http://repo.or.cz/w/qemu/stefanha.git/blob_plain/refs/heads/tracing:/docs/tracing.txt,

2016-03-03 12:40:43 3841

原创 整理各大公司的开源项目链接

几大开源公司的开源项目:Intelhttps://01.org/zh/projectsGooglehttps://github.com/googleNetflixhttps://github.com/Netflixawshttps://github.com/awsIBMhttps://developer.ibm.com/open/ya

2016-02-18 14:47:00 1879

原创 安装lsb_release

lsb_release命令用来查看当前系统的发行版信息(prints certain LSB (Linux Standard Base) and Distribution information.)。有了这个命令就可以清楚的知道到底是RedHat的、还是别的发行版,还有具体的版本号,比如3.4还是5.4等等。有些系统上不一定安装了这个命令,可以通过查看/etc/issue文件得到发行版信息。[

2016-02-18 11:38:55 24567

原创 在mac上配置git send-email使用gmail

最近在往Qemu社区贡献代码,借着这个机会也有了通过邮件发送patch的体验(因为之前主要专注于Ceph和OpenStack的开发,所以提交代码基本上是用Pull Request和Gerrit,比较简单方便)。另外,向linux社区贡献代码一般也是需要通过邮件发送patch的方式进行code review的。在这里主要介绍一下如何在mac中配置git send-email使用gmail来发patc

2016-02-16 12:02:07 3819

原创 qemu网络配置

最近又开始折腾virtfs了,由于之前搭建的环境被拆掉所以需要重新将qemu环境搭建起来。玩qemu总会遇到一个问题,那就是上网,如何让宿主机和虚拟机同时都能上网呢?网上也有很多答案,但通常是分为三种:1)使用Qemu自实现的user模式网路;2)使用网桥模式;3)使用NAT模式。总的来说,第一种用起来最简单,但功能也最简陋,第三种可能做得很牛X,但配置起来最复杂(因为涉及到iptables),相

2016-02-03 17:28:53 4214 2

原创 Ceph Monitor挂了之后对集群的影响

目前,Ceph作为统一存储的解决方案,已经得到了许多互联网公司的广泛应用,而大家搭建的Ceph环境也大多参照了国内最早研究Ceph的OpenStack公司UnitedStack(有云)分享出来的方案:即数据3副本、3个monitor做高可用等。Monitor相当于是Ceph集群的大脑,使用了3个做高可用防止单点故障的发生。经常有同事或者客户会问到一个问题:就是monitor最多能挂几个,集群就

2016-01-13 22:34:14 5083

原创 SSD的工作原理、GC和TRIM、写入放大以及性能评测

本文涵盖了SSD的工作原理、GC、写入放大、TRIM和性能评测等内容

2016-01-13 16:14:15 11554

原创 删除一个OSD的最佳实践

当你要缩小集群规模或者处理坏盘时,你就需要通过删除OSD来实现,但是在删除之前你要确保集群不会达到full的状态。虽然社区的文档给出了删除一个OSD的步骤(http://docs.ceph.com/docs/hammer/rados/operations/add-or-rm-osds/),并且也能够work,但是它不是最好的方案,因为这其中会涉及到两次数据迁移,即在执行‘ceph osd ou

2016-01-11 23:52:42 2238 1

原创 查看谁map了rbd image

创建了一个rbd卷,想删除的时候总是报错一直被占用,想知道卷被谁占用了?首先查看卷的相关信息:$ rbd info testjevon/foorbd image 'foo': size 10240 MB in 2560 objects order 22 (4096 kB objects) block_name_prefix: rb.0.5aec5.238e1f29 format:

2015-12-28 00:03:16 2174

原创 检查OSD哪些配置有别于默认配置

在Ceph集群中,如果想看一下你自定义的一些配置可以通过如下命令完成:$ sudo ceph daemon osd.1 config diff{ "diff": { "current": { "auth_client_required": "cephx", "cephx_cluster_require_signature

2015-12-27 23:20:30 2536

原创 Ceph知识树

最近在梳理Ceph的知识树,也就是整理出学好Ceph需要具备的知识点

2015-12-09 22:57:12 3148 4

原创 为shell命令设置超时

最近写一个检查所有集群状态的脚本,在使用ssh在server上执行远程命令时,如果server一时网络不通,则ssh命令会等将近1分钟才会返回,这会延长脚本的执行。通过google,也在网上查到一些解决方案,比如设置timeout、TMOUT等,但timeout好像不管用,而TMOUT设置了之后,如果在设定的时间之内没有响应的话整个ssh连接都会被干掉,这明显不符合我的需求啊。最后,我发现sh

2015-11-17 21:39:10 25200 1

原创 Mac下通过proxychains-ng配置thunderbird来访问gmail

国内的GFW太强大了,导致一些优秀的软件被墙,和我们关系比较大的就是gmail了。一般情况下,通过代理我们可以很容易实现客户端的访问,但客户端或者码农的终端要实现访问外网,就需要自己配置了。在Mac上可以通过proxychains-ng这个软件实现全局代理,再加上对thunderbird自身代理的配置之后就可以访问gmail了。1)安装proxychains-ng$ brew inst

2015-10-23 14:55:04 3314

原创 管道引起的变量赋值问题

该篇博文解决由管道引起的全局变量在while中赋值无效的问题

2015-10-22 14:36:03 1939

原创 Ceph学习之Crush算法—— Bucket

CRUSH定义了四种bucket类型(Uniform Bucket、List Bucket、Tree Bucket、Straw Bucket)来表示层级结构的中间节点,叶子节点就是对应的OSD。每一种类型的bucket使用不同的数据结构来组织它包含的内容,可以是其他Bucket或者OSD,它们是在性能和效率间的折中。

2015-08-01 21:47:53 7812 1

原创 Ceph学习之Crush算法—— 整体介绍

这篇博文主要回答三个问题:什么是CRUSH?它能做什么?它是怎么工作的?

2015-07-30 14:36:12 17569

转载 XFS文件系统碎片整理

网上有些帖子说XFS不用做碎片整理,其实是错误的。XFS用延迟写入等技术确实可以减少碎片的出现,但是如果服务器用了几年,并且文件操作比较频繁,还是会出现碎片的,应该整理。注意:在Debian中XFS相关命令在xfsprogs包中,而xfs_fsr命令是在xfsdump包中的。所以要用xfs_fsr整理碎片,记得安装xfsdump包。 其他Linux发行版本中,包含xfs相关命令的包也应该叫类似的名

2015-07-29 09:40:32 8292

原创 计算机中的墨菲定律

我目前的工作主要是负责公司的分布式存储ceph,这在互联网行业里算是高危行业,因为它有个假设故障是常态,所以一搞不好就要投简历走人了。老板也时不时的提醒我们这一点,做存储首要稳定,有次偶然提到了墨菲定律:有可能出错的事,就会出错。我后来查了一下,它其实有很多延伸的意思,适用于生活中各个方面,但究其本质就是三个字“别侥幸”。百度百科给出了墨菲定律的完整介绍,主要内容:一、任何事都没有表面看起

2015-07-23 22:34:42 2397

原创 linux内存管理之内核对物理内存的描述

Linux将物理内存按固定大小的页面(一般为4K)划分内存,在内核初始化时,会建立一个全局struct page结构数组mem_map[ ]。如系统中有76G物理内存,则物理内存页面数为76*1024*1024k/4K= 19922944个页面,mem_map[ ]数组大小19922944,即为数组中每个元素和物理内存页面一一对应,整个数组就代表着系统中的全部物理页面。 在服务器中,存在NUMA架

2015-07-23 10:02:20 2823

原创 linux内存管理之物理内存相关知识

Linux内核采用页式存储管理,进程的地址空间被划分成固定大小的“页面”(page),物理内存同样被分为与页面大小相同的“页帧“(page frame),由MMU在运行时将虚拟地址“映射”成某个物理内存页帧上的地址,MMU一般内嵌在CPU上。1 NUMA(Non Uniform Memory Access)在现代计算机,特别是在多核的CPU环境中,CPU访问内存的速度与两者之间的距离有关,

2015-07-22 23:13:37 1075

原创 HEALTH_WARN clock skew detected的解决办法

当你的ceph集群出现如下状况时,$ ceph -s    cluster 3a4399c0-2458-475f-89be-ff961fbac537     health HEALTH_WARN clock skew detected on mon.1, mon.2

2015-07-21 22:36:55 17234

原创 HEALTH_WARN mds 0 is laggy的解决方法

当你的ceph集群状态遇到如下状态时,$ ceph -s    cluster 3a4399c0-2458-475f-89be-ff961fbac537     health HEALTH_WARN 191 pgs stale; mds cluster is degraded     monmap e3: 1 mons at {0=192.168.0.5:6789/0}, el

2015-07-21 11:41:34 6144

空空如也

空空如也

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

TA关注的人

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