Как улучшить производительность моего сервера

10

У меня есть микросервер HP под управлением Ubuntu 10.04 LTS. Это маломощный сервер с 5 внутренними отсеками для дисков. Я использую его для резервного копирования моих удаленных серверов, VPS и локальных ноутбуков по сети. Я хочу получить максимальную производительность от дисков, но я не знаю, настроена ли она оптимально, поэтому я ищу несколько советов.

Мой сервер запускает rsnapshot несколько раз в день для резервного копирования удаленных хостов. Фактическая часть инкрементного резервного копирования занимает очень мало времени. Значительное время тратится на такие вещи, как:

/bin/cp -al /srv/rsnapshot/hourly.0 /srv/rsnapshot/hourly.1

Что занимает около 2 часов. Я понимаю, что там есть крошечные файлы.

$ sudo du -hs hourly.1
659G    hourly.1

Также, когда rsnapshot удаляет старую резервную копию, это может занять много времени: -

/bin/rm -rf /srv/rsnapshot/daily.6/

Что занимает около получаса.

Мои вопросы заключаются в следующем, конфигурация сервера и некоторые статистические данные ввода-вывода подробно описаны ниже. Я, конечно, могу предоставить больше отладочной информации, если это необходимо: -

Как я могу определить, где находятся узкие места?

Достигаю ли я границы того, на что способен (умный ввод-вывод) с этой коробкой?

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

Должен ли я использовать другой уровень RAID?

Имеет ли смысл поменять местами два внутренних диска RAID (половину каждого зеркала) с двумя «другими половинами другого зеркала» на внешнем массиве?

Примечание: я не склонен заниматься такими вещами, как компиляция собственного ядра. В идеале я бы хотел остановиться на 10,04 LTS, если только в более поздних версиях нет какой-то магии, которая заставляет все это работать намного быстрее.

Внутренне сервер имеет загрузочный диск SATA 1x160 ГБ и диски 4x2 ТБ:

Disk /dev/sde: 160.0 GB, 160041885696 bytes
Disk /dev/sdf: 2000.4 GB, 2000398934016 bytes
Disk /dev/sdh: 2000.4 GB, 2000398934016 bytes
Disk /dev/sdi: 2000.4 GB, 2000398934016 bytes
Disk /dev/sdg: 2000.4 GB, 2000398934016 bytes

Четыре внутренних диска по 2 ТБ находятся в программном обеспечении MD RAID10: -

md0 : active raid10 sdg1[3] sdh1[0] sdi1[2] sdf1[1]
      3907023872 blocks 64K chunks 2 near-copies [4/4] [UUUU]

Кроме того, у меня есть внешний отсек для дисков EDGE10, который подключен через карту PCI-E eSATA и содержит еще четыре накопителя емкостью 500 ГБ: -

Disk /dev/sda: 500.1 GB, 500107862016 bytes
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
Disk /dev/sdc: 500.1 GB, 500107862016 bytes
Disk /dev/sdd: 500.1 GB, 500107862016 bytes

Это также настраивается как массив MD RAID10

md1 : active raid10 sdb1[1] sda1[0] sdd1[3] sdc1[2]
      976767872 blocks 64K chunks 2 near-copies [4/4] [UUUU]

md0 и md1 объединяются в один большой LVM. Примечание: я только недавно добавил внешний массив, так что он почти пустой, я не думаю, что сейчас есть какие-то блоки.

Это представлено в виде тома LVM:

--- Logical volume ---
LV Name                /dev/data/data
VG Name                data
LV UUID                amZCgU-sQLi-R363-dUFx-Bcdf-iwlt-ZNnDp8
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                4.54 TiB
Current LE             1190134
Segments               2
Allocation             inherit
Read ahead sectors     auto
- currently set to     512
Block device           251:0

Который отформатирован как EXT4 и смонтирован как / srv: -

/dev/mapper/data-data on /srv type ext4 (rw)

Там много свободного места.

/dev/mapper/data-data
                      4.5T  2.2T  2.1T  51% /srv

Другая информация, которая может быть полезна:

$ uname -a
Linux ubuntuserver 2.6.32-32-server #62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011 x86_64 GNU/Linux

,

00:11.0 SATA controller: ATI Technologies Inc SB700/SB800 SATA Controller [AHCI mode] (rev 40)
02:00.0 RAID bus controller: Silicon Image, Inc. SiI 3132 Serial ATA Raid II Controller (rev 01)

При выполнении команды cp во время rsnapshot я вижу следующее в iostat: -

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.55    0.00    5.47   66.14    0.00   27.85

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdd               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sde               0.00     0.00    0.10    0.00     0.80     0.00     8.00     0.00    0.00   0.00   0.00
sdf               0.00   407.50    0.00   66.80     0.00  3790.40    56.74   124.86 1524.88  13.55  90.50
sdh               0.00   406.90    0.00   66.90     0.00  3790.40    56.66    92.89 1230.52  13.21  88.40
sdi               0.00   407.80    5.50   70.20    44.00  3824.00    51.10   113.83 1333.84  12.34  93.40
sdg               0.00   406.80    6.10   71.60    48.80  3827.20    49.88    64.32  787.68  11.69  90.80
md0               0.00     0.00   11.50 1484.60    92.00 11876.80     8.00     0.00    0.00   0.00   0.00
dm-0              0.00     0.00   11.50 1484.70    92.00 11877.60     8.00  5331.18  471.91   0.63  94.70
md1               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

Так что в основном много писем, много IO ждут.

Так что сейчас коробка пуста, я приостановил все работы.

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00  100.00

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdd               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sde               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdf               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdh               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdi               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdg               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
md0               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
md1               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

Выглядит персик!

$ sudo hdparm -T -t /dev/sd[a-i]

/dev/sda:
 Timing cached reads:   2532 MB in  2.00 seconds = 1265.95 MB/sec
 Timing buffered disk reads:  270 MB in  3.02 seconds =  89.53 MB/sec

/dev/sdb:
 Timing cached reads:   2516 MB in  2.00 seconds = 1258.07 MB/sec
 Timing buffered disk reads:  264 MB in  3.02 seconds =  87.37 MB/sec

/dev/sdc:
 Timing cached reads:   2442 MB in  2.00 seconds = 1220.80 MB/sec
 Timing buffered disk reads:  272 MB in  3.00 seconds =  90.60 MB/sec

/dev/sdd:
 Timing cached reads:   2520 MB in  2.00 seconds = 1259.64 MB/sec
 Timing buffered disk reads:  272 MB in  3.02 seconds =  90.07 MB/sec

/dev/sde:
 Timing cached reads:   2524 MB in  2.00 seconds = 1261.48 MB/sec
 Timing buffered disk reads:  306 MB in  3.01 seconds = 101.56 MB/sec

/dev/sdf:
 Timing cached reads:   2366 MB in  2.00 seconds = 1183.28 MB/sec
 Timing buffered disk reads:  388 MB in  3.01 seconds = 128.88 MB/sec

/dev/sdg:
 Timing cached reads:   2536 MB in  2.00 seconds = 1267.52 MB/sec
 Timing buffered disk reads:  400 MB in  3.00 seconds = 133.12 MB/sec

/dev/sdh:
 Timing cached reads:   2538 MB in  2.00 seconds = 1269.08 MB/sec
 Timing buffered disk reads:  426 MB in  3.00 seconds = 141.90 MB/sec

/dev/sdi:
 Timing cached reads:   2538 MB in  2.00 seconds = 1268.57 MB/sec
 Timing buffered disk reads:  402 MB in  3.01 seconds = 133.69 MB/sec
попей
источник
Хм. Я ненавижу разделять структуры дисков по разным аппаратным средствам, потому что такие вещи трудно устранить. Обычно я рекомендую запускать что-то вроде bonnie++каждого массива в отдельности, поэтому у вас есть базовые показатели скорости для них. У меня нет особого опыта работы с LVM, поэтому я не уверен, что разделение их - вариант сейчас.
Оли
Внешний массив действительно не проблема. Там нет блоков на нем. Это внутренняя производительность диска, я надеюсь получить звук.
Попей

Ответы:

3

К сожалению, полосовой кеш относится только к RAID5 и 6 - нет эквивалента для RAID 0/1/10.

Производительность ваших отдельных дисков (в соответствии с hdparm) выглядит нормально - все они работают так, как ожидается для дисков этого класса.

Мои предложения:

  1. Убедитесь, что AHCI включен в BIOS и что установленные на нем диски не используют устаревший режим IDE. Существует доступный взломанный BIOS для MicroServer, который также включает AHCI для порта eSATA (см. Эту ссылку для получения дополнительной информации) - возможно, стоит изучить диски во внешнем корпусе, хотя они все еще будут ограничены тем, что находятся за Множитель порта.
  2. Включите NCQ для всех дисков и посмотрите, будет ли это иметь значение (может, а может и нет).
  3. Убедитесь, что настройки файловой системы оптимизированы (монтирование noatime, nodiratime). Вы также можете отключить барьеры записи , но это может быть слишком рискованным.
  4. Проверьте, видите ли вы какую-либо выгоду от переключения планировщика ввода / вывода (здесь может помочь noop).
  5. Настройте буфер упреждающего чтения для устройств md и LVM: blockdev --setra <size> /dev/md1например (где <size>512-байтовые сектора). Это только поможет читать, хотя.

Еще две вещи, которые могут повлиять на производительность, - это выравнивание разделов и параметры создания файловой системы (шаг и т. Д.), Но поскольку вы используете современные инструменты, это не должно быть проблемой.

mjturner
источник
Добавлены времена диска hdparm и отредактированы fstab (и перемонтированы) для использования noatime и nodiratime. Оставлю это на 24 часа вот так.
Попей