linux-raid (二) faulty 和 multipath
源文件
linux/drivers/md/faulty.c
linux/drivers/md/multipath.h
linux/drivers/md/multipath.c
linux-raid 之 faulty
个人对它兴趣不大,这里简单记录一下介绍。
faulty 模块实现了 fautly-device-simulator personality for md:
The "faulty" module allows for a block device that occasionally returns read or write errors. It is useful for testing. MODULE_DESCRIPTION("Fault injection personality for MD") MODULE_ALIAS("md-personality-10") MODULE_ALIAS("md-faulty") MODULE_ALIAS("md-level--5") config MD_FAULTY tristate "Faulty test module for MD" depends on BLK_DEV_MD help The "faulty" module allows for a block device that occasionally returns read or write errors. It is useful for testing.
linux-raid 之 multipath (deprecated)
md multipath 已经不开发了 (not under active development),使用 multipath 应该看 dm-mpath。这里只是简单了解一下 mpath 的一种实现:
multipath_make_request:对请求的分配可以看出,multipath 对 path 的管理是很简单的,即尝试第 1 个可用的 path,来分配 IO。如果 IO 失败了,则加入 retry list,后由 multipathd 来重试 IO 操作
multipath_add_disk:add 不能随便添加,只能是向固定大小的 multipaths 数组的空 slot 中添加 rdev;并不能增大 multipaths 槽的大小
multipath_remove_disk:从 multipaths 数组中找到对应 slot,设置其 rdev 为 NULL
md multipath 没有什么复杂的策略和管理机制,比如轮转、IO balance 等。