我凭经验观察到,对于 raid1 mdadm 阵列,主要服务于单个进程的顺序读取,基本上总是选择第一个磁盘。这也得到了证实这段代码这是在线链接的这个问题。
演示效果见下图iostat
:
iostat -h | grep -E "sda|sdb"
5.95 3.9M 5.9k 0.0k **2.8T** 4.2G 0.0k sda <-- preferred
0.38 12.1k 5.9k 0.0k 8.6G 4.2G 0.0k sdb
我想知道是否有一种非破坏性的方法来改变它并决定哪个磁盘应该是首选?
我尝试更改物理磁盘顺序,但是是第一个磁盘仍然受到优先对待。在此过程中,RaidDevice
和Number
按预期进行了更改,但对我想要实现的目标没有任何帮助。此外,虽然旧的sda
改变了sdb
,反之亦然,但mdadm --detail
它们却没有。
以下是设置的一些信息:
$ mdadm -V
mdadm - v3.4 - 28th January 2016
切换前读取不平衡:
iostat -h | grep -E "sda|sdb"
5.95 3.9M 5.9k 0.0k 2.8T 4.2G 0.0k sda <-- preferred
0.38 12.1k 5.9k 0.0k 8.6G 4.2G 0.0k sdb
切换后读取不平衡:
$ iostat -h | grep -E "sda|sdb"
11.60 427.9k 99.5k 0.0k 252.4M 58.7M 0.0k sda
120.68 105.5M 99.5k 0.0k 62.2G 58.7M 0.0k sdb <-- still preferred
切换前数组的详细信息:
cat /proc/mdstat
md2 : active raid1 sdb3[0] sda3[2]
13667560448 blocks super 1.2 [2/2] [UU]
mdadm --detail /dev/md2
/dev/md2:
Version : 1.2
Raid Level : raid1
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : ddb468d7:8c866278:6f56b7eb:0a911253
Number Major Minor RaidDevice State
0 8 3 0 active sync /dev/sda3
2 8 19 1 active sync /dev/sdb3
切换后的数组详细信息:
cat /proc/mdstat
md2 : active raid1 sda3[0] sdb3[2]
13667560448 blocks super 1.2 [2/2] [UU]
mdadm --detail /dev/md2
/dev/md2:
Version : 1.2
Raid Level : raid1
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
UUID : ddb468d7:8c866278:6f56b7eb:0a911253
Number Major Minor RaidDevice State
0 8 19 0 active sync /dev/sdb3
2 8 3 1 active sync /dev/sda3 <- this partition name didn't get changed