Я хотел настроить конфигурацию raid01 (raid1, состоящий из двух raid0) с одним из томов raid0 с установленным состоянием в основном для записи, чтобы все операции чтения переходили на другой (то есть один - диск, другой - флэш). Однако весь этот план столкнулся с проблемой в том, что чтение непосредственно из raid0 является правильным при 64 КБ на диск (размер блока), но когда я добавляю raid1 поверх raid0, все чтения падают только до 4 КБ, поэтому производительность ужасно. Я предполагаю, что это связано с тем, что md (или что-то в стеке) решило, что 4k - это степень детализации для ошибок, поэтому он выполняет чтение в этом размере, но это всего лишь предположение. В любом случае мне действительно нужно найти способ исправить это.
Чтобы проверить это, я использую raid1 только с одной стороной для простоты, т.е. он был создан с помощью
mdadm --create /dev/md2 -l 1 -n 2 /dev/md1 "missing"
Другой интересный момент заключается в том, что dd bs = 512K в массиве raid0 md1 показывает 64К чтения на md1 и всех его компонентах, тогда как я ожидал, что iostat покажет md1, имеющий 512 КБ операций чтения, а его составляющие диски - 64 КБ. Dd bs = 512K из md2 показывает 4К чтения для всего. Я вычисляю размер блока, просто разделив МБ / с на tps, что = МБ / транзакция.
Вот все подробности.
[root@pe-r910 ~]# mdadm --detail /dev/md2
/dev/md2:
Version : 1.2
Creation Time : Tue Jul 26 23:13:59 2011
Raid Level : raid1
Array Size : 1998196216 (1905.63 GiB 2046.15 GB)
Used Dev Size : 1998196216 (1905.63 GiB 2046.15 GB)
Raid Devices : 2
Total Devices : 1
Persistence : Superblock is persistent
Update Time : Thu Jul 28 08:29:35 2011
State : clean, degraded
Active Devices : 1
Working Devices : 1
Failed Devices : 0
Spare Devices : 0
Name : pe-r910.ingres.prv:2 (local to host pe-r910.ingres.prv)
UUID : 299ea821:756847a0:4db591e4:38769641
Events : 160
Number Major Minor RaidDevice State
0 9 1 0 active sync /dev/md1
1 0 0 1 removed
[root@pe-r910 ~]# mdadm --detail /dev/md1
/dev/md1:
Version : 1.2
Creation Time : Tue Jul 26 01:05:05 2011
Raid Level : raid0
Array Size : 1998197376 (1905.63 GiB 2046.15 GB)
Raid Devices : 14
Total Devices : 14
Persistence : Superblock is persistent
Update Time : Tue Jul 26 01:05:05 2011
State : clean
Active Devices : 14
Working Devices : 14
Failed Devices : 0
Spare Devices : 0
Chunk Size : 64K
Name : pe-r910.ingres.prv:1 (local to host pe-r910.ingres.prv)
UUID : 735bd502:62ed0509:08c33e15:19ae4f6b
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 33 1 active sync /dev/sdc1
2 8 49 2 active sync /dev/sdd1
3 8 65 3 active sync /dev/sde1
4 8 81 4 active sync /dev/sdf1
5 8 97 5 active sync /dev/sdg1
6 8 113 6 active sync /dev/sdh1
7 8 129 7 active sync /dev/sdi1
8 8 145 8 active sync /dev/sdj1
9 8 161 9 active sync /dev/sdk1
10 8 177 10 active sync /dev/sdl1
11 8 193 11 active sync /dev/sdm1
12 8 209 12 active sync /dev/sdn1
13 8 225 13 active sync /dev/sdo1
[root@pe-r910 ~]# dd if=/dev/md1 bs=512K count=10000 iflag=nonblock,direct of=/dev/null
10000+0 records in
10000+0 records out
5242880000 bytes (5.2 GB) copied, 3.45236 s, 1.5 GB/s
[root@pe-r910 ~]# dd if=/dev/md2 bs=512K count=10000 iflag=nonblock,direct of=/dev/null
10000+0 records in
10000+0 records out
5242880000 bytes (5.2 GB) copied, 6.81182 s, 770 MB/s
[root@pe-r910 ~]#
обновление: это похоже на проблему только для md на md. Если я сделаю raid1 прямо на диске, его скорость чтения будет такой же, как и с диска. Поэтому я думаю, что могу перенастроить его на raid10 (набор raid1, преобразованных в radi0) вместо raid01 (2 raid0, преобразованных в raid1).
используйте --chunk = 64k или --chunk = 128k при создании устройства. Реальный размер блока см. в спецификации / тестах вашего диска.
к сожалению, нет возможности изменить это после создания.
также есть параметр стороны полосового кеша, который может влиять на
см. эту статью http://www.amiryan.org/2009/04/10/solved-linux-software-raid-5-too-slow/
Это может быть очевидно, но пробовали ли вы указать --chunk = 64k при создании устройства?