Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1373544
  • 博文数量: 488
  • 博客积分: 161
  • 博客等级: 入伍新兵
  • 技术积分: 5064
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-01 07:37
个人简介

只有偏执狂才能生存

文章分类

全部博文(488)

文章存档

2016年(10)

2015年(112)

2014年(66)

2013年(272)

2012年(28)

分类: LINUX

2013-07-26 14:53:25

原文地址:RAID1代码走读(1)-启动 作者:qincp-

下面几篇文章是对2.6.21的RAID1代码进行走读和分析的记录。

 

Run函数在MD设备启动时调用,完成如下工作:

1. 申请raid1私有数据区conf。私有数据区中还申请了一个mempool,为磁阵读写缓存使用。

2. 初始化私有数据区,包括:

a)       使用MD信息对磁阵中的磁盘rdev赋值

b)       关联MDraid1私有数据区

c)       私有数据区的锁和队列的初始化

3. 检查磁阵中磁盘状态,如果有磁盘不存在或者磁盘和磁阵中其他磁盘不处于一致状态(In_syn),则设置磁阵需要全部同步,处于降级状态。如果全部磁盘都不正常,则启动失败。如果仅一个盘可以正常工作,则设置标志禁止同步操作。

4. 找到第一个可用的磁盘,作为读均衡算法的起点。因为RAID1是多个磁盘组成镜像,每个磁盘的内容是一样的,为提高读效率(以及提高磁盘使用寿命?),可以将读操作分配在不同的磁盘上,读均衡算法进行这个分配。而设置了WriteMost的磁盘是不参与读均衡算法的。

5. 初始化MD结构中的一些信息,包括:

a)       注册守护进程RAID1

b)       注册unplug回调

c)       注册拥塞处理函数

阅读(754) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册