博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux-raid (四) raid0
阅读量:7049 次
发布时间:2019-06-28

本文共 1993 字,大约阅读时间需要 6 分钟。

源文件

        linux/src/drivers/md/raid0.h
        linux/src/drivers/md/raid0.c
        linux/src/drivers/md/md.h
        linux/src/drivers/md/md.c
RAID 0 是将数据分散存放到不同磁盘上,比如有 8 个数据块大小的数据,同时有 2 块同样大小的磁盘,这 8 块数据会将 1,3,5,7 存放到第 1 块盘上,其他数据块存放到第 2 块磁盘上。如果两块盘大小不一样,则每块盘会使用最小磁盘大小的空间;最后单独使用余下盘上的空间。RAID 0 没有冗余,1 块盘坏掉,数据也就丢失了。

mdadm --create /dev/mdX --level=stripe --raid-devices=N ...
RAID 0 的容量计量为所有磁盘的容量(chunk 大小的整数倍)总和。
linear/raid0 不支持 spare disks,也不使用 bitmap。

static struct md_personality raid0_personality =    {            .name            = "raid0",            .level             = 0,            .owner           = THIS_MODULE,            .make_request   = raid0_make_request,    必要时(超出 chunk 大小)将 bio 分解到不同的 rdev 上            .run               = raid0_run,            .stop              = raid0_stop,            .status           = raid0_status,          显示 chunk 大小            .size               = raid0_size,             raid0 阵列中 rdev 的容量总和,以 sector 计            .takeover       = raid0_takeover,                                       raid0 可以 takeover:                                            *  raid4 - if all data disks are active.                                            *  raid5 - providing it is Raid4 layout and one disk is faulty                                            *  raid10 - assuming we have all necessary active disks                                            *  raid1 - with (N -1) mirror drives faulty                        .quiesce        = raid0_quiesce;           raid0 中只提供了空函数体    };

RAID 0 对不同大小磁盘的支持:
        首先确定最小磁盘的大小,将所有磁盘中这块大小的空间看作属于 zone[0];
        再扫描出次大的磁盘大小,将剩余盘中这块大小的空间看作属于 zone[1];
        以此类推

如果构成阵列的所有磁盘大小都一样(近似),则 conf->nr_strip_zones 设置为 1;如果有不同尺寸,则为不同尺寸的数量,比如有 8GB/10GB/9GB 的盘,则 conf->nr_strip_zones 取值为 3。详情见 create_strip_zones 和 map_sector。

raid0 不支持磁盘的动态添加和删除:没有实现 hot add/remove 方法

* 尚未弄明白的问题
        * 什么时候会出现 takeover?
        * 整个 takeover 的过程是怎样的,数据会如何移动,谁来移动数据?
                       这里的 takeover 主要是重新构建 conf
        * takeover 过程中,对可支持的 mode,有什么样的要求,如何理解这些条件?

转载于:https://www.cnblogs.com/refrag/archive/2012/12/22/2828720.html

你可能感兴趣的文章
数学图形之Kuen Surface
查看>>
ORACLE里锁有以下几种模式,v$locked_object,locked_mode
查看>>
【树莓派】Linux 测网速及树莓派源
查看>>
Java用户线程和守护线程
查看>>
[TypeScript] Use the never type to avoid code with dead ends using TypeScript
查看>>
Javascript 与 SPA单页Web富应用
查看>>
SpringMVC之访问静态文件
查看>>
【java设计模式】之 模板方法(Template Method)模式
查看>>
小米手机会不会更好
查看>>
atitit.Sealink2000国际海运信息管理系统
查看>>
android面试总结01 activity生命周期
查看>>
Java 实现策略(Strategy)模式
查看>>
Ubuntu离线安装Sogou拼音(附老版本安装&输入法自启动)
查看>>
springmvc结合base64存取图片到mysql
查看>>
深度学习主机环境配置: Ubuntu16.04+GeForce GTX 1080+TensorFlow
查看>>
linux 抓包 tcpdump 简单应用
查看>>
mongodb官网文档阅读笔记:与写性能相关的几个因素
查看>>
PHP处理时间格式
查看>>
BestCoder Round #11 (Div. 2)
查看>>
JAVA入门[20]-Spring Data JPA简单示例
查看>>