Назад | Перейти на главную страницу

как получить размеры блока больше 4k при чтении из тома md raid1

Я хотел настроить конфигурацию 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 при создании устройства?