源文件
linux/src/drivers/md/raid0.h linux/src/drivers/md/raid0.c linux/src/drivers/md/md.h linux/src/drivers/md/md.cRAID 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 中只提供了空函数体 };
raid0 不支持磁盘的动态添加和删除:没有实现 hot add/remove 方法
* 尚未弄明白的问题 * 什么时候会出现 takeover? * 整个 takeover 的过程是怎样的,数据会如何移动,谁来移动数据? 这里的 takeover 主要是重新构建 conf * takeover 过程中,对可支持的 mode,有什么样的要求,如何理解这些条件?