RAID-5(十三)其它

这些文章已经写了好几年了,可能已经过时了。在MSN space和QQzone几经辗转之后,我想也许这些技术文章还是放在搞技术的博客中更能帮助人。于是做了一个艰难的决定,把这些文章一篇篇搬过来!绝对是原创的。

 

前面几篇林林总总,从RAID-5原理,到错误,失效处理,主要还是围绕数据处理的方方面面来说的,但是RAID-5要能正常使用,没有一些控制函数的辅助是不可能的。我所说的这些控制函数可以在raid5.c快要结束的地方,在raid5_personality这个结构中找到他们的名字。

 

raid5_personality中的函数,除了make_request直接作用在数据路径中以外,其它的都是通过MD的控制函数间接调用的。关于MD中的控制函数跟RAID-5相比,繁复程度有过之而无不及,但因为没有特殊的算法,也就没有什么特殊的原理,主要是看它的处理过程。但是MD并不是我在RAID-5中的讨论的重点,只是为了理解RAID-5特定的控制函数而提及相关的内容。

 

其实raid5_personality中的函数可以用面向对象中的重载函数来理解,正如我们在一开始提到MD说的那样,这是RAID-5对MD父类方法的重载。废话少说,其中make_request和sync_request都已经谈过,不必重复,就从没说过的开始。

 

首先是run,顾名思义,很简单这就是在RAID-5开始运行时调用,进行一些初始化的操作,主要是对RAID-5中的conf进行初始化,这里面的代码也有点搞来搞去,但是只要明白了RAID-5的数据结构,那所有的代码就一目了然了。run函数在md.c的do_md_run中被调用。

 

如果说run有点构造函数的意思,那么stop函数就有析构函数的味道了。看看这个函数,不是unregister就是shrink,kfree,都是所有的资源一一释放。stop是在md.c的do_md_stop中调用。

 

下一个就是status函数,这是在md_seq_show中调用,这是个在/proc文件系统中使用的函数、我们通过”cat /proc/mdstat”命令行得到的信息就是通过md_seq_show显示的。其中RAID-5的信息则是由md_seq_show调用status函数来显示,这要是显示设备状态和resync或recovery状态。

 

error函数我们在讨论错误处理的时候已经提过。

 

raid5_add_disk函数是将一个rdev放入RAID-5的disk数组中。这里比较容易让人误会的是,以为这是被md.c中hot_add_disk函数调用的,我最初就是这样想当然的,但事实并非如此,这个函数真正被调用时在md_check_recovery中,而MD的hot_add_disk目的是将rdev加入到md设备,而事实上还没有加入到RAID-5中。所以,我们常将md的hot_add_disk称为为外部hot_add,而personality中hot_add_disk称为内部hot_add。

 

与raid5_add_disk相反,raid5_remove_disk则是从RAID-5的disk数组中将rdev踢出去。同样道理,它也不是在md的hot_remove_disk被调用,而是在md_check_recovery中被调用。但是要知道md的hot_remove_disk要想成功,前提是raid5_remove_disk已经调用成功。

 

raid5_spare_active函数也是在md_check_recovery中被调用,作用就是将完成了recovery的spare的rdev激活,告知RAID-5这个rdev数据已经恢复完成可以正常工作了,同时修改md的一些统计数据。

 

raid5_resize,这个函数应该一目了然,那就是调整RAID-5的大小。

 

最后一个是raid5_quiesce,这是个给外部调用来禁止或启动写操作的函数,这在某些情况下是个很重要的特性。
 
终于写完了。然而RAID-5只是MD的一个组成部分,要想知道RAID是怎么工作的,还是得了解MD的一些内容,接下去谈谈md.c的阅读理解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值