如何改善服务器磁盘性能


10

我有一台运行Ubuntu 10.04 LTS的HP Microserver。这是一台具有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,除非以后的版本中有一些魔术使这些工作更快。

服务器内部有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

四个内部2TB磁盘位于软件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卡连接,并包含另外四个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

这也被设置为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)

在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方面没有太多经验,所以不确定现在是否可以将它们去耦。
奥利

外部阵列确实不是问题。没有任何障碍。这是我希望获得声音的内部磁盘性能。
popey 2011年

Answers:


3

不幸的是,条带缓存仅适用于RAID5和6-RAID 0/1/10没有等效项。

您的单个驱动器的性能(按所述hdparm)看起来不错-它们均达到了该类驱动器的预期效果。

我的建议:

  1. 检查是否在BIOS中启用了AHCI,并且内部安装的驱动器未使用旧式IDE模式。MicroServer有一个被入侵的BIOS,该BIOS也为eSATA端口启用了AHCI(有关更多信息,请参见此链接)-可能值得研究外部机箱中的驱动器,尽管它们仍然受制于硬盘驱动器的限制。端口倍增器。
  2. 对所有驱动器启用NCQ,然后查看是否有所不同(可能会有所不同)。
  3. 确保文件系统设置已优化(挂载noatime,nodiratime)。您也可以禁用写障碍,但这可能太冒险了。
  4. 检查您是否从切换I / O调度程序中看到任何好处(在这里,noop可能会有所帮助)。
  5. 调整md和LVM设备的预读缓冲区: blockdev --setra <size> /dev/md1例如(其中<size>512字节的扇区)。但这只会帮助阅读。

可能会影响性能的其他两件事是分区对齐和文件系统创建参数(跨度等),但是当您使用现代工具时,这不应该成为问题。


添加了磁盘hdparm时间,并编辑了fstab(并重新安装)以使用noatime和nodiratime。这样会保留24小时。
popey 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.