首页主机资讯ubuntu缓存如何减少磁盘I/O

ubuntu缓存如何减少磁盘I/O

时间2025-12-02 19:39:04发布访客分类主机资讯浏览552
导读:Ubuntu减少磁盘 I/O 的实用做法 一 先明确目标与风险 Linux 会把空闲内存用于 Page Cache、Buffer、dentry/inode 等,以加速文件与块设备访问;这并不会占用“硬盘空间”,反而能显著减少对磁盘的实际读...

Ubuntu减少磁盘 I/O 的实用做法

一 先明确目标与风险

  • Linux 会把空闲内存用于 Page Cache、Buffer、dentry/inode 等,以加速文件与块设备访问;这并不会占用“硬盘空间”,反而能显著减少对磁盘的实际读写次数。因此,盲目“清空缓存”通常只会让后续访问变慢,仅在特殊场景(如基准测试、脏数据回写验证)才需要临时使用。判断内存压力的正确方式是观察 availableswap 的 si/so,而不是把 buff/cache 当成“内存不够”的信号。

二 减少不必要的磁盘写 I/O

  • 挂载选项降写频
    • /etc/fstab 中为不常改动的目录添加 noatime(必要时用 nodiratime),避免每次访问都更新“上次访问时间”。示例:/dev/sda1 / ext4 noatime,errors=remount-ro 0 1,修改后执行 sudo mount -a 生效。
  • 降低脏页回写压力(权衡数据滞留内存时间)
    • 适度增大后台回写阈值,减少回写次数: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 占用的磁盘空间,避免长期累积写盘)。

三 降低不必要的磁盘读 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
  • 重要提醒:
    • 该操作只释放“干净”缓存,不会清理脏页;执行前务必 sync
    • 在生产环境不建议定时或频繁执行,否则会显著增加后续磁盘读 I/O 与延迟。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu缓存如何减少磁盘I/O
本文地址: https://pptw.com/jishu/761582.html
ubuntu cpustat命令怎样查看CPU核心信息 ubuntu cpustat命令怎样监控CPU实时状态

游客 回复需填写必要信息