一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

服务器配置如何优化系统的磁盘读写性能

时间:2026-08-31 19:22:49 编辑:袖梨 来源:一聚教程网

直接换SSD、调调度器、关atime、分设备存数据四步可解决大多数磁盘读写慢问题:NVMe SSD随机IOPS达5万+,远超HDD的百级;HDD配deadline调度器,SSD/NVMe用none或mq-deadline;挂载加noatime和barrier=0(有掉电保护时);数据库主数据、WAL日志等应分置不同物理盘。

直接换SSD、调调度器、关atime、分设备存数据,这四步能解决大多数磁盘读写慢的问题。

选对存储硬件和接口

机械硬盘(HDD)的随机IOPS通常只有100左右,而一块普通NVMe SSD轻松突破5万。如果还在用SATA SSD,换成PCIe 4.0 NVMe可提升2–3倍吞吐;若已有NVMe,确认是否启用了多队列(multi-queue)支持——Linux 5.0+默认开启,能更好利用多核CPU处理IO请求。RAID 10在4块盘以上时,比单盘顺序读写提速近一倍,且具备容错能力。

调整IO调度器与队列参数

不同磁盘类型要配不同的调度器:

  1. HDD用deadline:减少寻道等待,适合高并发小文件场景
  2. SSD或NVMe用none(noop)或mq-deadline:跳过复杂排序,降低CPU开销
  3. 检查当前设置:cat /sys/block/sda/queue/scheduler
  4. 临时切换(以sda为例):echo none > /sys/block/sda/queue/scheduler
  5. 永久生效需在GRUB启动参数中加elevator=none,或通过udev规则固化

优化挂载选项与文件系统

默认挂载会频繁更新访问时间(atime),每次读文件都触发一次元数据写入:

  1. noatime:禁用访问时间更新,对Web服务、数据库等只读密集型场景效果明显
  2. barrier=0(仅限有掉电保护的SSD/NVMe):关闭写屏障,减少日志同步开销
  3. SSD建议用XFS或ext4,并启用TRIM:sudo fstrim -v /;长期运行可配置systemd-timers每周自动执行
  4. /etc/fstab示例:/dev/nvme0n1p1 /data xfs defaults,noatime,barrier=0 0 2

合理分配IO负载与数据布局

避免多个高IO组件争抢同一物理设备:

  1. 数据库主数据、WAL日志、临时表空间尽量分到不同磁盘或LVM逻辑卷
  2. MySQL建议:ibdata1放SSD,binlog和slow log可放独立HDD(若不依赖实时性)
  3. 使用iostat -xm 1观察%util > 90%、await > 20ms的设备,再用pidstat -d 1定位具体进程
  4. 容器环境可用cgroup blkio限制单个MySQL容器的IOPS或带宽,防止单实例打满宿主机IO

热门栏目