温馨提示×

什么是linux缓存

小樊
37
2026-10-09 11:53:20
栏目: 智能运维

在 Linux 系统中,“缓存(cache)”通常指内核用来加速数据访问的一块内存区域,而不是指磁盘上的缓存文件。理解 Linux 缓存,关键要区分几种常见含义:


一、Linux 内存中的缓存(最常见含义)

在 free、top 命令中看到的 buffers 和 cache,属于 页缓存(Page Cache)。

1. Page Cache(页缓存)

  • Linux 会把文件数据读入内存
  • 下次再读同一文件时,直接从内存取,速度极快
  • 包括:
    • 普通文件
    • 目录项
    • mmap 映射的文件

2. Buffer Cache(缓冲区缓存)

  • 主要用于块设备(磁盘)的元数据
  • 如文件系统超级块、inode 表等
  • 现在已基本并入 Page Cache

3. 查看方式

free -h

示例:

              total        used        free      shared  buff/cache   available
Mem:           7.7G        2.1G        3.2G        120M        2.4G        5.0G
  • buff/cache:被缓存占用的内存
  • available:还能被应用使用的内存(包含可回收缓存)

✅ 缓存内存是可以被回收的,不算“真正被用掉”


二、Linux 缓存的特点

✅ 优点

  • 加快文件读写
  • 减少磁盘 I/O
  • 提升系统整体性能

✅ 自动管理

  • 内存紧张时,内核自动回收缓存
  • 不需要人工清理(一般也不建议)

三、常见误区

❌ “缓存太多,内存不够了”

其实:

  • 缓存是可回收内存
  • 真正可用内存看 available

❌ 手动清缓存很必要

echo 3 > /proc/sys/vm/drop_caches
  • 仅用于测试或排障
  • 生产环境不建议频繁使用

四、其他类型的“缓存”

1. DNS 缓存

  • 由 systemd-resolved、nscd 等提供

2. 应用层缓存

  • 如 Redis、Memcached
  • 数据库查询缓存

3. 磁盘写缓存(Writeback)

  • 数据先写内存,再异步写盘
  • 可通过 sync 强制落盘

五、一句话总结

Linux 缓存是内核用空闲内存缓存文件数据,用来加速系统,不占用“真实可用内存”,内存紧张时会自动释放。

如果你愿意,我也可以讲:

  • buff/cache 和 used 的区别
  • 缓存对数据库性能的影响
  • 为什么有时 free 很小但系统很流畅

0 踩