核心是按实际负载关掉不必要的元数据开销,重点调noatime、barrier=0(仅限UPS/BBU环境)、commit=60等真正起效选项;查真实挂载参数用findmnt而非fstab,Ext4优先noatime(隐含nodiratime),XFS大文件场景需inode64和logbsize=256k。

核心是按实际负载关掉不必要的元数据开销,而不是堆参数。重点调几个真正起效的选项,就能明显改善读写响应和吞吐。
查当前挂载参数,别只看 /etc/fstab
fstab 只是启动时的“愿望清单”,运行中可能已被覆盖。真实生效的参数得从内核读:
-
查设备:
findmnt /dev/sdb1—— 输出字段对齐、选项完整,比如rw,noatime,stripe=400 -
查挂载点:
findmnt /data—— 比mount | grep更可靠,不怕路径含空格或特殊字符 -
按类型筛选:
findmnt -o SOURCE,TARGET,FSTYPE,OPTIONS -t xfs—— 避免混入 tmpfs、proc 等伪文件系统
Ext4 优先关 atime 类更新
默认 relatime 仍会周期性写盘,小文件高频读(如日志轮转、Web 缓存)下容易拖慢随机读延迟。
- 确认是否启用:
findmnt -o OPTIONS / | grep -E 'atime|noatime',输出含relatime或空白,说明没关 - 临时生效:
sudo mount -o remount,noatime / - 永久生效:编辑
/etc/fstab,在对应行第4字段追加,noatime,例如:UUID=xxx / ext4 defaults,noatime 0 1 -
nodiratime 不用单独加 —— 现代内核下
noatime已隐含目录访问时间不更新,加了反而可能干扰备份工具
XFS 大文件写卡顿,调 inode64 和 logbsize
默认 32 位 inode 在超 1TB 且小文件多时易碎片化;日志块太小则 journal 提交太频繁。
- 查 inode 模式:
xfs_info /data | grep ^agcount,若agcount > 16且挂载选项里没ino64,建议启用 - 查日志块大小:
xfs_info /data | grep logbsize,低于256k时,视频转码类高吞吐写入易成瓶颈 - 重挂载调整:
sudo mount -o remount,inode64,logbsize=256k /data
SSD 场景补充关键项
针对 NVMe 或 SATA SSD,避免默认参数浪费硬件能力:
-
barrier=0—— 仅限有 UPS 或掉电保护缓存(BBU/PLP)环境,否则禁用写屏障风险极高 -
discard不建议直接挂载时启用,改用定时fstrim更稳妥 - Ext4 可考虑
commit=60延长日志提交间隔,适合日志卷或临时缓存盘(断电最多丢 60 秒事务) - 别用
defaults—— 它默认含atime,高频读场景就是性能杀手











