自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Always look out for number one.

Never stop fighting for the future!

  • 博客(185)
  • 资源 (10)
  • 论坛 (12)
  • 收藏
  • 关注

原创 linux内核奇遇记之md源代码解读之一

linux内核奇遇记之md源代码解读之一转载请注明出处:http://blog.csdn.net/liumangxiong最近花了一段时间认真地学习了一下md代码,并且在原代码的基础上开发了一系列的新功能,这些新功能让md更完善、更适合于企业大容量存储,通过增加阵列缓存和bitmap优化大大提升了存储速度,提高了数据的可靠性,在任何掉电的情况下保证数据一致性,超级块异常情况下完全不影响

2013-10-05 11:16:59 7341 6

原创 linux内核源码阅读之facebook硬盘加速利器flashcache之初

这个星期偷着点闲看下flashcache,所谓知其然知其所以然,本着程序员追根抛底的职业素养,看看flashcache究竟是何等的三头六臂。一、flashcache是什么flashcache是一个linux内核模块,主要目的是用SSD加速块设备,相当于用SSD盘作为块设备的缓存。二、flashcache在内核的哪一层位于内核的dm层(device mapper),在块设备之上,在V

2013-09-13 14:45:32 6402 2

原创 对程序人生的思考

在面试的时候,经常被问到,你的人生规划是什么?希望的职场生涯?可能从公司的角度只是想看看我这个人是否适合这个职位?是否是一名稳定的员工 ?或者只是想知道我是否有计划地做事?然而想想人生规划,就让我想起小时候的“理想”。长大了想当科学家,长大了想当老师,长大了想银行家,长大了想当国家主席。想起了这些美好的愿望,现在想想小孩子时是多少单纯,只看到光辉的一面,而忽略了另外一面。想当一名科学家,要

2006-12-11 19:46:00 7672 22

原创 Linux下挂载NTFS文件系统和NTFS文件系统对trim功能支持

问题:在windows客户端下挂载IPSAN精简卷资源,在windows端删除文件精简卷无法实现空间回收?NTFS-3G是NTFS驱动的一个开源实现,它适用于Linux, Android, Mac OS等操作系统。首先到官网上下载该程序http://www.tuxera.com/community/open-source-ntfs-3g/./configuremakem

2016-01-12 10:54:24 1644

原创 linux内核奇遇记之md源代码解读之十五bitmap原理

linux内核奇遇记之md源代码解读之十五bitmap原理转载请注明出处:http://blog.csdn.net/liumangxiong 为人不识陈近南,走遍江湖也枉然。做raid不识bitmap,通通都是走过场。那么bitmap究竟是何许人物,能够在raid5的场子里混得风生水起呢?话说最早raid5是没有bitmap这位门客的,突然有一天跑raid5的系统异常掉电了,客户发

2014-07-11 11:26:27 3220 2

原创 linux内核奇遇记之md源代码解读之十四raid5非条块内读

linux内核奇遇记之md源代码解读之十四raid5非条块内读如果是非条块内读,那么就至少涉及到两个条块的读,这就需要分别从这两个条块内读出数据,然后再凑成整个结果返回给上层。接下来我们将看到如何将一个完整的bio读请求拆分成多个子请求下发到磁盘,从磁盘返回之后再重新组合成请求结果返回给上层的。4097 logical_sector = bi->bi_sector & ~((sec

2014-07-05 10:34:14 2918 1

原创 linux内核raid5坏块读之谜

从原理上讲,raid5出现坏块之后读操作肯定是会绕道读取的。我用设置/sys/block/md1/md/dev-sdb/bad_blocks的方法来模块磁盘坏块,用dd从md读数据,从iostat查看的数据流。创建一个三个盘的raid5: Number Major Minor RaidDevice State 0 8 80

2014-03-20 16:54:43 2077

翻译 linux内核模块签名

linux内核模块签名内核在模块模块加载时使用加密签名验证,校验签名是否与已编译的内核公钥匹配。目前只支持RSA X.509验证。签名验证在通过CONFIG_MODULE_SIG使能。打开签名同时还会强制做模块ELF元数据检查,然后再做签名验证。公钥生成内核编译时可以指定一系列的公钥。x509.genkey文件用来生成X509密钥。如果没有该文件,系统会自动提供一个默认的配

2014-01-24 11:00:08 11135 1

翻译 linux内核外部驱动模块编译报错ERROR: "******" [drivers/**.ko] undefined!

我往linux内核里添加一个驱动模块,根据《linux设备驱动》第三版,修改Makefile如下: obj-m := GobiNet.o GobiNet-objs := GobiUSBNet.o QMIDevice.o QMI.o 但是出现了如下错误:/home/sylvain/Projects/android_gingerbread_realv210_ver_1_0/k

2014-01-23 17:58:24 7354 1

翻译 linux内核之bcache简介

Linux最新支持SSD作为缓存设备

2014-01-10 17:58:10 13130 1

翻译 linux块设备加速缓存之bcache

很高兴地告诉大家,bcache已经加入linux3.10内核主线了,而最新出炉的RHEL7也带了bcache,这意味着bcache已经正式进入商用阶段。

2014-01-04 11:17:08 12914 1

原创 linux内核奇遇记之md源代码解读之十三raid5重试读

linux内核奇遇记之md源代码解读之十三raid5重试读转载请注明出处:http://blog.csdn.net/liumangxiong上节我们讲到条块内读失败,在回调函数raid5_align_endio中将请求加入阵列重试链表,在唤醒raid5d线程之后,raid5d线程将该请求调用retry_aligned_read函数进行重试读:4539static int re

2013-11-06 09:45:46 3131

原创 linux内核奇遇记之md源代码解读之十二raid读写

linux内核奇遇记之md源代码解读之十二raid读写转载请注明出处:http://blog.csdn.net/liumangxiong我们都知道,对一个linux块设备来说,都有一个对应的请求队列。注册在这个请求队列上的请求就是该块设备的请求入口。对于raid来说,分配struct mddev时就已经设置好了,在函数md_alloc中有这样的代码:4846 blk_que

2013-11-04 20:08:17 4694 10

原创 linux内核奇遇记之md源代码解读之十一raid5d

linux内核奇遇记之md源代码解读之十一raid5d转载请注明出处:http://blog.csdn.net/liumangxiong正是有了上一篇的读写基础,我们才开始看raid5d的代码。raid5d不是读写的入口,也不是读写处理的地方,只是简简单单的中转站或者叫做交通枢纽。这个枢纽具有制高点的作用,就像美国在新加坡的基地,直接就控制了太平洋和印度洋的交通枢纽。4626 /*

2013-10-22 15:15:09 3605

原创 linux内核奇遇记之md源代码解读之十raid5数据流之同步数据流程

linux内核奇遇记之md源代码解读之十raid5数据流之同步数据流程 转载请注明出处:http://blog.csdn.net/liumangxiong上一节讲到在raid5的同步函数sync_request中炸土豆片是通过handle_stripe来进行的。从最初的创建阵列,到申请各种资源,建立每个阵列的personality,所有的一切都是为了迎接数据流而作的准备。就像我们寒窗苦

2013-10-13 21:30:11 4825 28

原创 linux内核奇遇记之md源代码解读之九阵列raid5同步函数sync_request

linux内核奇遇记之md源代码解读之九阵列raid5同步函数sync_request转载请注明出处:http://blog.csdn.net/liumangxiong我们再来回顾一下整个场景:1)在运行阵列的时候调用md_wakeup_thread唤醒主线程2)主线程调用md_check_recovery检查同步3)md_check_recovery函数中检查需要同步调用

2013-10-12 10:59:49 3844

原创 linux内核奇遇记之md源代码解读之八阵列同步二

linux内核奇遇记之md源代码解读之八阵列同步二转载请注明出处:http://blog.csdn.net/liumangxiong在上一小节里讲到启动同步线程:7824 mddev->sync_thread = md_register_thread(md_do_sync,7825

2013-10-11 17:49:01 3501

原创 linux内核奇遇记之md源代码解读之七阵列同步一

linux内核奇遇记之md源代码解读之七阵列同步一转载请注明出处:http://blog.csdn.net/liumangxiong阵列同步在md_do_sync,那么入口在哪里呢?就是说阵列同步触发点在哪里呢?听说过md_check_recovery吧,但这还不是同步的入口点。那raid5d函数是入口点吧?如果要认真分析起来还不算是。真正的同步入口点在do_md_run函数,就是在运

2013-10-11 11:14:53 4680 3

原创 linux内核奇遇记之md源代码解读之六

linux内核奇遇记之md源代码解读之六转载请注明出处:http://blog.csdn.net/liumangxiongraid10的run函数与raid5的run函数最大区别在于setup_conf,那就直接深入核心:3540 static struct r10conf *setup_conf(struct mddev *mddev)3541 {3542

2013-10-10 19:17:39 3052 2

原创 linux内核奇遇记之md源代码解读之五

linux内核奇遇记之md源代码解读之五转载请注明出处:http://blog.csdn.net/liumangxiong如果看懂了raid1阵列的run函数,那么看raid5阵列run就非常轻松了,因为两者要做的事情都是大同小异。raid5的run函数很长,但很大一部分跟创建运行是没有关系的,特别是有一段跟reshape相关的,大多数系统都不关注该功能,因此可以直接跳过。经过删减

2013-10-10 14:15:53 3577 3

原创 linux内核奇遇记之md源代码解读之四

linux内核奇遇记之md源代码解读之四转载请注明出处:http://blog.csdn.net/liumangxiong运行阵列意味着阵列经历从无到有,建立了作为一个raid应有的属性(如同步重建),并为随后的读写做好的铺垫。那么运行阵列的时候到底做了哪些事情,让原来的磁盘像变形金刚一样组成一个新的巨无霸。现在就来看阵列运行处理流程:5158 static int do_md

2013-10-09 16:22:28 6232 15

原创 linux内核奇遇记之md源代码解读之三

linux内核奇遇记之md源代码解读之三转载请注明出处:http://blog.csdn.net/liumangxiong这一节我们阅读阵列的创建过程。按照常理出牌,我们到ioctl中找阵列创建命令,md对应的ioctl函数是md_ioctl,当找对应的cmd命令字时,却完全没有类似CREATE_ARRAY的命令,那么就说明md设备并不是通过ioctl函数来创建的。其实如果我们仔细

2013-10-07 22:02:13 5519 15

原创 linux内核奇遇记之md源代码解读之二

linux内核奇遇记之md源代码解读之二转载请注明出处:http://blog.csdn.net/liumangxiong在编译完成linux内核源代码的时候,drivers/md目录下会生成多个ko文件,那么这些内核模块哪一个先加载,哪一个后加载的呢?例如md-mod.ko, raid5.ko, raid10.ko,这些模块是一起加载的呢,还是有先后顺序呢?如果熟悉linux内核编程的话

2013-10-06 22:49:41 4699 2

原创 linux之configfs简介和编程入门

转载请注原出处:http://blog.csdn.net/liumangxiong一、什么是configfs是一种基于ram的文件系统二、configfs有什么用处在用户空间配置内核对象三、configfs VS ioctlconfigfs可直接察看,通过用户态目录文件访问接口,适用于内核对象有众多复杂的配置。四、configs VS sysfsconfigfs可以

2013-09-29 10:39:02 8061 1

原创 linux内核源码阅读之facebook硬盘加速flashcache之八

前面我们的分析中重点关注正常的数据流程,这一小节关注如果有异常,那么流程是怎么走完的呢?1)创建新任务时kcached_job申请不到2)读写命中时cache块为忙3)系统关机时处理,系统开机时处理,系统异常掉电后的处理首先来看第1种情况,申请kcached_job是在函数flashcache_lookup中,543/* 544 * dbn is the starting

2013-09-18 16:36:57 11887 8

原创 linux内核源码阅读之facebook硬盘加速flashcache之七

这一节讲缓存的写回磁盘流程。这里隆重介绍一下两位幕后的英雄:1724/*1725 * Sync all dirty blocks. We pick off dirty blocks, sort them, merge them with1726 * any contigous blocks we can within the set and fire off the writes.1

2013-09-18 11:18:37 3073 1

原创 linux内核源码阅读之facebook硬盘加速flashcache之六

其实到目前为止,如果对读流程已经能轻松地看懂了,那么写流程不需要太多脑细胞。我觉得再写下去没有太大的必要了,后面想想为了保持flashcache完整性,还是写出来吧。接着到写流程:1530static void1531flashcache_write(struct cache_c *dmc, struct bio *bio)1532{1533 int index;1534

2013-09-17 19:38:25 2789 1

原创 linux内核源码阅读之facebook硬盘加速flashcache之五

正常流程到flashcache_map的1623行或1625行,按顺序先看读流程:1221static void1222flashcache_read(struct cache_c *dmc, struct bio *bio)1223{1224 int index;1225 int res;1226 struct cacheblock *cacheblk;1227 int qu

2013-09-17 15:09:41 2966

原创 linux内核源码阅读之facebook硬盘加速flashcache之四

这一小节介绍一下flashcache读写入口和读写的基础实现。首先,不管是模块还是程序,必须先找到入口,用户态代码会经常去先看main函数,内核看module_init,同样看IO流时候也要找到入口。flashcache作为一个dm_target,入口就是struct target_type 的map函数,对应的是flashcache_map函数:1581/*1582 * Decid

2013-09-17 10:09:05 3588 4

原创 linux内核源码阅读之facebook硬盘加速flashcache之三

上一节讲到在刷缓存的时候会调用new_kcahed_job创建kcached_job,由此我们也可以看到cache数据块与磁盘数据的对应关系。上一篇:http://blog.csdn.net/liumangxiong/article/details/11726651现在继续从new_kcached_job函数中挖掘有用的信息。那就是cache块跟磁盘上扇区是怎么对应起来的?即329行的为什么要

2013-09-16 17:22:46 3552 1

原创 linux内核源码阅读之facebook硬盘加速flashcache之二

flashcache数据结构都在flashcache.h文件中,但在看数据结构之前,需要先过一遍flashcache是什么,要完成哪些功能?如果是自己设计这样一个系统的话,大概要怎么设计。前面讲过,flashcache主要用途还是在写缓存上,要写入磁盘的IO先写入速度较快的SSD盘,随后再由单独的线程将SSD盘中脏数据块同步到磁盘中。这样看来,SSD就是一个缓存,有缓存的基本特性如命中、脏、水

2013-09-16 12:06:48 5651 22

原创 linux内核源码阅读之facebook硬盘加速利器flashcache之一

从来没有写过源码阅读,这种感觉越来越强烈,虽然劣于文笔,但还是下定决心认真写一回。源代码下载请参见上一篇flashcache之我见 http://blog.csdn.net/liumangxiong/article/details/11643473下面代码对应的是tag下面的1.0版本的。看内核模块源码,闭着眼睛打开flashcache_init函数,区区百来行代码何足惧也。

2013-09-14 14:54:19 7182

原创 source insight 下看不了utf-8中文字符

source insight 下看不了utf-8中文字符

2013-08-26 11:30:34 2017

原创 linux内核函数之 blk_plug

linux内核函数之 blk_plug

2013-08-24 17:47:07 5210 1

转载 Linux文件系统破坏,导致系统无法启动解决办法

Linux下普遍采用的是ext3文件系统,ext3是一个具有日志记录功能的日志文件系统,可以进行简单的容错和恢复,但是在一个高负荷读写的ext3文件系统下,如果突然发生掉电,就很有可能发生文件系统内部结构不一致,导致文件系统破坏。Linux在启动时,会自动去分析和检查系统分区,如果发现文件系统有简单的错误,会自动修复,如果文件系统破坏比较严重,系统无法完成修复时,系统就会自动进入单用户模式

2013-08-08 13:59:11 1747

翻译 常用mdadm 命令

常用 mdadm 命令生成配置文件mdadm.confcp /etc/mdadm/mdadm.conf /etc/mdadm/mdadm.conf.save/usr/share/mdadm/mkconf --generate > /etc/mdadm/mdadm.conf创建RAIDmdadm --create /dev/md2 --raid-devices=3

2013-05-24 17:13:29 4267

转载 Linux Memory Management Notes

Linux 内存基础地址类型linux内核中有许多种不同的地址类型用户虚拟地址 用户空间看到的常规地址,通过页表可以将虚拟地址和物理地址映射起来物理地址 用在cpu和内存之间的地址叫做物理地址总线地址 外围总线和内存之间的地址叫做总线地址。通常他们和物理地址相同内核逻辑地址 内核的常规地址空间,必定有对应的物理内存与之映射。kmalloc返回的就是内核逻辑地址内核虚拟地址

2013-05-21 16:15:09 798

原创 dup, dup2一图胜千言

一图胜千言啊,看了必须懂啊^_^下面这一段原文:http://os.chinaunix.net/a2009/0602/1049/000001049422_7.shtml  在C语言里,操纵文件的渠道则是FILE结构,不难想象,C语言中的FILE结构必定和fd有一对一的关系,每个FILE结构都会记录自己唯一对应的fd。  FILE、fd、打开文件表和打

2013-04-23 10:23:45 2845

原创 为什么有些语言if语句有endif,而有些语言没有?

这不是技术问题,只是平时有没有注意到并且去考虑而已。而我也就今天突然想到今天在写Makefile,在一个else语句之后想了一下有没有endif,这时突然意识到必须要有这个endif,因为如果没有这个endif,那么这个else语句就无法判断到哪个语句结束,比如下面的语句,能断定第10行是属于else语句吗?或者断定第10行不属于else语句吗? 5 ifeq ("${D

2013-04-20 14:49:49 4346

原创 linux gdb 跟踪代码错行问题的解决

今天突然出现的一个奇怪的问题,gdb跟踪的时候老是错位了几行,执行step命令的时候也无法进入,本着一次解决的决心,开始查找问题:1、先确认了是按最新文件编译的2、确认了编译后库文件有install的(因为错位的是so)3、在source insight和vi下面看确认了文件代码行是一样的@@,迷茫了一下,然后开始怀疑跟windows拷贝到linux编译有关,开始用vi看代码文件,

2013-04-17 14:03:00 2703

Linux性能分析 -- sar

linux 性能 sar,分别于CPU、MM、IO、网络

2013-01-10

回顾.Linux性能监控——CPU、Memory、IO、Network

Linux性能监控——CPU、Memory、IO、Network

2013-01-10

《QQ飞车》服务器端优化点滴

《QQ飞车》服务器端优化点滴,分析如何从用户数据持续优化和改进。

2013-01-06

函数性能分析利器 -- Gperftools

函数性能分析利器 -- Gperftools

2013-01-06

python脚本用于xml解析的源代码

python脚本用于xml解析的源代码。自己写的,已经在部门内部应用。

2012-12-27

服务器后台性能及测试

服务器性能测试工具,性能测试理论和方法,建模和解决方案。

2012-12-27

浅析游戏如何应对运营低谷期

浅析游戏如何应对运营低谷期,具体分析了一款游戏如何经历低谷之后重新走回到新阶段。

2012-12-27

提高 Linux 上 socket 性能 加速网络应用程序的 4 种方法

提高 Linux 上 socket 性能 加速网络应用程序的 4 种方法。修改socket参数和TCP/IP相关参数设置,从而适应各自业务提高网络性能。

2012-12-27

Nutanix技术白皮书

超融合架构设计的鼻祖,分布式存储,企业级存储高级特性。

2017-11-30

存储技术原理分析_基Linux 2.6内核源代码.pdf

存储技术原理分析_基Linux 2.6内核源代码.pdf,存储技术原理必备书籍。

2017-11-23

空空如也

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

TA关注的人 TA的粉丝

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