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

热门教程

服务器 IO 性能优化如何配

时间:2026-08-08 08:35:54 编辑:袖梨 来源:一聚教程网

服务器IO性能优化需分层精准适配:RAID按业务选型(如OLTP用RAID10)、IO调度器匹配介质(NVMe用kyber、HDD用deadline)、缓存分三层配置(Page Cache调参数、RAID卡开Write-Back+BBU、文件系统挂载优化),并以iostat/iotop/smartctl诊断真瓶颈。

服务器 IO 性能优化不是堆硬件,而是分层匹配:从磁盘阵列选型、内核调度策略,到缓存与文件系统配置,每一层都得对准业务负载。重点不在“全开”,而在“精准适配”。

RAID 级别按业务选,别只看速度

RAID 不是越高级越好,关键看读写特征和容错底线:

  1. OLTP 数据库、虚拟化平台:优先选 RAID 10 —— 读写均衡、故障容忍强(允许同组中一块盘坏),4块盘起步,性能接近 RAID 0,又保留镜像冗余。
  2. 日志或临时数据池:可用 RAID 0 —— 吞吐最高,但零容错,仅限可丢数据场景。
  3. 归档/备份存储:RAID 6 更稳妥 —— 支持两盘同时故障,容量利用率比 RAID 10 高,写性能虽弱于 RAID 10,但读密集场景影响小。
  4. 中小业务主存储:RAID 5 是折中选择 —— 成本低、读性能好,但写入需校验计算,高并发写时延迟明显,建议搭配写缓存+BBU使用。

IO 调度器要跟介质走,别沿用默认

Linux 默认的 cfq 在 SSD/NVMe 上反而拖后腿,必须换:

  1. NVMe SSD:用 nonekyber —— NVMe 自带深度队列管理,内核调度越简单越好;kyber 更适合混合读写负载。
  2. SATA/SAS SSDdeadlinemq-deadline —— 保证请求不饿死,兼顾响应延迟。
  3. 机械硬盘(HDD):仍可用 mq-deadline,避免 cfq 在高并发下引入额外延迟。
  4. 查看当前设置:cat /sys/block/sdX/queue/scheduler;临时切换:echo kyber > /sys/block/sdX/queue/scheduler;永久生效需加 elevator=kyber 到 GRUB 内核参数。

缓存配置要分三层打理

缓存不是越大越好,而是要让每一层干好自己的活:

  1. OS Page Cache:调低 vm.dirty_ratio(如设为 10)和 vm.dirty_background_ratio(如设为 5),避免脏页堆积导致突发刷盘卡顿;数据库类应用若启用了自身缓冲池(如 InnoDB Buffer Pool),可考虑启用 O_DIRECT 绕过 Page Cache。
  2. RAID 卡缓存:务必开启 Write-Back 模式 + BBU(电池/电容备份),否则断电即丢数据;Read-Ahead 可开,但仅对顺序读有效,随机读多的场景建议关闭。
  3. 文件系统挂载选项:SSD 用 noatime,nodiratime,discard,barrier=0;HDD 用 noatime,nodiratime,data=ordered;XFS 对大文件和并发更友好,EXT4 更稳,Btrfs 少用于生产核心存储。

别漏掉基础诊断这一步

优化前先确认是不是真瓶颈:

  1. iostat -x 1%util 是否常超 90%、await 是否持续 > 10ms(SSD)或 > 20ms(HDD);
  2. iotop 找出真实吃 IO 的进程;
  3. smartctl -a /dev/sdX 排除磁盘硬件隐患(坏道、重映射计数上升);
  4. 确认应用本身没做小文件高频随机写、没关 fsync、没锁表争抢——很多“IO 高”其实是代码或 SQL 问题。

热门栏目