Доброго времени суток.
Всегда считал, что
<верхний предел для скорости чтения с raid1> = <число дисков> * <скорость чтения с самого медленного диска>
А у меня всё время получается, что скорость равна скорости чтения самого медленного диска. Причём в случае чтения с массива видно, что половина запросов идёт на один диск, половина на второй, но в результате скорость не превышает скорости одного диска.
1) чтение с raid1:
jb:~/initrd# dd if=/dev/md3 of=/dev/null bs=128k count=20000
20000+0 записей считано
20000+0 записей написано
скопировано 2621440000 байт (2,6 GB), 23,409 c, 112 MB/c
кусок вывода iostat -x 2
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sdc 371,00 0,00 166,00 0,00 126144,00 0,00 759,90 10,85 65,17 4,72 78,40
sda 395,50 0,00 181,50 0,00 135680,00 0,00 747,55 8,76 47,94 4,30 78,00
md3 0,00 0,00 1117,00 0,00 263928,00 0,00 236,28 0,00 0,00 0,00 0,00
dm-17 0,00 0,00 1117,00 0,00 263928,00 0,00 236,28 70,83 63,11 0,88 98,60
2) чтение с одного диска:
jb:~/initrd# dd if=/dev/sda of=/dev/null bs=128k count=20000
sda sda1 sda2
jb:~/initrd# dd if=/dev/sda of=/dev/null bs=128k count=20000
20000+0 записей считано
20000+0 записей написано
скопировано 2621440000 байт (2,6 GB), 23,3692 c, 112 MB/c
кусок вывода iostat -x 2:
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sdc 1.50 0.00 2.00 0.00 432.00 0.00 216.00 0.02 9.00 9.00 1.80
sda 29373.50 0.00 950.50 0.00 243040.00 0.00 255.70 2.07 2.10 1.05 100.00
md3 0.00 0.00 8.00 0.00 1040.00 0.00 130.00 0.00 0.00 0.00 0.00
dm-17 0.00 0.00 8.00 0.00 1040.00 0.00 130.00 0.36 24.75 24.00 19.20
3) конфигурация
/proc/mdstat
md3 : active raid1 sda2[2] sdc2[3]
1952988760 blocks super 1.2 [2/2] [UU]
оба диска:
Model Family: Western Digital Caviar Green (Adv. Format) family
Device Model: WDC WD20EARS-00MVWB0
Как бы это объяснить без мистики? Может ли это быть проверкой целостности данных на лету? (но тогда в выводе iostat скорость чтения с обоих дисков должна быть раза в два выше)