サーバーディスクのパフォーマンスを向上させる方法


10

Ubuntu 10.04 LTSを実行しているHPマイクロサーバーがあります。5つの内部ドライブベイを備えた低電力サーバーです。私はそれを使用して、リモートサーバー、VPS、ローカルラップトップをネットワーク経由でバックアップします。ディスクから最高のパフォーマンスを得たいのですが、最適にセットアップされているかどうかわからないので、アドバイスを探しています。

私のサーバーは、リモートホストをバックアップするために1日に複数回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/

約30分かかります。

私の質問は次のとおりです。サーバーの構成といくつかのIO統計は以下に詳述されています。もちろん、必要に応じて、より多くのデバッグ情報を提供できます。

ボトルネックの場所を特定するにはどうすればよいですか?

このボックスでできること(IOに関して)の制限に達していますか?

私ができるパフォーマンスの微調整はありますか?

別のRAIDレベルを使用する必要がありますか?

2つの内部RAIDディスク(各ミラーの半分)を、外部アレイ上の2つの「他のミラーの他の半分」と交換することは理にかなっていますか?

注:私は自分のカーネルをコンパイルするようなことをする傾向はありません。理想的に私は10.04 LTSを使い続けたいと思っていますが、それより後のバージョンでこれがすべてより速く動作するようにする魔法がない限りは。

内部的にサーバーには1x160GB SATAブートディスクと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

4つの内蔵2TBディスクは、ソフトウェアMD RAID10セットアップにあります。

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

さらに、PCI-E eSATAカードを介して接続され、500GBのドライブがさらに4台含まれる外部EDGE10ドライブエンクロージャーがあります。

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を組み合わせて、1つの大きな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)

rsnapshot中にcpコマンドを実行すると、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の経験があまりないので、LVMを分離することが今の選択肢かどうかはわかりません。
オリ

外部配列は本当に問題ではありません。その上にブロックはありません。それは私が音を得るために望んでいる内部ディスクパフォ​​ーマンスです。
ポピー

回答:


3

残念ながら、ストライプキャッシュはRAID5および6にのみ適用されます。RAID0/1/10に相当するものはありません。

個々のドライブのパフォーマンス(ごとにhdparm)は問題なく見えます-それらはすべて、そのクラスのドライブで期待どおりに実行されています。

私の提案:

  1. BIOSでAHCIが有効になっていて、内部に取り付けられたドライブがレガシーIDEモードを使用していないことを確認します。eSATAポートのAHCIも有効にするMicroServerのハッキングされたBIOSがあります(詳細については、このリンク参照してください)-外部エンクロージャー内のドライブを調査する価値がありますが、ポート乗数。
  2. すべてのドライブに対してNCQを有効にし、それが違いを生むかどうかを確認します(そうでない場合もあります)。
  3. ファイルシステム設定が最適化されていることを確認してください(noatime、nodiratimeのマウント)。書き込みバリアを無効にすることもできますが、リスクが高すぎる可能性があります。
  4. I / Oスケジューラーの切り替えによるメリットがあるかどうかを確認します(noopが役立ちます)。
  5. mdデバイスとLVMデバイスの両方の先読みバッファを調整します。 blockdev --setra <size> /dev/md1たとえば、<size>512バイトのセクターです。ただし、それは読み取りにのみ役立ちます。

パフォーマンスに影響を与える可能性のある他の2つの要素は、パーティションアライメントとファイルシステム作成パラメーター(ストライドなど)ですが、最新のツールを使用しているので、これは問題になりません。


ディスクhdparm時間を追加し、fstabを編集(および再マウント)してnoatimeおよびnodiratimeを使用するようにしました。そのように24時間放置します。
ポピー、2011年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.