У меня есть установка 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
Я могу придумать несколько возможных причин такого результата:
Слишком много fdatasync()
операций: в этом случае пропускная способность ограничена количеством транзакций, которые жесткий диск может выполнить в течение определенного периода времени. Для традиционных вращающихся сред с одной головкой на поверхность абсолютный максимум определяется скоростью вращения. Например. для блоков данных размером 64К вы получите только
7200rpm * 64K/rotation = 7,680 K/sec
Я подозреваю, что из-за семантики RAID 1 + 0 каждая запись будет каждый раз попадать только в одно зеркало, поскольку dd
размер блока меньше размера блока массива. Это ограничит производительность массива до производительности одного зеркала, которое для записи соответствует производительности одного диска.
В моей системе dd
с этими параметрами выполняет только один fdatasync()
позвоните перед выходом - может быть, у вас по одному на блок? Бег dd
под strace
сказал бы вам, так ли это.
Файловая система, смонтированная с sync
параметр data также будет демонстрировать аналогичное поведение.
Проблема с оборудованием - я часто видел такие задержки из-за неисправных кабелей и неисправных жестких дисков. Я бы посоветовал просмотреть ваши системные журналы и запустить smartctl
на всех ваших дисках. Также будет полезен тест чтения, поскольку он также должен зависеть от аппаратной проблемы - как ваш массив справляется с чтениями?