linux-raid (三) linear mode

来源:互联网 发布:温度数据采集模块 编辑:程序博客网 时间:2024/05/17 09:19

源文件
        linux/drivers/md/md.h
        linux/drivers/md/md.c
        linux/drivers/md/linear.h
        linux/drivers/md/linear.c

linear raid 是将一组盘组成一个虚拟的大磁盘,写的时候,先往一块盘上写,写满之后再写另一块盘。linear raid 没有纠错机制,坏掉一块盘,这个 raid 盘就坏掉了。写时的性能有可能会有提高,比如,写的数据分布在不同盘上。linear/raid0 不支持 spare disks,也不使用 bitmap;不支持 takeover。

mdadm --create /dev/mdX --level=linear --raid-devices=N ...

    这里 N 可以指定 1,但是需要加上 --force 选项,因为 “mdadm: '1' is an unusual number of drives for an array, so it is probably a mistake.  If you really mean it you will need to specify --force before setting the number of drives.”

mdadm 的工作流程相当复杂,对参数进行解析,并对对应的 scenario 进行各种检测,调整出合适的 RAID 参数;最后将这些信息写入到 RAID 盘的 superblock 中。

构建完之后,会启动创建的 linear raid,这可以从 /proc/mdstat 中的 "active" 字样看出来。

linear 实现比较简单,实际上就是管理磁盘列表,这些磁盘在写上是顺序使用的。在内存中,linear 由 struct linear_conf 来管理,其下的 struct dev_info 数组对应磁盘阵列。注意,linear_conf 和 dev_info 结构都是在内存中生成的,最终信息是来自于 superblock;先生成 mddev,其后才会创建这些数据结构。

对于 linear raid 请求队列来讲,只要有一个子设备是 congested,则此 linear md 设备就看作是 congested。(见 linear_congested)

linear mode 支持通过添加磁盘来扩展阵列大小:.hot_add_disk =linear_add;不支持磁盘的删除

 

原创粉丝点击