У мене є мікросервер 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/
На що йде близько півгодини.
Мої запитання наступні: конфігурація сервера та деякі статистичні дані IO детально описані нижче. Я, звичайно, можу надати більше інформації про налагодження, якщо потрібно: -
Як я можу визначити, де є вузькі місця?
Чи досягаю я меж того, на що здатний (IO мудрий) за допомогою цього поля?
Чи можна змінити ефективність роботи?
Чи варто використовувати інший рівень RAID?
Чи має сенс замінити два внутрішні диски RAID (половина кожного дзеркала) двома "іншими половинками іншого дзеркала" на зовнішній масив?
Примітка: Я дещо не схильний робити такі речі, як складання власного ядра. В ідеалі я хотів би дотримуватися 10,04 LTS, якщо тільки в пізніших версіях не є якась магія, яка робить це все набагато швидшим.
Внутрішній сервер має завантажувальний диск SATA 1х160 ГБ та диски 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, тому я не впевнений, що їх роз'єднання - це варіант.