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

Низкая производительность чтения программного обеспечения raid10 в Linux

Недавно я установил новый файловый сервер на базе Linux. Я использую дистрибутив Ubuntu 10.10. Я создал два программных рейда следующим образом:

mc@vmr:~$ cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid1 sdf1[1] sdh1[3] sde1[0] sdg1[2]
  19530688 blocks [4/4] [UUUU]

md1 : active raid10 sdh3[3] sdf3[1] sde3[0] sdg3[2]
  1912461184 blocks 64K chunks 2 near-copies [4/4] [UUUU]

Устройство / dev / md0 (raid1) монтируется в «/», а / dev / md1 (raid10) монтируется в «/ home». К сожалению, производительность моего raid10 оставляет желать лучшего. Вот производительность каждого жесткого диска:

mc@vmr:~$ sudo hdparm -t /dev/sdh3  
/dev/sdh3:
 Timing buffered disk reads:  410 MB in  3.00 seconds = 136.57 MB/sec

mc@vmr:~$ sudo hdparm -t /dev/sdf3
/dev/sdf3:
 Timing buffered disk reads:  402 MB in  3.01 seconds = 133.60 MB/sec

mc@vmr:~$ sudo hdparm -t /dev/sde3
/dev/sde3:
 Timing buffered disk reads:  418 MB in  3.01 seconds = 139.10 MB/sec

mc@vmr:~$ sudo hdparm -t /dev/sdg3
/dev/sdg3:
 Timing buffered disk reads:  406 MB in  3.00 seconds = 135.32 MB/sec

Естественно, я ожидал, что скорость чтения будет около 260 МБ / с, но вместо этого я получил следующее:

mc@vmr:~$ sudo hdparm -t /dev/md1
/dev/md1:
 Timing buffered disk reads:  172 MB in  3.04 seconds =  56.64 MB/sec

Сначала я предположил, что hdparm Методу тестирования нельзя доверять на 100%, поэтому я провел тест на чтение в реальном мире, и производительность все еще не соответствовала ожидаемой (random.bin помещен в raid10):

mc@vmr:~$ dd if=random.bin of=/dev/null bs=256k
38800+0 records in
38800+0 records out
10171187200 bytes (10 GB) copied, 96.3874 s, 106 MB/s

Наконец, я хотел бы сказать, что производительность чтения raid1 в точности такая, как ожидалось:

mc@vmr:~$ sudo hdparm -t /dev/md0
/dev/md0:
 Timing buffered disk reads:  412 MB in  3.01 seconds = 136.91 MB/sec

Кто-нибудь сталкивался с такой проблемой? Какие-нибудь подсказки?

Я только что снова создал свой массив md1:

leo@stellie:~$ cat /proc/mdstat 
Personalities : [raid1] [raid10] 
md1 : active raid10 sdc6[0] sdb6[2] sda6[1]
      32807040 blocks super 1.2 64K chunks 2 far-copies [3/3] [UUU] 
md0 : active raid1 sda1[0] sdb1[2] sdc1[1]
      248896 blocks [3/3] [UUU]

Обратите внимание: 1. версия метаданных была обновлена ​​до 1.2 2. удаленные копии вместо близких копий

leo@stellie:~$ sudo hdparm -t /dev/md1
/dev/md1:
 Timing buffered disk reads: 372 MB in  3.02 seconds = 123.29 MB/sec

Я провел еще несколько тестов hdparm, пока массив еще не использовался, и: - 64К фрагментов и почти копий работали лучше, чем раньше (~ 70 МБ / сек) - 512К фрагментов имели более низкую скорость передачи (~ 50 МБ / с) - максимальная скорость чтения достигнуто с удаленными копиями и фрагментами размером 64К

Как вы сказали, мне тоже нужно провести тест с iozone.

64K фрагментов

- слишком маленький. Практически все операции ввода-вывода. имеет заметную вероятность задействовать 2 диска с таким размером страйпа, что означает больше потраченных впустую операций ввода-вывода. Я предлагаю не менее 512 КБ и может быть 1-2 МБ.

Кроме того, вы можете найти эту мою ответ полезно.

Есть несколько вариантов

1. Возникла проблема с:

  • прошивка жесткого диска
  • прошивка материнской платы
  • прошивка sata контроллера
  • ошибка в Ubuntu

2. попробуйте настроить несколько вещей

  • hdparm -t --direct / dev / md0
  • blockdev --setra 16384
  • попробуйте больший блок с raid10 (не уверен, что это хорошо)

в любом случае hdparm на самом деле не лучшее программное обеспечение для тестирования производительности - попробуйте bonni ++, iozone или dd