最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
服务器配置如何优化系统的磁盘读写性能
时间: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调度器与队列参数
不同磁盘类型要配不同的调度器:
- HDD用deadline:减少寻道等待,适合高并发小文件场景
- SSD或NVMe用none(noop)或mq-deadline:跳过复杂排序,降低CPU开销
- 检查当前设置:
cat /sys/block/sda/queue/scheduler - 临时切换(以sda为例):
echo none > /sys/block/sda/queue/scheduler - 永久生效需在GRUB启动参数中加
elevator=none,或通过udev规则固化
优化挂载选项与文件系统
默认挂载会频繁更新访问时间(atime),每次读文件都触发一次元数据写入:
- 加noatime:禁用访问时间更新,对Web服务、数据库等只读密集型场景效果明显
- 加barrier=0(仅限有掉电保护的SSD/NVMe):关闭写屏障,减少日志同步开销
- SSD建议用XFS或ext4,并启用TRIM:
sudo fstrim -v /;长期运行可配置systemd-timers每周自动执行 - /etc/fstab示例:
/dev/nvme0n1p1 /data xfs defaults,noatime,barrier=0 0 2
合理分配IO负载与数据布局
避免多个高IO组件争抢同一物理设备:
- 数据库主数据、WAL日志、临时表空间尽量分到不同磁盘或LVM逻辑卷
- MySQL建议:ibdata1放SSD,binlog和slow log可放独立HDD(若不依赖实时性)
- 使用
iostat -xm 1观察%util > 90%、await > 20ms的设备,再用pidstat -d 1定位具体进程 - 容器环境可用cgroup blkio限制单个MySQL容器的IOPS或带宽,防止单实例打满宿主机IO