BTRFS raid-1:哪个设备获得读取?
BTRFS raid-1: which device gets the reads?
我有一个具有以下配置的 raid-1:
$ btrfs fi show
Total devices 2 FS bytes used 203.31GiB
devid 1 size 224.00GiB used 206.03GiB path /dev/sda
devid 2 size 224.00GiB used 206.03GiB path /dev/mmcblk0p4
/dev/mmcblk0p4
快,/dev/sda
慢
什么决定了哪个设备会读取 IO,有没有办法控制它?
从Linux内核的5.0版本开始,有一段代码可以决定使用镜像数组的哪一部分。它使用进程 pid select 可用条带之一:
https://elixir.bootlin.com/linux/v5.0/source/fs/btrfs/volumes.c
static int find_live_mirror(struct btrfs_fs_info *fs_info, ...
{ ...
if (map->type & BTRFS_BLOCK_GROUP_RAID10)
num_stripes = map->sub_stripes;
else
num_stripes = map->num_stripes;
preferred_mirror = first + current->pid % num_stripes;
当数据替换处于活动状态时,还有用于更改首选的附加逻辑。但是当前代码没有 "SSD" 超过 "rotational" select 离子逻辑。
Timofey Titovets 提出了一个补丁来实现搜索 ssd 以在 2017 和 2018 年作为首选使用它,但仍然没有被接受:
Btrfs: enchanse raid1/10 balance heuristic for non rotating devices
Timofey Titovets. Wed, 27 Dec 2017
Currently btrfs raid1/10 balancer blance requests to mirrors,
based on pid % num of mirrors. ...
If one of mirrors are non rotational, then all read requests will be moved to non rotational device. ...
P.S. Inspired by md-raid1 read balancing
https://www.spinics.net/lists/linux-btrfs/msg80033.html
[补丁 V5] Btrfs:enchanse raid1/10 平衡启发式,2018 年 7 月 7 日
https://patchwork.kernel.org/patch/10681671/
[V8] Btrfs:增强 raid1/10 平衡启发式,2018 年 11 月 14 日
我有一个具有以下配置的 raid-1:
$ btrfs fi show
Total devices 2 FS bytes used 203.31GiB
devid 1 size 224.00GiB used 206.03GiB path /dev/sda
devid 2 size 224.00GiB used 206.03GiB path /dev/mmcblk0p4
/dev/mmcblk0p4
快,/dev/sda
慢
什么决定了哪个设备会读取 IO,有没有办法控制它?
从Linux内核的5.0版本开始,有一段代码可以决定使用镜像数组的哪一部分。它使用进程 pid select 可用条带之一:
https://elixir.bootlin.com/linux/v5.0/source/fs/btrfs/volumes.c
static int find_live_mirror(struct btrfs_fs_info *fs_info, ...
{ ...
if (map->type & BTRFS_BLOCK_GROUP_RAID10)
num_stripes = map->sub_stripes;
else
num_stripes = map->num_stripes;
preferred_mirror = first + current->pid % num_stripes;
当数据替换处于活动状态时,还有用于更改首选的附加逻辑。但是当前代码没有 "SSD" 超过 "rotational" select 离子逻辑。
Timofey Titovets 提出了一个补丁来实现搜索 ssd 以在 2017 和 2018 年作为首选使用它,但仍然没有被接受:
Btrfs: enchanse raid1/10 balance heuristic for non rotating devices Timofey Titovets. Wed, 27 Dec 2017
Currently btrfs raid1/10 balancer blance requests to mirrors, based on pid % num of mirrors. ...
If one of mirrors are non rotational, then all read requests will be moved to non rotational device. ...
P.S. Inspired by md-raid1 read balancing
https://www.spinics.net/lists/linux-btrfs/msg80033.html [补丁 V5] Btrfs:enchanse raid1/10 平衡启发式,2018 年 7 月 7 日
https://patchwork.kernel.org/patch/10681671/ [V8] Btrfs:增强 raid1/10 平衡启发式,2018 年 11 月 14 日