Multiple Devices

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

 

单独拿出来说说。那就是MD对子设备的管理,比如添加spare设备,移除已有的设备等等,毕竟MD被称之为Mutiple Device也不是随便起个名字。

 

前面胡乱写了些RAID-5的东西,一路闷头苦写,本来想搞的图文并茂,可惜写着写着就不想去总结出图形来了。无论如何,RAID-5告一段落,或许以后能把结构图之类的补上。休息了一段时间之后,我决定再把MD的东西拿出来写写。MD与RAID-5相比就没有这么条理清楚了,因为至少RAID-5可以拿数据路径作为主线,而MD都是控制相关的内容,并没有非常清晰的脉络。下面就开始吧。

RAID-5中我们已经多次提到MD的作用,MD提供了很多控制功能。请容忍我刚想到的一个比喻,MD就像一个DVD机,而各级RAID就像各种DVD光盘,DVD机播放的内容由放在里面DVD光盘决定,没有光盘,DVD机也不能起作用,没有DVD机,我们也无法享受光盘中的电影了;正是有了DVD机,我们不仅可以装入不同的光盘,而且还可以快进、快退,调节音量…等等。正因为这样,我们知道DVD机就比DVD光盘要复杂,同样的道理,MD相对于RAID-5而言又更复杂一些,我们可以看md.c有5000多行,是RAID-5的两倍多。当然用代码量来衡量复杂度是不科学的,而且RAID-5也并不只是内容的载体,它本身的算法就比MD要更有深度。

那么MD要如何看起?这个问题在我脑中也没有特别清晰的脉络,因为MD中的代码很杂,并没有很清晰的层次或类别关系,所以我打算想到哪里就写到哪里。但不管怎么说先建立一个对MD的总体印象是很有帮助的。

首先,创建了一个MD设备,我们可以通过mdadm –E来查看MD中各设备的情况(E -examine),或者通过mdadm –D来直接查看MD的状态(D –detail)。那么这些信息是从哪里来的呢?这就牵涉到MD如何存放自身信息的问题。事实上,MD是通过自己的superblock来存放这些信息的,而MD中每一个设备都有自己的一套superblock,但我们必须保证各子设备的superblock是一致的。通过这些信息,即使MD被Stop以后再Assemble又能够起来。因此MD有一套自己的管理superblock的机制。

其次,既然DVD机要能让人控制,当然要提供一些按钮给人们。MD自然也要提供一些与外界交互的接口。我们知道linux驱动程序中,一般是通过提供ioctl来进行交互的。关于MD如何实现没什么新鲜,但是这里面提供了那些交互,有何作用,如何实现那可能才是我想讨论的。

再次,resync和recovey是如何工作的。在讨论RAID-5中已经提及,但那只是RAID-5内部的处理,事实上在MD中如何调度resync和recovery其实也是很tricky的,第一次看的时候很容易就云里雾里了,这是经验之谈…

次中又次,其实这一点并不次,不过突然想起来应该将它

最后就是bitmap,不过这我始终还是不敢碰,毕竟还没有空研究透。

万变不离其宗,说代码总是应该从数据结构说起,下一篇我就简单说说MD的数据结构。:)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值