ubuntu缓存如何减少磁盘I/O
导读:Ubuntu减少磁盘 I/O 的实用做法 一 先明确目标与风险 Linux 会把空闲内存用于 Page Cache、Buffer、dentry/inode 等,以加速文件与块设备访问;这并不会占用“硬盘空间”,反而能显著减少对磁盘的实际读...
Ubuntu减少磁盘 I/O 的实用做法
一 先明确目标与风险
- Linux 会把空闲内存用于 Page Cache、Buffer、dentry/inode 等,以加速文件与块设备访问;这并不会占用“硬盘空间”,反而能显著减少对磁盘的实际读写次数。因此,盲目“清空缓存”通常只会让后续访问变慢,仅在特殊场景(如基准测试、脏数据回写验证)才需要临时使用。判断内存压力的正确方式是观察 available 与 swap 的 si/so,而不是把 buff/cache 当成“内存不够”的信号。
二 减少不必要的磁盘写 I/O
- 挂载选项降写频
- 在 /etc/fstab 中为不常改动的目录添加 noatime(必要时用 nodiratime),避免每次访问都更新“上次访问时间”。示例:
/dev/sda1 / ext4 noatime,errors=remount-ro 0 1,修改后执行sudo mount -a生效。
- 在 /etc/fstab 中为不常改动的目录添加 noatime(必要时用 nodiratime),避免每次访问都更新“上次访问时间”。示例:
- 降低脏页回写压力(权衡数据滞留内存时间)
- 适度增大后台回写阈值,减少回写次数:
sudo sysctl -w vm.dirty_background_ratio=10 - 适度增大“必须回写”的阈值,允许更长时间聚合脏页:
sudo sysctl -w vm.dirty_ratio=40 - 缩短回写间隔,避免堆积:
sudo sysctl -w vm.dirty_writeback_centisecs=500 - 提示:数值过大可能提升意外掉电时的数据丢失窗口,过小会增加 I/O 次数,需结合业务与 UPS 情况调优。
- 适度增大后台回写阈值,减少回写次数:
- 降低 swap 倾向,减少“写盘换页”
sudo sysctl -w vm.swappiness=10(默认通常为 60;更低表示更少使用 swap,更多依赖内存与缓存;数据库等内存敏感负载常用更低值)。
- 日志与包管理器的“降写”
- 限制 systemd 日志体积:
sudo journalctl --vacuum-size=100M - 清理 APT 包缓存:
sudo apt-get clean(释放 /var/cache/apt/archives 占用的磁盘空间,避免长期累积写盘)。
- 限制 systemd 日志体积:
三 降低不必要的磁盘读 I/O
- 调整块设备预读(顺序读场景收益明显)
- 查看当前预读:
blockdev --getra /dev/sda - 适当增大预读(如 4096–16384 扇区,视磁盘而定):
sudo blockdev --setra 4096 /dev/sda - 说明:随机读为主的服务(数据库随机访问)不宜过大,顺序读(大文件传输、备份)可适当增大。
- 查看当前预读:
- 避免频繁目录遍历带来的元数据读写
- 使用 noatime/nodiratime 已能减少访问时间更新;若业务允许,减少无意义的 find/ls -R 等高频元数据操作,或将热点目录布局在更快的存储介质上。
四 仅在必要时清空内核页缓存
- 适用场景:做 I/O 基准测试、验证脏数据是否已落盘、或临时排查“缓存影响”的问题。
- 安全步骤:
- 先同步脏页:
sync - 按需清空:
- 仅清 Page Cache:
echo 1 | sudo tee /proc/sys/vm/drop_caches - 仅清 dentry/inode:
echo 2 | sudo tee /proc/sys/vm/drop_caches - 清 Page Cache + dentry/inode:
echo 3 | sudo tee /proc/sys/vm/drop_caches
- 仅清 Page Cache:
- 先同步脏页:
- 重要提醒:
- 该操作只释放“干净”缓存,不会清理脏页;执行前务必
sync。 - 在生产环境不建议定时或频繁执行,否则会显著增加后续磁盘读 I/O 与延迟。
- 该操作只释放“干净”缓存,不会清理脏页;执行前务必
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu缓存如何减少磁盘I/O
本文地址: https://pptw.com/jishu/761582.html
