Saya memiliki HP Microserver yang menjalankan Ubuntu 10,04 LTS. Ini adalah server berdaya rendah dengan 5 bay drive internal. Saya menggunakannya untuk mencadangkan server jauh, VPS, dan laptop lokal saya melalui jaringan. Saya ingin mendapatkan kinerja terbaik dari disk, tetapi saya tidak tahu apakah itu setup secara optimal, jadi saya mencari beberapa saran.
Server saya menjalankan rsnapshot beberapa kali sehari untuk membuat cadangan host jarak jauh. Bagian cadangan tambahan yang sebenarnya hanya membutuhkan sedikit waktu. Waktu yang signifikan dihabiskan untuk melakukan hal-hal seperti: -
/bin/cp -al /srv/rsnapshot/hourly.0 /srv/rsnapshot/hourly.1
Yang memakan waktu sekitar 2 jam. Saya menyadari ada bazillion file kecil di sana.
$ sudo du -hs hourly.1
659G hourly.1
Juga ketika rsnapshot menghapus cadangan lama, ini bisa memakan waktu lama: -
/bin/rm -rf /srv/rsnapshot/daily.6/
Yang memakan waktu sekitar setengah jam.
Pertanyaan saya adalah sebagai berikut, konfigurasi server dan beberapa statistik IO dirinci di bawah ini. Tentu saja saya bisa memberikan lebih banyak info debug jika perlu: -
Bagaimana saya bisa mengidentifikasi kemacetannya?
Apakah saya mencapai batas kemampuan (dengan bijaksana) dengan kotak ini?
Apakah ada tweak kinerja yang bisa saya lakukan?
Haruskah saya menggunakan level RAID yang berbeda?
Apakah masuk akal untuk menukar dua disk RAID internal (setengah dari masing-masing mirror) dengan dua 'bagian lain dari mirror lain' pada array eksternal?
Catatan: Saya agak tidak cenderung melakukan hal-hal seperti mengkompilasi kernel saya sendiri. Idealnya saya ingin tetap menggunakan 10,04 LTS, kecuali ada beberapa keajaiban di versi selanjutnya yang membuat ini bekerja lebih cepat.
Secara internal server memiliki disk boot SATA 1x160GB dan disk 4x2TB: -
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
Keempat disk 2TB internal berada dalam pengaturan MD RAID10 perangkat lunak: -
md0 : active raid10 sdg1[3] sdh1[0] sdi1[2] sdf1[1]
3907023872 blocks 64K chunks 2 near-copies [4/4] [UUUU]
Selain itu saya memiliki penutup drive EDGE10 eksternal yang terhubung melalui kartu PCI-E eSATA dan berisi empat drive lebih dari 500GB: -
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
Ini juga diatur sebagai array MD RAID10
md1 : active raid10 sdb1[1] sda1[0] sdd1[3] sdc1[2]
976767872 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md0 dan md1 digabungkan untuk membuat satu LVM besar. Catatan: Saya baru saja menambahkan array eksternal, jadi itu cukup kosong, saya tidak berpikir ada blok di sana sekarang.
Ini disajikan sebagai volume 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
Yang diformat sebagai EXT4 dan dipasang sebagai / srv: -
/dev/mapper/data-data on /srv type ext4 (rw)
Ada banyak ruang kosong.
/dev/mapper/data-data
4.5T 2.2T 2.1T 51% /srv
Informasi lain yang mungkin berguna: -
$ 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)
Ketika melakukan perintah cp selama rsnapshot saya melihat hal berikut di 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
Jadi pada dasarnya banyak menulis, banyak menunggu IO.
Jadi sekarang kotaknya tidak digunakan, saya telah menangguhkan semua pekerjaan.
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
Terlihat sangat bagus!
$ 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
sumber
bonnie++
pada setiap array secara terpisah sehingga Anda memiliki tolok ukur kecepatan dasar untuk mereka. Saya tidak punya banyak pengalaman dengan LVM jadi saya tidak yakin memisahkan mereka adalah pilihan sekarang.Jawaban:
Sayangnya strip cache hanya berlaku untuk RAID5 dan 6 - tidak ada yang setara untuk RAID 0/1/10.
Kinerja masing-masing drive Anda (sesuai per
hdparm
) terlihat baik - mereka semua berkinerja seperti yang diharapkan untuk drive dari kelas itu.Saran saya:
blockdev --setra <size> /dev/md1
misalnya (di mana<size>
sektor 512-byte). Itu hanya akan membantu membaca.Dua hal lain yang dapat memengaruhi kinerja adalah penyelarasan partisi dan parameter pembuatan sistem file (stride, dll) tetapi saat Anda menggunakan alat modern, itu seharusnya tidak menjadi masalah.
sumber