磁盘在 LAMP 架构中扮演着重要的角色。静态文件、模板和代码都来自磁盘,组成数据库的数据表和索引也来自磁盘。对磁盘的许多调优(尤其是对于数据库)集中于避免磁盘访问,因为磁盘访问的延迟相当高。因此,花一些时间对磁盘硬件进行优化是有意义的。

  首先要做的是,确保在文件系统上禁用 atime 日志记录特性。atime 是最近访问文件的时间,每当访问文件时,底层文件系统必须记录这个时间戳。因为系统管理员很少使用 atime,禁用它可以减少磁盘访问时间。禁用这个特性的方法是,在 /etc/fstab 的第四列中添加 noatime 选项。

  演示如何启用 noatime 的 fstab 示例

  /dev/VolGroup00/LogVol00 / ext3 defaults,noatime 1 1

  LABEL=/boot /boot ext3 defaults,noatime 1 2

  devpts /dev/pts devpts gid=5,mode=620 0 0

  tmpfs /dev/shm tmpfs defaults 0 0

  proc /proc proc defaults 0 0

  sysfs /sys sysfs defaults 0 0

  LABEL=SWAP-hdb2 swap swap defaults 0 0

  LABEL=SWAP-hda3 swap swap defaults 0 0

  有多种磁盘硬件组合,而且 Linux 不一定能够探测出访问磁盘的最佳方式。可以使用 hdparm 命令查明和设置用来访问 IDE 磁盘的方法。hdparm -t /path/to/device 执行速度测试,可以将这个测试结果作为性能基准。为了使结果尽可能准确,在运行这个命令时系统应该是空闲的。

  在 /dev/hd 上执行的速度测试

  # hdparm -t /dev/hda

  /dev/hda:

  Timing buffered disk reads: 182 MB in 3.02 seconds = 60.31 MB/sec

  hdparm 的常用选项

  选项 描述

  -vi 向磁盘查询它支持的设置以及它正在使用的设置。

  -c 查询/启用 (E)IDE 32 位 I/O 支持。hdparm -c 1 /dev/hda 启用这个设置。

  -m 查询/设置每中断多扇区模式。如果设置大于零,设置值就是每个中断可以传输的最大扇区数量。

  -d 1 -X 启用直接内存访问(DMA)传输并设置 IDE 传输模式。hdparm 手册页详细说明了在 -X 后面可以设置的数字。只有在 -vi 说明目前并未使用最快速的模式的情况下,才需要进行这个设置。

  不幸的是,对于 Fiber Channel and Small Computer Systems Interface(SCSI)系统,调优依赖于具体的驱动器。

  必须将有帮助的设置添加到启动脚本中,比如 rc.local。