У меня есть HP Microserver под управлением Ubuntu 10.04 LTS. Это - сервер низкой мощности с 5 отсеками внутреннего диска. Я использую его для резервного копирования моих удаленных серверов, VPSs и локальных ноутбуков по сети. Я хочу получить лучшую производительность от дисков, но я не знаю, является ли это установка оптимально, таким образом, я ищу некоторый совет.
Мой сервер выполняет 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/
Который берет о получасе.
Мои вопросы следующим образом, конфигурация сервера и некоторая статистика IO подробно изложены ниже. Я могу, конечно, обеспечить больше информации об отладке, если необходимо:-
Как я могу определить, где узкие места?
Я достигаю пределов того, что способно (мудрый IO) с этим полем?
Есть ли какие-либо тонкие настройки производительности, которые я мог сделать?
Я должен использовать другой уровень 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
Это - также установка как массив RAID10 MD
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
К сожалению, кэш дорожки только относится к RAID5 и 6 - нет никакого эквивалента для RAID 0/1/10.
Производительность Ваших отдельных дисков (согласно hdparm
) выглядит хорошо - они все работают как ожидалось для дисков того класса.
Мои предложения:
blockdev --setra <size> /dev/md1
например (где <size>
512-байтовые секторы). Это только поможет чтениям все же.Двумя другими вещами, которые могут повлиять на производительность, является выравнивание раздела и параметры создания файловой системы (шаг, и т.д.), но поскольку Вы используете современные инструменты, которые не должны быть проблемой.