linux kernel
小表弟皮卡丘
嘻嘻^_^
展开
-
mdadm彻底删除software RAID
mdadm彻底删除software RAID Linux系统中可以通过使用mdadm这个简单高效的命令将几块盘甚至一块盘的几个分区组成一个software RAID阵列,提高存储效率。但是当我们不想保留这个RAID了,就需要彻底删除这个RAID,今天就来说说如何删除的彻彻底底的。实验环境使用mdadm安装software RAID的流程请参考mdadm创建software RAID,安装结束后原创 2015-08-11 10:14:38 · 23730 阅读 · 2 评论 -
Linux 内核中RAID5源码详解之RAID模块声明
Linux 内核中RAID5源码详解之模块声明系统整体布局在讲RAID5之前,我们先来思考下这个问题:我们平时写的C函数,比如说write() 是怎么将数据写到计算机的硬盘上的?整个系统指令执行的流程是什么?我们带着这个问题来了解系统的整体布局。 这是系统的整体布局的示意图,比如说问题中的write() 执行流程则为用户态调用该函数,然后进行系统调用,将指令和参数传给虚拟文件系统层,然后再具体原创 2015-07-23 16:28:12 · 3509 阅读 · 4 评论 -
Linux 内核中RAID5源码详解之stripe_head的管理
Linux 内核中RAID5源码详解之stripe_head的管理前面已经介绍了整个系统的全局架构和内核中RAID5的基本处理单元stripe_head结构,基本上已经从整体上对Linux内核中的RAID5模块有了一定的认识,今天我们就来说说RAID5是怎么来管理stripe_head(下面有时也会说到”条带“,其实指的就是stripe_head结构)的,闲话不多说,go~原创 2015-07-24 14:01:48 · 4261 阅读 · 6 评论 -
Linux 内核中RAID5源码详解之写过程剖析(一)
Linux 内核中RAID5源码详解之写过程剖析(一)前面说了很多铺垫性的东西,感觉是时候放大招了,今天我们就来谈谈内核中RAID5最重要的特征:写。前面说过了handle_stripe() 是处理stripe_head的真正战场,由于该函数十分复杂,所以我在内核源码中增添了写输出信息,便于理解,由于里面的函数调用很多,下面讲的时候会涵盖很多函数的源码,所以请自备花生、水果和饮料,感觉会很长,我尽量原创 2015-07-24 17:16:44 · 5644 阅读 · 2 评论 -
Linux内核中RAID5源码详解之基本架构与数据结构
Linux内核中RAID5的基本架构与数据结构解析众所周知,早年的计算机存储数据现在磁带上,然后发展到了磁盘,然而仅仅是单个盘,速度和性能都不是很好,然是,要知道人类的聪明才智是连ET都想不到的,前辈们不断的猜想,实验来提高计算机的性能,于是磁盘阵列问世了。由于磁盘阵列(Redundant Arrays of Independent Disks,RAID)的出现,使磁盘的存储性能和安全性等诸多方面有原创 2015-07-22 16:51:11 · 6891 阅读 · 4 评论 -
Linux内核中MD及RAID模块化
Linux 内核中MD及RAID模块化这段时间接触了下linux内核中的MD代码以及RAID源码,想自己在上面加一些东西,期间就要重新编译MD和RAID,但是由于修改的是内核源码,所以刚开始每次编译都需要编译内核,花费的时间比较长,于是就想起了将MD和RAID进行模块化,这样的话就大大节省了编译的时间,下面我们就来谈谈是怎么模块化的。模块化的步骤大致分为三个阶段:编译内核、编译模块和插入模块。接下来原创 2015-07-22 13:27:33 · 7509 阅读 · 6 评论 -
Linux内核RAID5写性能分析
Linux内核RAID5写性能分析前面的几篇博文大致介绍了下Linux内核中RAID5源码实现写的过程,那么今天我们就来分析下RAID5写性能如何,具体来说,应该是根据bio请求的大小来分析写延迟。Background首先我们先确定下测试的模型:3+1 RAID5,并且有chunk_size=4∗pagechunk\_size=4*page,结构如下图。 上图中S0~S3均为stripe_he原创 2015-07-24 18:27:29 · 3902 阅读 · 2 评论 -
Linux内核中RAID5源码详解之写过程剖析(二)
Linux内核中RAID5源码详解之写过程剖析(二)继上一篇Linux内核中RAID5源码详解之写过程剖析(一),现在我们已经将bio添加到了相应的stripe_head中,记为sh,由于RAID5处理的基本单元就是stripe_head,所以接下来就是怎么处理这个含有bio的stripe_head过程。 上篇中make_request() 中最后调用release_stripe_plug() 处原创 2015-08-03 16:25:41 · 5005 阅读 · 5 评论 -
Linux中将文件系统模块化详解
Linux内核中的模块化最近接触了下linux内核中的文件系统源码,但是想在上面修改的话必须要重新编译内核,如果不使用模块化的话,那就要修改一次编译一次内核,由于编译内核的时间非常长,所以就将修改的那部分编译成一个模块,进而后来使用模块化来达到预期效果。首先,大致几个步骤如下:编译内核编译模块插入模块编译内核首先来说下编译内核是怎么实现的,其实这方面网上原创 2015-07-21 14:42:47 · 2996 阅读 · 3 评论 -
Linux 内核中RAID5源码详解之守护进程raid5d
Linux 内核中RAID5源码详解之守护进程raid5d对于一个人,大脑支配着他的一举一动;对于一支部队,指挥中心控制着它的所有活动;同样,对于内核中的RAID5,也需要一个像大脑一样的东西来支配着他的正确运转,那就是RAID5的守护进程raid5d。今天,我们就好好来看看raid5d到底是怎么一回事~进程的注册前面的博文中贴出的源码经常会出现这样一条语句md_wakeup_thread(mdde原创 2015-07-24 15:22:48 · 3100 阅读 · 0 评论