Sunucu disk performansımı nasıl geliştirebilirim


10

Ubuntu 10.04 LTS çalıştıran bir HP Microserver'ım var. 5 dahili sürücü bölmesine sahip düşük güçlü bir sunucudur. Uzak sunucularımı, VPS'leri ve yerel dizüstü bilgisayarlarımı ağ üzerinden yedeklemek için kullanıyorum. Disklerden en iyi performansı almak istiyorum, ancak en iyi şekilde ayarlanıp ayarlanmadığını bilmiyorum, bu yüzden bazı tavsiyeler arıyorum.

Sunucum uzaktaki ana bilgisayarları yedeklemek için günde birkaç kez rsnapshot çalıştırıyor. Gerçek artımlı yedek parça çok az zaman alır. Önemli zaman harcıyor: -

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

Bu yaklaşık 2 saat sürer. İçinde bazilyonlarca küçük dosya olduğunu fark ettim.

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

Ayrıca rsnapshot eski bir yedeği sildiğinde, bu uzun zaman alabilir: -

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

Bu yaklaşık yarım saat sürer.

Sorularım aşağıdaki gibidir, sunucunun yapılandırması ve bazı IO istatistikleri aşağıda ayrıntılı olarak verilmektedir. Tabii gerekirse daha fazla hata ayıklama bilgi sağlayabilir: -

Darboğazların nerede olduğunu nasıl belirleyebilirim?

Bu kutu ile yetenekli olanların sınırlarına mı ulaşıyorum?

Yapabileceğim performans değişiklikleri var mı?

Farklı bir RAID seviyesi kullanmalı mıyım?

Dahili RAID disklerinden ikisini (her aynanın yarısı) harici dizideki iki 'diğer aynanın diğer yarısı' ile değiştirmek mantıklı olur mu?

Not: Kendi çekirdeğimi derlemek gibi şeyler yapmaya meyilli değilim. İdeal olarak, sonraki sürümlerde tüm bunların çok daha hızlı çalışmasını sağlayan sihir olmadıkça, 10.04 LTS'ye bağlı kalmak istiyorum.

Dahili olarak sunucunun 1x160GB SATA önyükleme diski ve 4x2TB diskleri vardır: -

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

Dört dahili 2 TB disk bir yazılım MD RAID10 kurulumundadır: -

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

Ayrıca, PCI-E eSATA kartı ile bağlı ve 500GB'lık dört sürücü içeren harici bir EDGE10 sürücü kasası var: -

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

Bu aynı zamanda bir MD RAID10 dizisi olarak da kurulur

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

md0 ve md1, büyük bir LVM yapmak için birleştirilir. Not: Sadece son zamanlarda harici diziyi ekledim, bu yüzden oldukça boş, şu anda üzerinde herhangi bir blok olduğunu düşünmüyorum.

Bu bir LVM hacmi olarak sunulur:

--- 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 olarak biçimlendirilmiş ve / srv olarak monte edilmiştir: -

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

Bol miktarda boş alan var.

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

Yararlı olabilecek diğer bilgiler: -

$ 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)

Rsnapshot sırasında cp komutu yaparken iostat'ta aşağıdakileri görüyorum: -

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

Temelde çok sayıda yazar, bol miktarda IO bekleyin.

Şu an kutu boşta, tüm işleri askıya aldım.

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

Şeftali gibi görünüyor!

$ 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

Hmm. Disk yapılarını farklı donanımlar arasında bölmekten nefret ediyorum çünkü bu tür şeyleri sorun gidermeyi çok zorlaştırıyor. Normalde bonnie++her dizide ayrı bir şey çalıştırmayı öneriyorum , böylece onlar için temel hız kriterleri var. LVM ile ilgili çok fazla deneyimim yok, bu yüzden onları ayırmanın bir seçenek olduğundan emin değilim.
Oli

Harici dizi gerçekten sorun değil. Üzerinde blok yok. Ses almayı umduğum dahili disk performansı.
popey

Yanıtlar:


3

Maalesef şerit önbelleği yalnızca RAID5 ve 6 için geçerlidir - RAID 0/1/10 için eşdeğeri yoktur.

Bireysel sürücülerinizin performansı (başına göre hdparm) iyi görünüyor - hepsi o sınıftaki sürücüler için beklendiği gibi çalışıyor.

Benim önerilerim:

  1. AHCI'nin BIOS'ta etkinleştirildiğinden ve dahili olarak takılan sürücülerin eski IDE modunu kullanmadığından emin olun. MicroServer için eSATA bağlantı noktası için AHCI'yi de etkinleştiren saldırıya uğramış bir BIOS var ( daha fazla bilgi için bu bağlantıya bakın ) - harici kasada bulunan sürücüler için araştırmaya değer olabilir, ancak yine de bir bağlantı noktası çarpanı.
  2. Tüm sürücüler için NCQ'yu etkinleştirin ve bunun bir fark yaratıp yaratmadığına bakın (olabilir, olmayabilir).
  3. Dosya sistemi ayarlarının optimize edildiğinden emin olun (montaj noatime, nodiratime). Yazma engellerini de devre dışı bırakabilirsiniz , ancak bu çok riskli olabilir.
  4. I / O zamanlayıcısını değiştirmenin herhangi bir faydası olup olmadığını kontrol edin (burada noop yardımcı olabilir).
  5. Hem md hem de LVM aygıtları için okuma önbelleğini ayarlayın: blockdev --setra <size> /dev/md1örneğin ( <size>512 bayt sektörler). Bu sadece okumalara yardımcı olacaktır.

Performansı etkileyebilecek diğer iki şey bölüm hizalama ve dosya sistemi oluşturma parametreleri (adım vb.) Ancak modern araçları kullanırken bu bir sorun olmamalı.


Disk hdparm süreleri eklendi ve noatime ve nodiratime kullanmak için fstab (ve reounted) 'i düzenledi. 24 saat böyle bırakacak.
popey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.