Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92236
  • 博文数量: 26
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 345
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-10 15:51
文章分类

全部博文(26)

文章存档

2011年(1)

2009年(25)

我的朋友

分类: LINUX

2009-08-14 09:15:20

下面几篇文章是对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)       注册拥塞处理函数

阅读(1465) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~