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

Рейд 10 - Очень медленно

У меня есть установка Software Raid 10, она отлично работает несколько месяцев.

Когда я сделал быстрый тест скорости HD:

dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync

Это длилось вечно, и мне пришлось его прекратить, результат был:

1073741824 байта (1,1 ГБ) скопировано, 151,27 с, 7,1 МБ / с

Что вызвало это?

[root@host ~]# cat /proc/mdstat
Personalities : [raid1] [raid10]
md2 : active raid1 sdc1[4] sdd1[3] sdb1[1] sda1[0]
      204788 blocks super 1.0 [4/4] [UUUU]

md127 : active raid10 sdc4[4] sdb4[1] sdd4[3] sda4[0]
      1915357184 blocks super 1.2 256K chunks 2 near-copies [4/4] [UUUU]

md1 : active raid1 sdc3[4] sdb3[1] sdd3[3] sda3[0]
      8387576 blocks super 1.1 [4/4] [UUUU]

md0 : active raid1 sdc2[4] sda2[0] sdb2[1] sdd2[3]
      10484668 blocks super 1.1 [4/4] [UUUU]
      bitmap: 1/1 pages [4KB], 65536KB chunk

Время работы:

[root@host ~]# uptime
 18:50:28 up 105 days, 11:34,  1 user,  load average: 0.04, 0.05, 0.00

объем памяти

[root@host ~]# free -m
              total       used       free     shared    buffers   cached 
 Mem:         15893      15767        125          0        461    14166
 -/+ buffers/cache:       1139      14753 
 Swap:         8190          9       8181

Спецификация сервера:

Xeon E3-1230

16 ГБ DDR-3 ECC

4 порта SATA 1 ТБ, 7200 об / мин (программный RAID)

У меня есть уведомление, когда я это сделаю fdisk -l команда - получить кучу недействительных разделов, это как-то связано? Если да, то как исправить?

[root@host ~]# fdisk -l

Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000d1a79

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          26      204800   fd  Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sda2              26        1332    10485760   fd  Linux raid autodetect
/dev/sda3            1332        2376     8388608   fd  Linux raid autodetect
/dev/sda4            2376      121601   957679840+  fd  Linux raid autodetect

Disk /dev/sdb: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x000303b7

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1          26      204800   fd  Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sdb2              26        1332    10485760   fd  Linux raid autodetect
/dev/sdb3            1332        2376     8388608   fd  Linux raid autodetect
/dev/sdb4            2376      121601   957679840+  fd  Linux raid autodetect

Disk /dev/sdc: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

   Device Boot      Start         End      Blocks   Id  System
/dev/sdc1   *           1          26      204800   fd  Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sdc2              26        1332    10485760   fd  Linux raid autodetect
/dev/sdc3            1332        2376     8388608   fd  Linux raid autodetect
/dev/sdc4            2376      121601   957679840+  fd  Linux raid autodetect

Disk /dev/sdd: 1000.2 GB, 1000204886016 bytes
255 heads, 63 sectors/track, 121601 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x0006436c

   Device Boot      Start         End      Blocks   Id  System
/dev/sdd1   *           1          26      204800   fd  Linux raid autodetect
Partition 1 does not end on cylinder boundary.
/dev/sdd2              26        1332    10485760   fd  Linux raid autodetect
/dev/sdd3            1332        2376     8388608   fd  Linux raid autodetect
/dev/sdd4            2376      121601   957679840+  fd  Linux raid autodetect

Disk /dev/md0: 10.7 GB, 10736300032 bytes
2 heads, 4 sectors/track, 2621167 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

Disk /dev/md0 doesn't contain a valid partition table

Disk /dev/md1: 8588 MB, 8588877824 bytes
2 heads, 4 sectors/track, 2096894 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

Disk /dev/md1 doesn't contain a valid partition table

Disk /dev/md127: 1961.3 GB, 1961325756416 bytes
2 heads, 4 sectors/track, 478839296 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 262144 bytes / 524288 bytes
Disk identifier: 0x00000000

Disk /dev/md127 doesn't contain a valid partition table

Disk /dev/md2: 209 MB, 209702912 bytes
2 heads, 4 sectors/track, 51197 cylinders
Units = cylinders of 8 * 512 = 4096 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x00000000

Disk /dev/md2 doesn't contain a valid partition table

Я могу придумать несколько возможных причин такого результата:

  1. Слишком много fdatasync() операций: в этом случае пропускная способность ограничена количеством транзакций, которые жесткий диск может выполнить в течение определенного периода времени. Для традиционных вращающихся сред с одной головкой на поверхность абсолютный максимум определяется скоростью вращения. Например. для блоков данных размером 64К вы получите только

    7200rpm * 64K/rotation = 7,680 K/sec
    

    Я подозреваю, что из-за семантики RAID 1 + 0 каждая запись будет каждый раз попадать только в одно зеркало, поскольку dd размер блока меньше размера блока массива. Это ограничит производительность массива до производительности одного зеркала, которое для записи соответствует производительности одного диска.

    В моей системе dd с этими параметрами выполняет только один fdatasync() позвоните перед выходом - может быть, у вас по одному на блок? Бег dd под strace сказал бы вам, так ли это.

  2. Файловая система, смонтированная с sync параметр data также будет демонстрировать аналогичное поведение.

  3. Проблема с оборудованием - я часто видел такие задержки из-за неисправных кабелей и неисправных жестких дисков. Я бы посоветовал просмотреть ваши системные журналы и запустить smartctl на всех ваших дисках. Также будет полезен тест чтения, поскольку он также должен зависеть от аппаратной проблемы - как ваш массив справляется с чтениями?